GAN做影象翻譯的一點總結

PaperWeekly發表於2018-01-29

如今,隨著 GAN 在生成清晰影象(sharp images)上的成功,GAN 在影象翻譯任務上的方法越來越多,pix2pix,CycleGAN,UNIT,DTN,FaderNets,DistanceGAN,GeneGAN,pix2pixHD,StarGAN 等等。現在的方法太多了,影象質量也從 64x64 解析度一路做到了 1024x2048。

我關注這個方向已經超過半年了,在這裡總結一點小經驗:

關於生成高質量影象

這裡不談怎麼調參能夠得到更好的結果,這裡談兩個不用經過調參就能獲得不錯效果的方法。

有三個可以借鑑的經驗,其一來自於 pix2pixHD,採用 multi-scale 的 Discriminator 和 coarse2fine 的 Generator 能夠有效幫助提升生成的質量

所謂 multi-scale 的 Discriminator 是指多個 D,分別判別不同解析度的真假影象。比如採用 3 個 scale 的判別器,分別判別 256x256,128x128,64x64 解析度的影象。至於獲得不同解析度的影象,直接經過 pooling 下采樣即可。

Coarse2fine 的 Generator 是指先訓一個低解析度的網路,訓好了再接一個高解析度的網路,高解析度網路融合低解析度網路的特徵得到更精細的生成結果。具體介紹可以參考 pix2pixHD[1]。

下圖以及題圖是 CelebA 資料上交換屬性的實驗,影象解析度 256x256,如果單個 Discriminator,生成質量很差,加上 multi-scale 之後生成質量有了很大提升,並且沒有經過調參哦。

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

△ 圖1:交換劉海

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

△ 圖2:交換眼鏡

其二是採用 progressive growing 的訓練方式,先訓小解析度,再逐漸增加網路層數以增大解析度,這個跟 coarse2fine 有點像。具體可以參看 PGGAN [2],或者這裡。

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

其三則是借鑑 LAPGAN 的做法,從低解析度起步,通過不斷生成高解析度下的殘差,累加得到高解析度。圖中 z1,z2,z3 是不同解析度的輸入。這個做法還沒有嘗試過,不知道生成質量怎樣,圖中的虛線是我認為可能不必要的連線。

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

關於生成樣本多樣性

這裡其實有兩個問題,一個是多模態多樣性,一個是屬性強弱的多樣性。

對於多模態多樣性,現有的技術不多,總結起來有三種。

其一,引入 noise,通過變分的方式讓 noise 得到表達,獲得多樣性。這個方法來自於 BicycleGAN [3] 的 cVAE-GAN。

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

△ 圖3:圖片來自於 BicycleGAN [3]

其二,引入 noise,通過迴歸的方法在生成影象上預測所引入的 noise。這個方法失敗率比較高。當然,它也可以跟第一種方法結合。具體介紹參考 BicycleGAN [3] 的 cLR-GAN。

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

△ 圖4:圖片來自於 BicycleGAN [3]

前兩種方法都比較容易想到。在文章出來以前,我也曾經嘗試過第二種方法,但是沒有 work。這也印證了它失敗率高。

第三種方法是通過交換來實現多模態。交換的影象可以是多種多樣,一個不帶屬性的圖,可以通過跟具有不同型別的劉海(眼鏡、帽子等)的圖片進行交換,以給目標人物加上不同型別的劉海(眼鏡、帽子等)。這個方法可以參考 GeneGAN [4] 或者 DNA-GAN [5]。題圖就是一個交換屬性的例子。

另一種多樣性是屬性強弱。對於需要輸入 label 的生成方法(如 FaderNets,StarGAN),可以通過控制餵給生成器的 label 強弱來得到生成影象的屬性強弱。

關於屬性強弱,有一類方法比較特殊,它沒有辦法實現,那就是 CycleGAN,因為它只需要輸入影象,並不需要輸入 label,沒有控制 label 強弱的操作。

下面介紹一種原創的方法,能夠對 CycleGAN 引入屬性強弱的控制(不打算寫成論文,因為沒有什麼特別的貢獻,不想灌水。如使用該方法請註明出處)。

我們通過精簡 CycleGAN 來實現,以兩個域為例,原始 CycleGAN 需要 2 個 Generator 和 2 個 Discriminator,我們不難發現,可以把域轉換稱 condition,這樣只需要一個 Generator 和 Discriminator 了。

不妨給兩個域 X = {x_i} 和 Y = {y_j} 分別編碼為 -1 和 1:

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

這樣就實現了 x -> y -> x 和 y -> x -> y 的 cycle。剩下的跟 CycleGAN 一樣即可。在測試的時候,就可以通過調節編碼的強度來控制屬性的強弱了。

關於 inference

模型訓練好了,測試的時候還有一道關要過。雖然現在很多影象翻譯方法訓練的時候都不需要配對資料,但是它們都需要弱監督,也就是需要提供 label。

而測試集上我們不一定有 label,這其實是很常見的一個問題,使用者上傳的影象不會給你打好標籤,況且還存在使用者「故意」製造錯誤標籤誤導演算法(測試演算法效能)的可能。有什麼解決方案呢?

我們很容易想到,加一個分類器,先分類具有什麼屬性,然後再轉換屬性。這個想法簡單,但是需要額外的網路,會增加計算量。

有沒有不引入分類器的方法呢?仍然以兩個域互轉的 CycleGAN 為例。訓練的時候,我們強迫生成器具有分類器的功能。具體來說,生成器需要需要額外做兩個任務(原創方法,沒有發表,使用請註明出處):

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

這兩項的 loss 為重構誤差:

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

這可以說是一種自監督。這麼做也就確保了生成器能夠處理「故意誤導」性的轉換,也實現了 label-free 的 inference。

下圖是季節轉換的一個例子。圖片從左到右依次為秋季原圖、轉成夏季圖、夏季圖轉回秋季圖、秋季原圖轉到秋季圖。

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

△ 圖5:label=0.5

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

△ 圖6:label=1.0

注意到上圖 checkerboard 效應很嚴重。怎麼解決 checkerboard 呢?

關於 inference

生成模型很容易產生 checkerboard 效應,影象翻譯任務尤為嚴重。據研究 [6],checkerboard 主要來自於反摺積(convolution transpose,通常也稱 deconvolution)操作,而跟對抗訓練關係不大。

[6] 指出,使用 nearest upsample + conv 替代 deconv 可以移除 checkerboard。在實驗中我發現這個替換確實發現能夠很好地解決問題。

GAN做影象翻譯的一點總結

請點選此處輸入圖片描述

△ 圖7:反摺積帶來了 overlap,從而引入了 checkerboard,圖來自於[6]

替代 deconv 需要引入其他的上取樣方法。上取樣的方法除了 nearest upsample 和 bilinear upsample 等型別之外,還有一種不叫上取樣,但是可以得到類似效果的操作:pixel shuffle[7]。它只改變了資料的擺放位置,(N, C*k^2, H, W) -> (N, C, kH, kW))

這也是實現影象從小到大的方法,但是實驗中我發現沒有效果,可能是因為 channel 數太少。注意到 channel 數是增長是很快的,為了減少視訊記憶體,減少卷積層數或者減少第一個卷積層的 channel 數都會影響網路的表達能力。

也就是說,目前比較好的解決方案還是使用 nearest upsample + conv 替代 deconv

參考文獻

1. Wang T C, Liu M Y, Zhu J Y, et al. High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs[J]. arXiv preprint arXiv:1711.11585, 2017.

2. Karras T, Aila T, Laine S, et al. Progressive growing of gans for improved quality, stability, and variation[J]. arXiv preprint arXiv:1710.10196, 2017.

3. Zhu J Y, Zhang R, Pathak D, et al. Multimodal Image-to-Image Translation by Enforcing Bi-Cycle Consistency[C]//Advances in Neural Information Processing Systems. 2017: 465-476.

備註:文章發表時是這個名字,但是後來改名了,找原文請搜 Toward Multimodal Image-to-Image Translation

4. Zhou S, Xiao T, Yang Y, et al. GeneGAN: Learning Object Transfiguration and Attribute Subspace from Unpaired Data[J]. arXiv preprint arXiv:1705.04932, 2017.

5. Xiao T, Hong J, Ma J. DNA-GAN: Learning Disentangled Representations from Multi-Attribute Images[J]. arXiv preprint arXiv:1711.05415, 2017.

6. https://distill.pub/2016/deconv-checkerboard

7. Shi W, Caballero J, Huszár F, et al. Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 1874-1883.

相關文章