地址:https://zhuanlan.zhihu.com/p/476692814
在這里和大家分享一下我們被CVPR 2022錄用的工作"ST++: Make Self-training Work Better for Semi-supervised Semantic Segmentation". 在本工作中,我們在半監(jiān)督語義分割領(lǐng)域重新思考了傳統(tǒng)的多階段自訓(xùn)練(self-training)范式,并提出兩點關(guān)鍵的改進策略,使得這種較為古老的訓(xùn)練流程仍能達到當(dāng)前最佳的性能。 此外也非常感謝?@Pascal對我們工作的解讀:Pascal:ST++: 讓 Self-Training 更好地用于半監(jiān)督語義分割 (CVPR'22) ST++: Make Self-training Work Better for Semi-supervised Semantic Segmentation 作者單位:南京大學(xué)、騰訊、東南大學(xué) 文章地址:https://arxiv.org/abs/2106.05095 代碼地址:github.com/LiheYoung/ST-PlusPlus 01
近來較多的半監(jiān)督學(xué)習(xí)工作都是基于端到端的框架來做的,學(xué)生模型不斷學(xué)習(xí)教師模型產(chǎn)生的偽標簽。由于模型不斷被更新,偽標簽的質(zhì)量也會不斷提升,進而持續(xù)促進半監(jiān)督學(xué)習(xí)的性能。其中比較具有代表性的有半監(jiān)督分類中的FixMatch[1],半監(jiān)督語義分割中的CutMix-Seg[2]、PseudoSeg[3]、CPS[4],半監(jiān)督目標檢測中的Unbiased Teacher[5]、Humble Teacher[6]、Soft Teacher[7]等。 盡管這些方法取得了巨大的成功,然而在訓(xùn)練前期,即使手動設(shè)置了置信度閾值,依然存在較多的錯誤偽標簽會誤導(dǎo)學(xué)生模型的學(xué)習(xí)。此外,這種在線學(xué)習(xí)的范式需要在不同epochs對同一張圖像多次打出偽標簽,比較耗時和耗顯存(一個minibatch中需要同時包含有標簽圖像以及強、弱增廣的無標簽圖像)。因此我們希望重新思考一下傳統(tǒng)的多階段self-training范式在半監(jiān)督語義分割中的應(yīng)用前景。self-training流程的優(yōu)點在于,模型在有標簽圖像上充分訓(xùn)練后,對所有無標簽圖像只需要預(yù)測一次偽標簽,且偽標簽質(zhì)量比較有保障。在此基礎(chǔ)上,我們提出了兩種改進方案: 在學(xué)習(xí)無標簽圖像時,在其上施加強數(shù)據(jù)增廣,以增加學(xué)習(xí)的難度,可以學(xué)得額外的信息,并緩解對錯誤偽標簽的過擬合 由易至難、從可靠標簽到不可靠標簽,漸進式地利用無標簽圖像及其偽標簽。其中,我們提出基于第一階段訓(xùn)練過程中偽標簽的穩(wěn)定性來選取可靠的圖像,而非像素。 02
首先介紹一下最簡單的self-training范式,總共分為三個階段: 1.【有監(jiān)督預(yù)訓(xùn)練】在有標簽圖像上完全訓(xùn)練得到一個初始的教師模型 2.【生成偽標簽】用教師模型在所有的無標簽圖像上預(yù)測one-hot偽標簽 3.【重新訓(xùn)練】混合有標簽圖像和無標簽圖像及其偽標簽,在其上重新訓(xùn)練一個學(xué)生模型,用于最終的測試 03
我們的方法分為兩部分,分別是ST和ST++,后者是在前者的基礎(chǔ)上又做了進一步的漸進式選擇策略的改進。 ST: 在重新訓(xùn)練階段,對無標簽圖像進行強數(shù)據(jù)增廣來學(xué)習(xí) 我們提出的ST僅需對傳統(tǒng)的self-training范式做很小的改進,就可以顯著提升其性能。 具體來說,由于第二階段預(yù)測出的偽標簽仍然是包含較多噪聲的,如果在重新訓(xùn)練階段直接對這些原圖以及帶噪聲的標簽進行學(xué)習(xí),很容易過擬合其中的噪聲標簽;此外,由于學(xué)生模型直接學(xué)習(xí)同樣結(jié)構(gòu)的教師模型產(chǎn)生的偽標簽,此過程并沒有引入額外的信息,學(xué)生模型唯一在做的其實只是entropy minimization(因為我們對教師模型的預(yù)測結(jié)果取了one-hot label)。 基于上述兩點動機,我們提出在重新訓(xùn)練階段對無標簽圖像進行強數(shù)據(jù)增廣來學(xué)習(xí)。首先,由于每次無標簽圖像輸入進入模型前都進行了隨機的強數(shù)據(jù)增廣,也就是說盡管是同樣一張圖像,不同epochs見到的輸入也一直在變化,也就沒有固定的輸入-輸出的映射,模型在這種情況下不容易過擬合偽標簽中的噪聲;此外,學(xué)生模型是在強增廣的圖像上學(xué)習(xí)的,可以在教師模型的基礎(chǔ)上學(xué)得更加豐富的表征。 這種設(shè)計使得學(xué)生模型不僅僅是在做entropy minimization,同時由于不同版本的強增廣圖像都受到同樣的偽標簽的監(jiān)督(也就是教師模型生成的固定的one-hot label),此過程也可以看作是在不同的epochs之間對同一張無標簽圖像進行consistency regularization。因此,注入了強增廣操作的self-training范式,也就是我們的ST,同時包含了半監(jiān)督學(xué)習(xí)中兩種主流的做法,即entropy minimization和consistency regularization。 我們在實驗中采用了四種十分基本的強增廣策略,包括colorjitter、blur、grayscale、以及Cutout。事實上前三種增廣策略的組合就已經(jīng)能夠得到足夠好的結(jié)果。 需要注意的是,為了盡可能的減少超參數(shù),以及增加我們方法的普適性,我們沒有根據(jù)模型預(yù)測出的置信度設(shè)置一個閾值來選取高質(zhì)量的偽標簽。并且根據(jù)我們的實驗,這種做法也并沒有在眾多settings上帶來穩(wěn)定的提升。此外,為了盡可能減少訓(xùn)練時間,我們也沒有進一步的迭代打偽標簽并重訓(xùn)練(也就是用重新訓(xùn)練得到的學(xué)生模型重新打偽標簽再訓(xùn)練),但是根據(jù)我們的實驗,這樣做可以進一步提升ST的性能。 下面可以看一下更加詳細的ST偽代碼,流程還是比較直觀的: ST Pseudocode
ST++: 由易至難、從可靠到不可靠,以圖像級別選取無標簽圖像及其偽標簽 在ST的基礎(chǔ)上,為了進一步緩解錯誤的偽標簽帶來的負面影響,我們提出了ST++,由易至難、從可靠偽標簽到不可靠偽標簽,漸進式地利用無標簽圖像;并且不同于一般做法中選取高置信度的像素,ST++根據(jù)第一階段訓(xùn)練過程中偽標簽的穩(wěn)定性來選 取可靠的圖像。 給定有標簽數(shù)據(jù)集? ? ??和無標簽數(shù)據(jù)集? ? ?,ST++首先需要從? ? ??中選取出前 ? ?張最可靠的無標簽圖像及其偽標簽(選取策略后面介紹)構(gòu)成? ? ?,在? ? ??上重新訓(xùn)練得到一個學(xué)生模型? ? ?,此時我們已經(jīng)利用了有標簽圖像和部分較為可靠的圖像及其偽標簽;接著,為了更好地利用剩余的不太可靠的圖像及其偽標簽,即? ? ?,我們利用學(xué)得的? ? ??對? ? ??重新打偽標簽(此處的? ? ??比第一階段僅在? ? ??上學(xué)得的? ? ??質(zhì)量更高),最終在? ? ?上重新訓(xùn)練得到一個最終的學(xué)生模型? ? ?,用于測試過程。 下面描述一下我們對可靠的無標簽圖像的選擇策略。我們在實驗中觀察到,比較簡單的圖像在訓(xùn)練前期就會達到比較高的正確率,且訓(xùn)練后期偽標簽變化很??;相反,對于比較困難的圖像,模型在訓(xùn)練的不同epochs預(yù)測出的偽標簽往往有較大差異。基于此觀察,我們提出通過度量偽標簽在不同epochs的穩(wěn)定性來確定無標簽圖像及其偽標簽的可靠性。為了這種度量策略更加穩(wěn)定,我們是基于不同epochs的整圖偽標簽之間的meanIOU來算的。具體做法是,在第一階段有標簽圖像上的預(yù)訓(xùn)練過程中保存? ?個checkpoints,考慮到往往最后一個checkpoint的質(zhì)量最高,因此對于一張無標簽圖像 ? ?,我們用前?? ? 個checkpoints在?? ? 上預(yù)測出的偽標簽和第?? ? 個checkpoint的預(yù)測結(jié)果算meanIOU,meanIOU越大,說明他們預(yù)測出的偽標簽的重合度越高,也就是偽標簽在訓(xùn)練過程中越穩(wěn)定,其質(zhì)量也越可靠。形式化描述如下: 其中,? ? 衡量了無標簽圖像 ? ??的穩(wěn)定性和可靠性,? ? 表示第?? ? 個checkpoint在 ui 上預(yù)測出的偽標簽。 獲得了所有無標簽圖像的穩(wěn)定性和可靠性指標?? ? 后,我們繼續(xù)基于整圖來進行選取,因為我們認為在語義分割的訓(xùn)練中,整圖能夠提供比零散的像素更加全局的語義信息。 ST++ Pseudocode
04
Comparison with State-of-the-Art Methods 我們在Pascal VOC 2012和Cityscapes這兩個數(shù)據(jù)集的多種settings上驗證了ST和ST++的有效性。 由于2021年之前的半監(jiān)督語義分割工作大多采用的模型結(jié)構(gòu)是DeepLabv2 with ResNet-101,2021年開始很多工作也增加了PSPNet with ResNet-50,DeepLabv3+ with ResNet-50/101的結(jié)果,為了更充分地與更多的工作進行公平對比,我們在Pascal VOC上報告了上述全部的四種模型的結(jié)果。可以看到我們的ST和ST++都取得了state-of-the-art performance。為了更好地展示半監(jiān)督算法的意義,我們也報告了僅利用有標簽圖像的結(jié)果,參見每種模型下的第一行SupOnly結(jié)果,可以看到半監(jiān)督算法對于SupOnly的提升十分明顯。 Pascal VOC 2012上ST和ST++的實驗結(jié)果。有標簽圖像是選取自被擴充后的Pascal VOC數(shù)據(jù)集(總共10582張圖像) Pascal VOC 2012下還有另一種setting,即從原始的高質(zhì)量標注的訓(xùn)練集(1464張圖像)中選取有標簽圖像,我們也進行了相應(yīng)的對比,如下。 Pascal VOC 2012上ST和ST++的實驗結(jié)果。有標簽圖像是選自原始的高質(zhì)量標注的Pascal VOC訓(xùn)練集(1464張圖像) 我們進一步比較了Cityscapes下的實驗結(jié)果。 Cityscapes上ST和ST++的實驗結(jié)果 Ablation Studies ST中強數(shù)據(jù)增廣(Strong Data Augmentation, SDA)的意義 在下表中我們首先給出了最原始的self-training的結(jié)果(第一行),通過第一行與第三行ST結(jié)果的對比,可以看出SDA對于無標簽圖像的作用。為了進一步驗證此提升并非來自于這些增廣策略本身,我們也嘗試將SDA同時加在了有標簽圖像上(第二行),可以看出結(jié)果相較于第三行出現(xiàn)了下降。此結(jié)果說明SDA的作用并非在于其本身,而是為原本在無標簽圖像上的bootstrapping過程引入了額外的信息,以及緩解了對于噪聲偽標簽的過擬合。 強數(shù)據(jù)增廣(Strong Data Augmentation, SDA)的意義 我們整個的SDA包含四種增廣策略:colorjitter、blur、grayscale和Cutout。下圖展示了這四種增廣策略各自的作用,可以看到其中colorjitter的作用相對而言最大,并且前三種樸素的增廣策略的組合就已經(jīng)能夠取得足夠好的結(jié)果(下圖棕色柱,73.1)。 ST++中選取出的可靠樣本和不可靠樣本的偽標簽質(zhì)量對比 為了更好地展示無標簽圖像中的可靠偽標簽和不可靠偽標簽的質(zhì)量差距,下圖展示了ST++選取出的可靠/不可靠集合中圖像的mIOU(紫色和棕色)。很容易看出,在不同的settings下,這兩個集合的mIOU差距都大于10%,這說明了首先利用可靠圖像的必要性。在ST++中,我們用在? ? ?上訓(xùn)練得到的學(xué)生模型? ? ??來給剩下的不可靠集合? ? ??重新賦予偽標簽,下圖的Boosted(粉色)一欄展示了在 ? ??上,? ? ??產(chǎn)生的偽標簽相較于原始的教師模型? ? ??產(chǎn)生的偽標簽的提升。結(jié)合更新了更好偽標簽的? ? ??,最終我們可以在? ? ??上訓(xùn)練得到更好的學(xué)生模型? ? ??。 可靠圖像集合和不可靠圖像集合的偽標簽質(zhì)量差異(紫色和棕色),以及重新給不可靠集合打偽標簽后的提升(粉色) ST++提出根據(jù)可靠/不可靠集合,把原本的重訓(xùn)練過程拆成兩個部分。我們需要進一步驗證其提升是否僅僅來自于兩階段的訓(xùn)練流程,而非對于可靠集合的智能選取。因此,我們隨機從?? ? 中選擇50%的圖像作為第一階段的重訓(xùn)練,訓(xùn)練完成后再給剩下50%的圖像重新賦予偽標簽,最后用完整的 ? ? 和 ? ?訓(xùn)練得到最終的模型,我們將其稱為random two-stage re-training。下表展示了random和我們的selective策略的性能差異,可見ST++的提升并不是來自于兩階段的策略。 驗證ST++的提升并不是來自于兩階段的重訓(xùn)練流程,而是對于可靠圖像的智能選取 ST++中兩階段重訓(xùn)練的performance ST++的 兩階段重訓(xùn)練分別是:1)在? ? ?上訓(xùn)練(Re-train #1);2)給? ? ??重新賦予偽標簽后,在? ? ??上重新訓(xùn)練(Re-train #2)。下圖展示了這兩個階段結(jié)束后各自的性能。 ST++中兩個階段重訓(xùn)練各自的performance,其中1/4,1/8,1/16表示有標簽圖像的不同比例 我們默認選取可靠性得分前50%的圖像作為可靠圖像,剩下的作為不可靠圖像。下表展示了不同的選取比例的影響,可以看到ST++對此處的選擇比例比較魯棒。 在ST++,我們提出基于圖像級別選擇可靠樣本,而非在半監(jiān)督語義分割中通常采用的像素級別樣本[8]。我們認為圖像級別的樣本能夠在語義分割中提供更好的全局語義信息,能夠讓分割模型更加充分的學(xué)習(xí)。為了驗證這一觀點,我們也比較了圖像級別選擇策略和像素級別選擇策略,下表中展示了兩者性能的差異,可以看到圖像級別的選取穩(wěn)定地優(yōu)于像素級別的選取。 圖像級別選擇策略和常規(guī)的像素級別選擇策略的對比 進一步進行迭代式重新訓(xùn)練(iterative re-training)的效果 self-training范式往往可以通過不斷的迭代式的重新訓(xùn)練獲得進一步的性能提升,具體做法就是用重新訓(xùn)練得到的學(xué)生模型再為無標簽圖像賦予一遍偽標簽,并繼續(xù)重新訓(xùn)練。我們也嘗試了ST++能否進一步受益于這種迭代式的重新訓(xùn)練,我們額外增加了一個階段的重訓(xùn)練(下圖Re-train #3),可以看到ST++仍能獲得進一步的提升。 ST++仍能受益于進一步的迭代式重訓(xùn)練(Re-train #3) 05
在本工作中我們調(diào)研了傳統(tǒng)的self-training范式在半監(jiān)督語義分割中的應(yīng)用前景,并提出了兩個關(guān)鍵的改進策略,分別是在無標簽圖像上注入強數(shù)據(jù)增廣和基于圖像級別選擇的漸進式重訓(xùn)練策略。我們發(fā)現(xiàn),結(jié)合了上述改進策略后,傳統(tǒng)的self-traininig范式可以同時享有entropy minimization和consistency regularization的優(yōu)點,并且可以取得優(yōu)于最新的采用端到端訓(xùn)練的方法的結(jié)果。 參考 1.FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence, NeurIPS 2020 2.Semi-supervised semantic segmentation needs strong, varied perturbations, BMVC 2020 3.PseudoSeg: Designing Pseudo Labels for Semantic Segmentation, ICLR 2021 4.Semi-Supervised Semantic Segmentation with Cross Pseudo Supervision, CVPR 2021 5.Unbiased Teacher for Semi-Supervised Object Detection, ICLR 2021 6.Humble Teachers Teach Better Students for Semi-Supervised Object Detection, CVPR 2021 7.End-to-End Semi-Supervised Object Detection with Soft Teacher, ICCV 2021 8.Rethinking Pre-training and Self-training, NeurIPS 2020
猜您喜歡:
一頓午飯外賣,成為CV視覺的前沿弄潮兒!
超110篇!CVPR 2021最全GAN論文匯總梳理!
超100篇!CVPR 2020最全GAN論文梳理匯總!
拆解組新的GAN:解耦表征MixNMatch
StarGAN第2版:多域多樣性圖像生成
附下載 |?《可解釋的機器學(xué)習(xí)》中文版
附下載 |《TensorFlow 2.0 深度學(xué)習(xí)算法實戰(zhàn)》
附下載 |《計算機視覺中的數(shù)學(xué)方法》分享
《基于深度學(xué)習(xí)的表面缺陷檢測方法綜述》
《零樣本圖像分類綜述: 十年進展》
《基于深度神經(jīng)網(wǎng)絡(luò)的少樣本學(xué)習(xí)綜述》