1. Abstract
- 基於深度學習的語義分割有着固有的缺陷:需要大量的數據
- 本文引入self-ensembling,想基於無監督下的領域自適應來解決數據問題,但通過self-ensembling中微調過的人工數據難以縮減語義分割中巨大的領域距離(Domain Gap)
- 爲此,本文提出一個由兩部分組成的框架
- 首先,基於GAN提出一個數據增強方法,能有效促進領域的對齊(Domain Alignment)
- 其次,基於增強後的數據,將self-ensembling運用到分割網絡中以提升模型的能力
2. Introduction
-
語義分割的任務:給圖像中的每個像素點都分類。
-
大量基於深度學習的算法能夠獲得較好的效果,但過於依賴數據。爲避免人工標註的繁瑣和耗時,研究人員利用計算機圖形學得到合成數據及所對應的分割標籤。而合成數據訓練得到的分割模型難以媲美使用真實數據訓練得到的,因爲存在了稱之爲領域遷移(Domain Shift)的分佈不同(Distribution Difference)。
-
Unsupervised domain adaptation通過將標記過的數據集中的知識遷移到未標記過的數據集,來解決Domain Shift的問題。
- 最近的方法多集中在對齊源數據和目標數據中抽取到的特徵。如基於對抗訓練,通過域混餚(Domain Confusion)來最小化領域之間的差異(Domain Discrepancy)。
- 然而,對抗方法也有缺陷,爲了對齊兩個不同領域的全局分佈可能會造成負遷移(Negative Transfer),即將目標特徵對齊到了源特徵中錯誤的語義分類。通俗點說,就是將天空的特徵或者風格,遷移到了馬路上。特別是,數據集中的某個類別比較稀少,更容易產生負遷移。
-
爲解決負遷移,本文引入了self-ensembling。
- self-ensembling由學生網絡和教師網絡組成
- 學生網絡被迫基於老師提供的目標數據,做出協同的預測
- 教師網絡的參數是學生網絡的均值,所以教師在目標數據上做的預測可以看作是學生的僞標籤
- 雖然self-ensembling在圖像分類上有很好的效果,若想用於成功對齊領域,它需要大力調節過的人工增強數據。此外,雖然self-ensembling得到的幾何變化較大的數據能有效用於分類,它並不適合於語義分割中的Domain Shift。
- self-ensembling由學生網絡和教師網絡組成
-
爲改進self-ensembling,本文設計了新的數據增強方法
- 基於GAN,生成能夠保留語義內容的增強圖像。因爲未保留語義內容的圖像,將會破壞分割的性能,由於增強後的圖像和作爲源標籤的圖像在像素上的不匹配。
- 爲解決上述問題,該方法於生成器中加入了語義約束(Semantic Constraint),來保留全局和局部的結構。
- 此外,本文提出了目標導向的生成器,能夠基於目標領域抽取的風格信息來生成圖片。這樣,該方法生成的圖像又能保留語義信息,又能只遷移目標圖像的風格。
-
大多數Image-to-Image Translation都是依賴於不同形式的Cycle-Consistency
- 有兩個限制
- 需要多餘的模塊,比如兩個生成器
- 若是數據不平衡的話,源領域和目標領域的約束過於強烈。也就是說,不管怎麼生成,就那幾種圖像,類似於Model Collapse吧
- 而本文的方法由於它的設計,就不需要考慮Cycle-consistency了
- 有兩個限制
-
整個模型的框架如下圖所示
- 步驟一,給定有標籤的合成數據及無標籤的真實數據,生成帶有標籤的增強數據(我認爲,這裏的標籤就是源標籤)
- 步驟二,作者將關鍵信息寫到了這裏,使用兩個分割網絡作爲教師和學生,以使用Self-ensembling算法。這兩個網絡都使用了合成數據、增強後的數據以及真實數據。在訓練過程中,教師網絡會將知識遷移到學生網絡中。
3. Proposed Method
提升self-ensembling用於語義分割的兼容性的方法是,基於GAN增強後的數據來對齊源領域和目標領域之間的表達,而不是self-ensembling用於分類中的幾何轉變。爲了這個目的,本文設計了以下的模型。
3.1 Target-guided generator
-
TGCF-DA的模型圖如下所示
- 基於假設,圖像表達可被分爲兩部分:內容和圖像,設計了以上結構
- 使用Souce Encoder來抽取源圖像的內容表達
- 再使用Target Encoder來抽取目標圖像的風格表達
- 爲了結合源圖像的內容和目標圖像的風格,使用AdaIN算法
- 基於假設,圖像表達可被分爲兩部分:內容和圖像,設計了以上結構
-
根據上面的設計,生成器G得到的圖像將會在保留源圖像內容的同時,遷移目標圖像的風格。也就是改變源圖像,如GTA5的虛擬風格,變成現實風格。最後,將生成圖像作爲fake data,目標領域作爲real data,輸入判別器。
3.2 Semantic constraint
- 由於沒有使用Cycle-consistency,本文使用Semantic Constriant來約束生成圖像的語義信息。具體的做法如下
- 設定一個預訓練好的分割模型,本文使用的是FCN-8s
- 將生成的圖像輸入得到分割後的掩碼
- 分割後的掩碼和源圖像的標籤做交叉熵
- 這個做法類似於相當於風格遷移中,計算內容損失的做法。
3.3 Target-guided and cycle-free data augmentation
-
本文對於GAN框架的構建如下
-
Discriminator的構建是基於Hpix2pix的,詳見原文中的參考文獻
-
使用LSGAN的損失作爲對抗損失,並基於spectral normalization的方法穩定GAN的訓練
-
-
對抗損失能夠保證G生成的新圖像在視覺上和目標圖像相似。由於分割模型固定了,可以聯合訓練生成器和判別器來優化總損失
-
經過上述損失預訓練後的生成器,將被用來合成增強數據,爲後續的self-ensembling做準備。
3.4 Self-ensembling
-
構建了教師網絡和學生網絡。步驟t中,教師網絡的參數由學生網絡根據下列公式計算得到
-
在訓練的過程中,每個mini-batch都會包含以下數據
- source samples 源樣本
- augmented samples 增強樣本
- target samples 目標樣本
-
源樣本和增強樣本將會被用來計算監督損失,即對於語義分割的交叉熵。這個損失函數能使得學生網絡,對於源數據和增強數據,都產生語義上更加精準的預測。
-
一致性損失是學生網絡和教師網絡生成的預測圖的均方差
這裏的是softmax函數,用來計算預測圖的概率
-
總體的損失如下
這裏的是一致性損失的權重
3.5 Data augmentation for target samples
看到這一塊內容,稍微有些迷糊,特別是作者的第一句話:這裏的對於目標樣本的數據增強和TGCF-DA並不相關,差點就被帶偏了,不知道理解到什麼地方了。不過仔細看了一下後面的內容,得到如下理解
- 這裏對target samples增強是爲了在self-ensembling中計算consistency loss。對於目標樣本的隨機數據增強,是爲了強迫學生網絡針對相同的目標樣本得到不同的預測,以更好的訓練學生和教師網絡。
- 根據前文,常規self-ensembling中的幾何變換對於像素級別的預測任務並無幫助。因此,本文在目標樣本中注入高斯噪聲,並分別餵給學生和教師網絡。此外,對於網絡參數還是用了Dropout。
- 因此,學生網絡在目標樣本有擾動的情況下,還必須得產生和教師網絡一致的預測,這也變相了提升了模型的性能。
4. Experiments
在做實驗之前,作者略微詳細的介紹了用到的數據集如:GTA5,Cityscapes等。對於實驗的配置,作者說的很詳細,建議詳細閱讀。比如TGCF-DA的具體構造,生成器和判別器都是挑了比較好的結構,一起一些超參數的設置。此外,還講了self-ensembling中,對於分割網絡的選擇,選擇哪一層計算損失等。
4.1 Experimental results
-
作者將自己的方法與CycleGAN,MCD,DCAN等一堆方法進行比較。該實驗首先在GTA5或者SYNTHIA數據集上,訓練分割網絡,並在Cityscapes的驗證集上驗證。實驗得結果如下表所示
- 表中的Self-Ensembling,代表着由源數據和目標數據(未加入增強數據)訓練得到的分割網絡的性能
- 表中的TGCF-DA表明由源數據、目標數據、TGCF-DA生成的增強數據,共同訓練的分割網絡
- 表中的**Ours(TGCF-DA + SE)**表明結合了TGCF-DA和Self-Enembling方法,得到的分割網絡
- 表中的mIoU*代表的是,13個常見類別的mIoU,因爲數據集中有些類別出現次數不多。但具體是哪13個類並沒有講,可能會在作者提供的附件裏
- 表中的Source Only聲明瞭只在源數據集上訓練的分割模型的效果
- 表中的Target Only聲明瞭在監督設定下訓練的分割模型的效果
-
作爲剛接觸Domain Adaption的小白,對於這個實驗一直耿耿於懷。首先是對於表中的Baseline(Source Only)的不理解,其次是對Target Only的不瞭解。經反覆思考後,理解如下
-
**Baseline(Source Only)**既然都說了是Source Only,而且文中又把增強後的數據叫做Augmented Data。對應上面的表格,Baseline應該指的就是GTA5和SYNTHIA中的原始訓練集,訓練得到的分割模型,那效果肯定差。
-
接下來一系列的方法,CycleGAN,MCD,DCAN等,應該都是使用進行Domain Shift後的數據配合原始的mask標籤,來訓練分割網絡,那爲什麼效果會差呢?根據文中的描述,原因有二
- 首先是,經過Domain Shift圖像的內容結構可能被破壞了,導致原始的mask標籤不匹配,從而產生語義上的損失。如,車子經過domain shift之後形狀變了,但對應的mask掩碼標籤卻沒變,那效果肯定差。
- 其次是,負遷移造成的影響,有些類別過於稀疏,在Domain Shift的時候導致轉換有誤,如,前面的例子,將馬路的知識遷移到了天空上。
-
然後就是純Self-Ensembling方法了,效果有一定提升,但是沒本文方法提升的多。但作者在前文就指出原始的Self-Ensembling適用於分類網絡,但卻不太適用於分割網絡。我理解是:由於Self-Ensembling是通過形變原始數據得到增強數據,來提升分類模型的性能;而在分割網絡中,形變原始數據會導致其和mask標籤不匹配,破壞了內容結構,所以效果變差。
-
最後就是文中提到的兩個方法
-
先是隻使用了TGCF-DA,效果提升一般,和已有方法區別不大。這說明,拋棄Cycle Consistency,理想化的將圖像分爲content和style,並通過AdaIN方法進行結合等一系列操作,並沒有達到作者預期的效果。我覺得作者可能一開始只提出了這個方法,做了實驗之後發現效果居然沒有好太多,再考慮將Self-ensembling的方法加入來提升網絡的性能。不過,這個方法還是很有創意,巧妙地將任意風格遷移和GAN結合在了一起,值得我思考。
-
然後就是TGCF-DA + Self-ensembling,效果簡直超神,順利畢業。原理就是,通過TGCF-DA預訓練模型生成增強數據,然後配合學生、老師網絡進行訓練,最後得到一個更好的分割模型。如下圖
-
-
4.2 Ablation studies
-
首先,做了Self-Ensembling的消融實驗,如下圖
- 在上一實驗的表格中,就發現純Self-Ensembling效果很差
- 這就說明了,主要的功勞並不在Self-Ensembling的應用上,而是TGCF-DA + Self-Ensembling上
-
其次,做了TGCF-DA的消融實驗
- 在上一實驗表格中,發現TGCF-DA能有效提升分割模型的效果。
- 其次,通過圖示風格模型的mIOU,發現純Self-Ensembling在第8個epoch就達到了極大值,繼續訓練效果變差,而TGCF-DA + Self-Ensembling效果持續上升,說明二者結合纔是王道。也從側面說明了TGCF-DA的重要性
-
**在消融實驗中,作者想表明TGCF-DA + Self-Ensembling結合的重要性,並將主要功勞放在TGCF-DA上。但正如我前文所說,TGCF-DA的效果和其他方法相差不多,那是否將其他方法和Self-Ensembling結合,也會得到更好的效果呢?**不過,這也是我雞蛋裏挑骨頭了,本文主要的貢獻已經很多了,就比如TGCF-DA + Self-Ensembling結合訓分割模型,提升性能,也是本文的賣點。
5. Analysis
在這塊內容,作者可視化了幾個模塊的結果,並進行進一步的分析。
5.1 Visualizaton
-
首先是對於Self-Ensembling中間結果的可視化,如下圖
- 圖中表明,教師網絡能夠很好的指導學生網絡進行訓練。
- 此外,根據熱力圖可以發現,consistency loss在訓練中會逐漸關注到物體的輪廓,從而微調輪廓提升預測的效果。
-
其次是,可視化自己的增強數據
- 根據作者的描述,大多數方法都擾亂了物體的輪廓
- 甚至,有的方法發生了“負遷移”,就是將天空遷移到了馬路上,但作者在這裏沒提“負遷移”,提了一個叫“spills over”的概念,我思索一下就是“負遷移”。
- 從而,得出自己的方法計算得快,在視覺程度上效果還好。
5.2 Analysis of self-ensembling with per-class IoUs
-
爲了更好的理解self-ensembling,作者比較了在使用self-ensembling下,不同類別精度的提升情況,如下圖
-
可以看到,每個類別提升的程度不同。作者人爲原因是各個類別數據的不平衡。數據越多的類,提升的效果也越明顯。在Self-ensembling中,這個效果會越明顯。因爲學生網絡持續學習到教師網絡的預測,那麼將會不斷的在稀少類別上做出錯誤的預測。這也印證了作者說的:教師網絡的預測是學生網絡的僞標籤。
-
這一塊實驗個人感覺精華就是:類別下擁有的數據越多,提升性能越大
6. Conclusion
- 作者在文章的結尾,還解釋了各種超參數的設計和原因,若是對文章感興趣的朋友可以自行閱讀。
- 那麼,我在看完這篇文章後,總結如下
- Domain Adaption可以通過遷移真實數據的知識到虛擬數據中,獲得增強後的數據,以緩解基於深度學習的語義分割任務中,對於大量標註數據的需求。
- 但是,現有的Domain Adaption方法有以下問題
- 生成的增強圖像內容信息損失,如結構紊亂,和源數據的標籤不匹配了
- 生成的增強圖像發生了“負遷移”,導致知識遷移的位置不正確,如“天空”遷移到“馬路”上
- 現有的Domain Shift方法大多基於Cycle-consistency,參數多耗時耗力
- 故本文提出了基於GAN的數據增強方法TGCF-DA
- 兩個Encoder,一個抽取源數據的內容,另一個抽取目標數據的風格
- 抽取到的內容和風格通過AdaIN結合在一起構成Generator,生成fake圖像
- fake圖像,和目標數據集中的圖像作爲Discriminator的輸入,更新Generator
- 但僅用TGCF-DA生成的增強數據訓練分割網絡和其他的方法效果差不多,故本文又引入了Self-ensembling來訓練分割網絡。稍微不同的是,原始的Self-ensembling改變圖像的形狀,但本文是給圖像注入高斯噪音。因爲改變幾何形狀會破壞圖像和mask標籤的匹配性
- 最後,TGCF-DA + Self-ensembling的結合,在實驗上取得了令人矚目的效果
- 我認爲本文的亮點如下
- TGCF-DA網絡的構造,結合了GAN+任意風格遷移,很新穎
- TGCF-DA + Self-ensembling,說白了就是將Domain Shit方法和Self-ensembling方法結合在一起。
- 我認爲本文未解釋清楚的就是,沒有做實驗證明, 其他的Domain Shift方法和Self-ensembling結合在一起,是否也會得到很好的效果
最後,感謝本文作者的貢獻,respect! 本文的github.io版請走傳送門。
注:本文爲作者原創,轉載需註明出處!