[semantic segmentation] using Adversarial Networks 論文學習
論文地址:
Semantic Segmentation using Adversarial Networks NIPS 2016
https://arxiv.org/abs/1611.08408
1. 網路結構
這篇論文是首次將GAN思想用於semantic segmentation.
在GAN中,有生成器和判別器,生成器生成fake樣本然後判別器進行鑑別,隨著訓練的進行,生成器的fake樣本越接近與資料真實分佈,判別器也越難分辨真偽。
將GAN用於分割,實際上,基本的分割網路(FCN, DeepLab, PSPNet……)就是GAN中的生成器。換句話說,GAN用於分割不需要另外再構造一個生成網路,傳統分割網路就是生成網路。然後在生成網路之後加一個判別網路結構,如圖所示:
左邊Segmentor就是傳統的CNN-based分割網路,Convnet中可以看到有convolution和deconvolution過程;右邊Adversarial network是GAN中的判別器,最後用sigmoid activation進行二分類。
Segmentor這個部分會有兩種訓練圖片輸入到右邊的Adversarial network中:
組合1:原始訓練圖片+ground truth, 這時候判別器判別為 1 標籤;
組合2:原始訓練圖片+Segmentor分割結果, 這時候判別器判別為0標籤。
然後訓練過程就是經典的博弈思想,相互提高網路的ability, 提高分割精度,提高鑑別能力。
2. 對抗訓練
論文提出了混合損失函式,講cross entropy和GAN的損失結合起來了
對抗訓練分成兩個步驟迭代,訓練思想與EM演算法有點像,需要找到兩個引數最優相互調整,先固定一個引數,調整另一個引數,再迴圈迭代。
步驟1:訓練對抗模型
相當於訓練GAN辨別真偽的能力
步驟2:訓練分割模型
這時候,(2)式是(1)總loss中的對抗網路部分,所以在訓練分割模型的時候必須加上每個pixel的相互熵損失,也就是(1)中第一項,但是同時分割模型需要對抗網路的反饋,需要朝哪個方向訓練作為訓練方向
可以看到(3)式中的正則化項就是來自於(2)中的第二項,這也是論文中提到的引數共享的思想。
3. 實驗結果分析
論文用了 Stanford background 和 Pascal VOC 2012 資料集
在Stanford的實驗結果比較好,可能是因為資料集也小,但在Pascal的效果不明顯,精度和原模型差異不大~
Stanford結構
Pascal結構
參考資源連結: