論文閱讀之 Image-to-Image Translation with Conditional Adversarial Networks
Introduction
這篇論文主要講了如何将conditional GANs運用到Image-to-Image任務中,并且講了如何設計網絡來取得很好的效果。
這篇文章的main contributions主要有兩點:
- 對于各種不同的問題(論文指的應該是Image-to-Image任務)conditional GANs都能給出比較好的結果;
- 論文提出了一種簡單的網絡架構能夠得到比較好的結果,同時論文中分析了幾種結構的影響。
Related work
Structured losses for image modeling
Image-to-Image轉換問題常常被當作是逐像素的分類或者是回歸問題,而這些構想的輸出往往沒有将結構考慮在内,輸出的像素被當做是與輸入圖檔的其他像素條件無關的。但是GAN卻能學習到結構損失(structures loss)。
Conditional GANs
作者在這篇論文中使用了Conditional GANs,但是在結構上與之前的工作不同。在生成器中作者使用了“U-Net”-based的結構,在判别器中使用了convolutional “PatchGAN”分類器,這種分類器隻是懲罰images patches範圍内的結構損失。
Method
Objective:
conditional GAN的優化目标可以用以下式子表達:
L c G A N ( G , D ) = E x , y [ log ( D ( x , y ) ) ] + E x , z [ log ( 1 − D ( x , G ( x , z ) ) ) ] \mathcal{L}_{cGAN}(G,D)=\mathbb{E}_{x,y}[\log(D(x,y))]+\mathbb{E}_{x,z}[\log{(1-D(x,G(x,z)))}] LcGAN(G,D)=Ex,y[log(D(x,y))]+Ex,z[log(1−D(x,G(x,z)))]
為了驗證條件對于判别器的重要性,作者也設計了判别器沒有使用的條件的優化目标:
L c G A N ( G , D ) = E y [ log ( D ( y ) ) ] + E x , z [ log ( 1 − D ( G ( x , z ) ) ) ] \mathcal{L}_{cGAN}(G,D)=\mathbb{E}_{y}[\log(D(y))]+\mathbb{E}_{x,z}[\log{(1-D(G(x,z)))}] LcGAN(G,D)=Ey[log(D(y))]+Ex,z[log(1−D(G(x,z)))]
有之前的研究表明将GAN的優化目标和一些更加傳統的優化目标(如L2距離)混在一起是有好處的。這樣判别器的任務沒有改變,但是生成器不僅要騙過判别器,二而且要讓輸出圖形與真實圖像的L2距離盡可能的接近。在論文中作者使用的是L1距離而不是L2距離,因為使用L1距離能讓生成的圖像更清晰:
L L 1 ( G ) = E x , y , z [ ∣ ∣ y − G ( x , z ) ∣ ∣ ] \mathcal{L}_{L1}(G)=\mathbb{E}_{x,y,z}[||y-G(x,z)||] LL1(G)=Ex,y,z[∣∣y−G(x,z)∣∣]
是以最終的優化目标為:
G ∗ = arg min G max D L c G A N ( G , D ) + λ L L 1 ( G ) G^*=\arg\min_G\max_D\mathcal{L}_{cGAN}(G,D)+\lambda\mathcal{L}_{L1}(G) G∗=argGminDmaxLcGAN(G,D)+λLL1(G)
沒有 z z z,網絡仍然可以學習到從 x x x到 y y y的映射,但會産生确定性的輸出,是以無法比對 δ \delta δ函數以外的任何分布。之前的conditional GAN已經意識到了這一點,是以除了 x x x還提供了高斯噪聲 z z z作為生成器的輸入。在最初的實驗中作者發現這種政策并不是很有效。是以,作者在在最終的模型中通過Dropout的形式來提供噪聲,Dropout在訓練和測試的時候都被應用到了生成器的某些層中。盡管添加了Dropout噪聲,作者發現他們的網絡的輸出還是隻有很小的随機性。
Network architecture
Generator with skips
很多之前的image-to-image任務使用的大都是encoder-decoder這種形式的網絡。這種網絡都是輸入經過一系列的下采樣,直到到達一個bottleneck層,然後再經過一些列的上采樣,最終得到輸出圖像。但是這樣的網絡要求得到的所有資訊都通過所有的層,這樣就會導緻得到的資訊丢失了低層的一些資訊,比如邊界的位置等。而這些資訊在image-to-image任務中試很重要的。
為了找到一種為生成器提供丢失資訊的方法,作者添加了skip connection,并将這種網絡稱為“U-Net”。具體的實作是作者在第 i i i層和第 n − i n-i n−i層之間添加了skip connection, n n n是網絡層數的總和。每個skip connection就是簡單把第 i i i層和第 n − i n-i n−i層在channel方向上連接配接起來。
Markovian discriminator (PatchGAN)
除了在判别器裡添加了L1限制,作者還設計了一種稱為patchGAN的判别器結構。這種結構隻懲罰patch範圍内的結構。patchGAN的判别器嘗試去分辨一張圖檔中每個 N ∗ N N*N N∗N patch是真的還是假的。
Experiments
作者在實驗中測試了各種方法的效果,包括添加L1損失與不添加L1損失,使用“U-Net”結構和不使用“U-Net”結構,使用不同數量的patch。這部分就不詳述了。