天天看點

論文閱讀——《Image-to-Image Translation with Conditional Adversarial Networks》

論文閱讀之 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∗=argGmin​Dmax​LcGAN​(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方向上連接配接起來。

論文閱讀——《Image-to-Image Translation with Conditional Adversarial Networks》

Markovian discriminator (PatchGAN)

除了在判别器裡添加了L1限制,作者還設計了一種稱為patchGAN的判别器結構。這種結構隻懲罰patch範圍内的結構。patchGAN的判别器嘗試去分辨一張圖檔中每個 N ∗ N N*N N∗N patch是真的還是假的。

Experiments

作者在實驗中測試了各種方法的效果,包括添加L1損失與不添加L1損失,使用“U-Net”結構和不使用“U-Net”結構,使用不同數量的patch。這部分就不詳述了。

繼續閱讀