GAN做图像翻译的一点总结
作者丨洪佳鵬
學校丨北京大學
研究方向丨生成式對抗網絡
本文經授權轉載自公眾號「學術興趣小組」。
如今,隨著 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 之后生成質量有了很大提升,并且沒有經過調參哦。
△?圖1:交換劉海
△?圖2:交換眼鏡
其二是采用 progressive growing 的訓練方式,先訓小分辨率,再逐漸增加網絡層數以增大分辨率,這個跟 coarse2fine 有點像。具體可以參看 PGGAN [2],或者這里。
其三則是借鑒 LAPGAN 的做法,從低分辨率起步,通過不斷生成高分辨率下的殘差,累加得到高分辨率。圖中 z1,z2,z3 是不同分辨率的輸入。這個做法還沒有嘗試過,不知道生成質量怎樣,圖中的虛線是我認為可能不必要的連接。
關于生成樣本多樣性
這里其實有兩個問題,一個是多模態多樣性,一個是屬性強弱的多樣性。
對于多模態多樣性,現有的技術不多,總結起來有三種。
其一,引入 noise,通過變分的方式讓 noise 得到表達,獲得多樣性。這個方法來自于 BicycleGAN [3] 的 cVAE-GAN。
△?圖3:圖片來自于 BicycleGAN [3]
其二,引入 noise,通過回歸的方法在生成圖像上預測所引入的 noise。這個方法失敗率比較高。當然,它也可以跟第一種方法結合。具體介紹參考 BicycleGAN [3] 的 cLR-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:
這樣就實現了 x -> y -> x?和 y -> x -> y?的 cycle。剩下的跟 CycleGAN 一樣即可。在測試的時候,就可以通過調節編碼的強度來控制屬性的強弱了。
關于 inference
模型訓練好了,測試的時候還有一道關要過。雖然現在很多圖像翻譯方法訓練的時候都不需要配對數據,但是它們都需要弱監督,也就是需要提供 label。
而測試集上我們不一定有 label,這其實是很常見的一個問題,用戶上傳的圖像不會給你打好標簽,況且還存在用戶「故意」制造錯誤標簽誤導算法(測試算法性能)的可能。有什么解決方案呢?
我們很容易想到,加一個分類器,先分類具有什么屬性,然后再轉換屬性。這個想法簡單,但是需要額外的網絡,會增加計算量。
有沒有不引入分類器的方法呢?仍然以兩個域互轉的 CycleGAN 為例。訓練的時候,我們強迫生成器具有分類器的功能。具體來說,生成器需要需要額外做兩個任務(原創方法,沒有發表,使用請注明出處):
這兩項的 loss 為重構誤差:
這可以說是一種自監督。這么做也就確保了生成器能夠處理「故意誤導」性的轉換,也實現了 label-free 的 inference。
下圖是季節轉換的一個例子。圖片從左到右依次為秋季原圖、轉成夏季圖、夏季圖轉回秋季圖、秋季原圖轉到秋季圖。
△?圖5:label=0.5
△?圖6:label=1.0
注意到上圖 checkerboard 效應很嚴重。怎么解決 checkerboard 呢?
關于 inference
生成模型很容易產生 checkerboard 效應,圖像翻譯任務尤為嚴重。據研究 [6],checkerboard 主要來自于反卷積(convolution transpose,通常也稱 deconvolution)操作,而跟對抗訓練關系不大。
[6] 指出,使用 nearest upsample + conv 替代 deconv 可以移除 checkerboard。在實驗中我發現這個替換確實發現能夠很好地解決問題。
△?圖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.
??我是彩蛋?
解鎖新功能:熱門職位推薦!
PaperWeekly小程序升級啦
今日arXiv√猜你喜歡√熱門職位√
找全職找實習都不是問題
?
?解鎖方式?
1. 識別下方二維碼打開小程序
2. 用PaperWeekly社區賬號進行登陸
3. 登陸后即可解鎖所有功能
?職位發布?
請添加小助手微信(pwbot01)進行咨詢
?
長按識別二維碼,使用小程序
*點擊閱讀原文即可注冊
? ? ? ? ???
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的GAN做图像翻译的一点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 直播预告:基于动态词表的对话生成研究 |
- 下一篇: 每周论文清单:知识图谱,文本匹配,图像翻