1. 程式人生 > >[semantic segmentation] using Adversarial Networks 論文學習

[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結構

這裡寫圖片描述

參考資源連結: