Cycle-GAN論文閱讀筆記


Cycle-GAN論文閱讀筆記

很久之前就看過這篇文章,而且還在上面做了一些實驗,發現確實魯幫性很強,今天重新review這一篇paper。

圖像到圖像的翻譯,是一個比較古老的任務,作者是第一個用cycle-consistent結合gan這種思想來做圖像翻譯,而且效果顯著。

introduction and motivation

paired training data會比較難以獲取,unpaired比較容易獲取,針對這個問題,作者提出了他們的方法。從\(X\) domain到\(Y\) domain會有無數個映射,而且作者在做實驗的過程中,發現模型容易崩潰,而且無論什么樣子的輸入都會導致同一個輸出。這一系列的問題使得需要添加一些其他的目標約束在網絡架構里。一個直觀的想法就是循環一致性,意思是,一個句子從英文翻譯到法文,並且從法文翻譯回英文,得到的英文和原始英文應該是一致的。從數學上來講,如果有一個映射\(G:X\rightarrow Y\),以及另外一個映射\(F:Y\rightarrow X\),\(G\)\(F\)應該是互為inverse的關系。

根據這個出發點 ,作者分別在網絡中添加了\(G\)\(F\),並且添加了循環一致性的loss來使得網絡滿足\(F(G(x))\approx x\)以及\(G(F(y))\approx y\),除此之外,作者還添加了adversarial loss來約束generator。

網絡結構

網絡結構的detail作者並沒有繪制,只是畫了一個流程的示意圖

網絡結構示意圖如上圖所示。作者定義了兩個discriminator,同時也勢必有兩個discriminator

loss term一共包括兩項,一個是adversarial loss一個是cycle consistency loss。其中adversarial loss是衡量生成圖像的分布和目標區域的距離。cycle consistency loss是為了阻止\(F\)\(G\)互相矛盾。

目標函數如下圖

\(D_Y\)是對生成的\(Y\),即\(G(x)\)和真實的\(Y\)進行判別,這個判別其區別與對x進行判別的\(D_X\)。總是,\(D_Y\)的優化方向是使得其能夠准確的判別生成的樣本和fake的樣本,也即loss最小,通過上述loss,能夠看出,使得loss最小即使得\(D_Y(y)\)接近於0,\(D_Y(G(x))\)接近於1.之后的很多gan的變形都是玩變不離其宗。

對於cycle consistency loss,比較粗暴,直接用L1 loss

total的loss如下

1579591309484

1579591331035

實驗設定

作者做實驗,用的圖像是256×256的,並且使用的是70×70的patch gan(實際上是感受野為70×70的discriminator),在真正實驗的時候,作者用least-square GAN替代了原始的gan,因為least-square gan更加的穩定,舉個例子

上面這個式子,\(G\)的優化目標是讓\(D(G(x))\)更加接近與1,而\(D\)的優化目標是讓啊\(D(G(x))\)更加接近與0,同時使得\(D(y)\)接近於1,trade off!!!

作者做實驗用的batch size為1,很多圖像任務里面都是1,以及用的是instance normalization。initial 的learning rate為0.0002,在前100個epoch keep the same learning rate,在后100個epoch,線性變為0.

評價指標

第一個評價指標是AMT perceptual study, 就是根據人眼來直觀評價圖像真假。

第二個評價指標是FCN score來評價“label to photo”這個task。

同時作者在處理分割任務中,也用了一些分割任務中的評價指標。

實驗結果

作者首先和最近的unpaired image2image的方法相比較,注意這種unpaired的圖像在每一個domain是有ground truth的,所以作者可以進行定量的比較。然后作者探討了cycle consistency loss和adversarial loss。最后,作者把他們的方法推廣到了更加一般的沒有gt的圖像翻譯任務上面。

作者的baseline包括pixel2pixel,以及一些其他的方法,來一起compare這些指標。作者的結果能夠達到是sota的結果。

ablation study

同時作者也比較了,如果用Cycle alone,或者是只有一個cycle,試驗結果也不如都添加上好。假設不添加discriminator,只用循環一致性來約束的話,

即只用cycle-alone,結果比較差;只用GAN,不用cycle約束的話,結果也沒那么差,相對於只用cycle約束的話,也會好很多。

如果只加一個forward cycle的話,在label2photo這個任務中,感覺結果會比添加forward cycle 和backward cycle要好,amazing,作者也沒有討論其原因。在photo2label這個任務中有截然不同的結果。

同時作者比較了一下重建的結果

可見重建的結果也是挺好的。

作者在其他任務上,也廣泛的應用了cycle-gan,比如style transfer, 目標物體變形等。但是也有失敗的例子,文中作者就說了不能夠保持物體的幾何形狀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM