1. 程式人生 > 實用技巧 >《AdaptSegNet:Learning to Adapt Structured Output Space for Semantic Segmentation》論文筆記

《AdaptSegNet:Learning to Adapt Structured Output Space for Semantic Segmentation》論文筆記

參考程式碼:AdaptSegNet

1. 概述

導讀:這篇文章著力於解決模型未見過資料的適應性,一般來講模型對於與訓練集中資料類似的資料表現較好,但是對於未知場景的資料就表現較差了,這也是domain-adaptation需要解決的問題。這篇文章在分割任務下進行了研究,提出在output space(分割softmax輸出)上使用GAN網路去擬合兩種資料(合成數據與真實資料)分佈,此外還提出使用多層GAN監督的形式優化特徵的分佈。

之前的一些domain adaptation的工作是在feature層次上進行的,但是在分割任務中就顯得不是很適合了,這是由於分割任務中的特徵編碼了高維度的形狀/紋理等資訊,因而相當複雜,不易adapt。文章通過觀察已知資料和未知資料的特點,觀察到兩種資料在分割結果上更加具有視覺上的一致性,因而在網路的輸出(output space)上進行domain adaptation。下圖表示的就是這種空間下的相似性:

在這裡插入圖片描述
文中將整個網路劃分成兩個部分:分割網路組成的生成器和判別網路。並提出了兩個分佈擬合策略:

  • 1)使用分割輸出(softmax概率圖)的結果去擬合兩個資料的分佈;
  • 2)使用多層資料(在多個特徵上得到softmax output space)之後再使用GAN去拉近兩個分佈;

2. 方法設計

2.1 網路結構

文章的網路結構見下圖所示:
在這裡插入圖片描述
在上圖中可以看到文章的網路由兩部分組成:分割網路構成的生成器 G G G與判別器 D i D_i Di,輸入的真實影象與合成影象是 I t , I s ∈ R ( H ∗ W ∗ C ) I_t,I_s\in R^{(H*W*C)} It,IsR(HW

C),之後得到兩個影象的softmax分割概率輸出 P t , P s P_t,P_s Pt,Ps,之後將這兩個概率圖輸入到判別器網路 D i D_i Di拉近這兩個資料的分佈。

2.2 單層GAN結構

判別器的訓練:
通過生成器得到的概率圖為 P t , P s P_t,P_s Pt,Ps,其過程為 P = G ( I ) ∈ R ( H ∗ W ∗ C ) P=G(I)\in R^{(H*W*C)} P=G(I)R(HWC),那麼擬合這兩個分佈的GAN損失可以描述為:
L d ( P s , P t ) = − ∑ h , w l o g ( D ( P t ) ) + l o g ( D ( P s ) ) L_d(P_s,P_t)=-\sum_{h,w}log(D(P_t))+log(D(P_s))

Ld(Ps,Pt)=h,wlog(D(Pt))+log(D(Ps))

生成器的訓練:
此外,還存在合成數據的分割損失:
L s e g ( I s ) = − ∑ h , w ∑ c ∈ C Y s ( h , w , c ) l o g ( P s ( h , w , c ) ) L_{seg}(I_s)=-\sum_{h,w}\sum_{c\in C}Y_s^{(h,w,c)}log(P_s^{(h,w,c)}) Lseg(Is)=h,wcCYs(h,w,c)log(Ps(h,w,c))
再加上真實資料在判別網路下的損失:
L a d v ( I t ) = − ∑ h , w l o g ( D ( P t ) ) L_{adv}(I_t)=-\sum_{h,w}log(D(P_t)) Ladv(It)=h,wlog(D(Pt))

2.3 多層GAN結構

這裡的多層是在單層分割輸出基礎上使用多層特徵進行分割,之後再在這些分割結果上進行與單層結構類似的損失計算,因而這裡的損失函式可以描述為:
L I s , I t = ∑ i λ s e g i L s e g i ( I s ) + λ a d v i L a d v i ( I t ) L_{I_s,I_t}=\sum_i\lambda_{seg}^iL_{seg}^i(I_s)+\lambda_{adv}^iL_{adv}^i(I_t) LIs,It=iλsegiLsegi(Is)+λadviLadvi(It)
整體的優化過程為:
max ⁡ D min ⁡ G L ( I s , I t ) \max_D\min_GL(I_s,I_t) DmaxGminL(Is,It)

2.4 損失函式

文章的損失函式由分割損失與GAN損失兩部分組成,可以其使用的組成形式為:
L ( I s , I t ) = L s e g ( I s ) + λ a d v L a d v ( I t ) L(I_s,I_t)=L_{seg}(I_s)+\lambda_{adv}L_{adv}(I_t) L(Is,It)=Lseg(Is)+λadvLadv(It)

3. 實驗結果

GTA5-CityScapes:
在這裡插入圖片描述
SYNTHIA-CityScapes
在這裡插入圖片描述