CVPR 2022|U2PL:使用不可靠偽標(biāo)簽的半監(jiān)督語義分割
本文轉(zhuǎn)自商湯學(xué)術(shù)
導(dǎo)讀
半監(jiān)督任務(wù)的關(guān)鍵在于充分利用無標(biāo)簽數(shù)據(jù),商湯科技聯(lián)合上海交通大學(xué)、香港中文大學(xué),基于「 Every Pixel Matters」的理念,有效利用了包括不可靠樣本在內(nèi)的全部無標(biāo)簽數(shù)據(jù),大幅提升了算法精度。目前 U2PL 已被 CVPR 2022 接收,相關(guān)代碼已開源,有任何問題歡迎在 GitHub 提出。
論文標(biāo)題:Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels
01Self-training: 樣本篩選導(dǎo)致訓(xùn)練不充分
半監(jiān)督學(xué)習(xí)的核心問題在于有效利用無標(biāo)注樣本,作為有標(biāo)簽樣本的補(bǔ)充,以提升模型性能。
經(jīng)典的 self-training 方法大多遵循著 supervised learning → pseudo labeling → re-training 的基本流程,但學(xué)生網(wǎng)絡(luò)會從不正確的偽標(biāo)簽中學(xué)習(xí)到錯誤的信息,因而存在 performance degradation 的問題。
常規(guī)作法是通過樣本篩選的方式只留下高置信度預(yù)測結(jié)果,但這會將大量的無標(biāo)簽數(shù)據(jù)排除在訓(xùn)練過程外,導(dǎo)致模型訓(xùn)練不充分。此外,如果模型不能較好地預(yù)測某些 hard class,那么就很難為該類別的無標(biāo)簽像素分配準(zhǔn)確的偽標(biāo)簽,從而進(jìn)入惡性循環(huán)。
我們認(rèn)為「 Every Pixel Matters」,即使是低質(zhì)量偽標(biāo)簽也應(yīng)當(dāng)被合理利用,過往的方法并沒有充分挖掘它們的價值。
02Motivation: Every Pixel Matters
具體來說,預(yù)測結(jié)果的可靠與否,我們可以通過熵 (per-pixel entropy) 來衡量,低熵表示預(yù)測結(jié)果可靠,高熵表示預(yù)測結(jié)果不可靠。我們通過 Figure 2 來觀察一個具體的例子,F(xiàn)igure 2(a) 是一張蒙有 entropy map 的無標(biāo)簽圖片,高熵的不可靠像素很難被打上一個確定的偽標(biāo)簽,因此不參與到 re-training 過程,在 Figure 2(b) 中我們以白色表示。Figure 2. Illustration on unreliable pseudo-labels.我們分別選擇了一個可靠的和不可靠的預(yù)測結(jié)果,在 Figure 2(c) 和 Figure 2(d) 中將它們的 category-wise probability 以柱狀圖的形式畫出。黃色十字叉所表示的像素在 person 類上的預(yù)測概率接近于 1,對于這個預(yù)測結(jié)果模型非常確信,低熵的該像素點(diǎn)是典型的 reliable prediction。而白色十字叉所表示的像素點(diǎn)在 motorbike 和 person 兩個類別上都具有不低的預(yù)測概率且在數(shù)值上較為接近,模型無法給出一個確定的預(yù)測結(jié)果,符合我們定義的 unralibale prediction。對于白色十字叉所表示的像素點(diǎn),雖然模型并不確信它具體屬于哪一個類別,但模型在 car 和 train 這兩個類別上表現(xiàn)出極低的預(yù)測概率,顯然很確信不屬于這些類別。
因而,我們想到即使是不可靠的預(yù)測結(jié)果,雖然無法打上確定的偽標(biāo)簽,但仍可以作為部分類別的負(fù)樣本,從而參與到模型的訓(xùn)練,從而讓所有的無標(biāo)簽樣本都能在訓(xùn)練過程中發(fā)揮作用。
03Method
● OverviewFigure 3. An overview of our proposed U2PL method網(wǎng)絡(luò)結(jié)構(gòu)上,U2PL 采用 self-training 技術(shù)路線中常見的 momentum teahcer 結(jié)構(gòu),由 teacher 和 student 兩個結(jié)構(gòu)完全相同的網(wǎng)絡(luò)組成,teacher 通過 EMA 的形式接受來自 student 的參數(shù)更新。單個網(wǎng)絡(luò)的具體組成參考的是 ReCo (ICLR'22)[1],包括三個部分: encoder , decoder , 表征頭 。損失函數(shù)優(yōu)化上,有標(biāo)簽數(shù)據(jù)直接基于標(biāo)準(zhǔn)的交叉熵?fù)p失函數(shù) 進(jìn)行優(yōu)化。無標(biāo)簽數(shù)據(jù)則先靠 teacher 給出預(yù)測結(jié)果,然后根據(jù) pixel-level entropy 將預(yù)測結(jié)果分成 reliable pixels 和 unreliable pixels 兩大部分 (分流的過程在 Figure 2 有所體現(xiàn)),最后分別基于 和 進(jìn)行優(yōu)化。
如上三個部分構(gòu)成了 U2PL 全部的損失函數(shù),熟悉 self-training 的話就只需要關(guān)注對比學(xué)習(xí) 部分,是經(jīng)典的 InfoNCE Loss[2],細(xì)節(jié)會在后續(xù)具體討論。● Pseudo-Labeling本節(jié)主要探討無標(biāo)簽樣本中可靠預(yù)測結(jié)果的利用方式,即損失函數(shù)中的 部分。我們通過熵:
對預(yù)測結(jié)果的可靠性進(jìn)行衡量,將最可靠的部分篩選出來,再通過常規(guī)方式打上偽標(biāo)簽:
隨著訓(xùn)練過程的推進(jìn),我們認(rèn)為模型的性能在不斷攀升,不可靠預(yù)測結(jié)果的比例相適應(yīng)地也在不斷下降,因此在不同的訓(xùn)練時刻我們對可靠部分的定義是不斷變化的,這里我們簡單采用了線性變化策略,并未作過多探索:
需要注意的是,由于并非所有的無標(biāo)簽像素都會參與這部分的計(jì)算,因此需要計(jì)算一個權(quán)重對這部分損失進(jìn)行調(diào)節(jié)。● Using Unreliable Pseudo-Labes本節(jié)主要探討無標(biāo)簽樣本中不可靠預(yù)測結(jié)果的利用方式,即損失函數(shù)中的 部分。U2PL 以對比學(xué)習(xí)為例介紹了如何將不可靠偽標(biāo)簽用于提升模型精度。既然是對比學(xué)習(xí),那不可避免的問題就是討論如何構(gòu)建正負(fù)樣本對。接下來的有關(guān)對比學(xué)習(xí)內(nèi)容的實(shí)現(xiàn)細(xì)節(jié)大量參考了 ReCo[1],因此如果要深入了解 U2PL,建議可以先看下這篇論文。首先是 anchor pixels (queries) ,我們會給訓(xùn)練過程中出現(xiàn)在 mini-batch 中的每一個類別都采樣一系列的 anchor pixel 用于對比學(xué)習(xí)。然后是構(gòu)建 anchor pixel 的 positive sample,我們會給每一個類別都算一個特征中心,同一類的 anchor pixel 會 share 共同的特征中心作為 postive sample。具體地,我們先從 mini-batch 分類別篩選出可用于計(jì)算特征中心的像素點(diǎn),對于有標(biāo)簽樣本和無標(biāo)簽樣本,篩選的標(biāo)準(zhǔn)是一致的,就是該樣本在真值標(biāo)簽類別或偽標(biāo)簽類別上的預(yù)測概率大于一個閾值,對篩選出來的像素點(diǎn)的表征 的集合 求一個均值作為各類別的特征中心 。這里可以參見如下公式:
最后是構(gòu)建 anchor pixel 的 negative sampe,同樣的也需要分成有標(biāo)簽樣本和無標(biāo)簽樣本兩個部分去討論。對于有標(biāo)簽樣本,我們明確知道其所屬的類別,因此除真值標(biāo)簽外的所有類別都可以作為該像素的負(fù)樣本類別;而對于無標(biāo)簽樣本,由于偽標(biāo)簽可能存在錯誤,因此我們并不完全卻行確信標(biāo)簽的正確性,因而我們需要將預(yù)測概率最高的幾個類別過濾掉,將該像素認(rèn)作為剩下幾個類別的負(fù)樣本。這部分對應(yīng)的是論文中公式 13-16,但說實(shí)話這一段內(nèi)容用公式去描述還是比較晦澀的。
Algorithm 1: Using Unreliable Pseudo-Labels由于數(shù)據(jù)集中存在長尾問題,如果只使用一個 batch 的樣本作為對比學(xué)習(xí)的負(fù)樣本可能會非常受限,因此我們采用 MemoryBank 來維護(hù)一個類別相關(guān)的負(fù)樣本庫,存入的是由 teacher 生成的斷梯度特征,以先進(jìn)先出的隊(duì)列結(jié)構(gòu)維護(hù)。
04Comparison with Existing Alternatives
本文所有的實(shí)驗(yàn)結(jié)果均是基于 ResNet-101 + Deeplab v3+ 的網(wǎng)絡(luò)結(jié)構(gòu)完成的,所采用的的數(shù)據(jù)集構(gòu)成和評估方式請參見論文描述。我們在 Classic VOC, Blender VOC, Cityscapes 三種數(shù)據(jù)集上均和現(xiàn)存方法進(jìn)行了對比,在全部兩個 PASCAL VOC 數(shù)據(jù)集上我們均取得了最佳精度。在 Cityscapes 數(shù)據(jù)集上,由于我們沒能很好地解決長尾問題,落后于致力解決類別不平衡問題的 AEL (NeurIPS'21)[3],但我們將 U2PL 疊加在 AEL 上能夠取得超越 AEL 的精度,也側(cè)面證明了 U2PL 的通用性。值得一提的是,U2PL 在有標(biāo)簽數(shù)據(jù)較少的劃分下,精度表現(xiàn)尤為優(yōu)異。
05Ablation Studies
● Effectiveness of Using Unreliable Pseudo-Labels
我們在 PSACAL VOC 和 CItyscapes 等多個數(shù)據(jù)集的多個劃分上驗(yàn)證了使用不可靠偽標(biāo)簽的價值。● Alternative of Contrastive Learning我們增加了通過二分類去利用不可靠樣本的對比實(shí)驗(yàn),證明利用低質(zhì)量偽標(biāo)簽并不是只能通過對比學(xué)習(xí)去實(shí)現(xiàn),只要利用好低質(zhì)量樣本,即使是二分類方法也能取得不錯的精度提升。
06附錄
● U2PL 與 negative learning 的區(qū)別這里需要著重強(qiáng)調(diào)下我們的工作和 negative learning 的區(qū)別, negative learning 選用的負(fù)樣本依舊是高置信度的可靠樣本[4],相比之下,我們則提倡充分利用不可靠樣本而不是把它們過濾掉。比如說預(yù)測結(jié)果 由于其不確定性會被 negative learning 方法丟棄,但在 U2PL 中卻可以被作為多個 unlikely class 的負(fù)樣本,實(shí)驗(yàn)結(jié)果也發(fā)現(xiàn) negative learning 方法的精度不如 U2PL。● U2PL 技術(shù)藍(lán)圖這里貼出技術(shù)藍(lán)圖,便于大家更好地理解論文的核心 story 和實(shí)驗(yàn)設(shè)計(jì):
U2PL 技術(shù)藍(lán)圖
傳送門
U2PL 的相關(guān)代碼目前已經(jīng)開源,歡迎各位同學(xué)使用和交流。
論文地址
https://haochen-wang409.github.io/U2PL/resources/U2PL_CVPR_2022.pdf
項(xiàng)目地址
https://haochen-wang409.github.io/U2PL/
代碼地址
https://github.com/Haochen-Wang409/U2PL
References
[1] Bootstrapping Semantic Segmentation with Regional Contrast https://arxiv.org/abs/2104.04465
[2] Representation Learning with Contrastive Predictive Coding https://arxiv.org/abs/1807.03748
[3] Semi-Supervised Semantic Segmentation via Adaptive Equalization Learning https://arxiv.org/abs/2110.05474
[4] In Defense of Pseudo-Labeling: An Uncertainty-Aware Pseudo-label Selection Framework for Semi-Supervised Learning https://openreview.net/pdf/c979bcaed90f2b14dbf27b5e90fdbb74407f161b.pdf
本文僅做學(xué)術(shù)分享,如有侵權(quán),請聯(lián)系刪文。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。