天天看點

CVPR2018 CartoonGAN 解讀

CartoonGAN前言

      本文是對CVPR2018的一篇關于圖像風格遷移的論文解讀,即CartoonGAN,它可以用真實景物的照片作為源圖檔,生成任意風格的漫畫,如新海誠或者宮崎駿。有人說這不就是Photoshop的濾鏡而已嘛,當然Photoshop也可以做到,但是隻給你一分鐘來産生上百張效果圖,Photoshop能否做到?我自己也在複現,但發現真的很難調出效果好的模型,自己的實驗還得繼續。

作者調出的模型效果是非常不錯的了,效果圖如下:真實景物——新海誠風格——宮崎駿風格

CVPR2018 CartoonGAN 解讀

論文連結:

http://203.187.160.133:9011/openaccess.thecvf.com/c3pr90ntc0td/content_cvpr_2018/papers/Chen_CartoonGAN_Generative_Adversarial_CVPR_2018_paper.pdf

作者未開源代碼,隻給出了四個訓練好的模型(宮崎駿、細田守、今敏和新海誠風格),作者用torch進行實驗,模型下載下傳連結:

http://cg.cs.tsinghua.edu.cn/people/~Yongjin/CartoonGAN-Models.rar

于是Github有人寫了test代碼用以上四個模型來前向測試圖像,以下用Pytorch寫的test代碼還不錯:

https://github.com/Yijunmaverick/CartoonGAN-Test-Pytorch-Torch

大家可以自己看論文,下載下傳模型,找一些真實場景圖試試速度和效果。

CartoonGAN理論解讀

CartoonGAN其實就是一個用于非成對image訓練的GAN,可以說是單向的CycleGAN罷了,創新點就三點:

1、作者自己設計的GAN網絡架構,包括生成網絡G和判别網絡D,都比較直覺基礎,如下圖:

CVPR2018 CartoonGAN 解讀

2、提出了損失函數L(G,D),由兩部分組成,第一部分Ladv(G,D)為普通的GAN損失,第二部分Lcon(G,D)為保證原真實圖像内容的内容損失:

CVPR2018 CartoonGAN 解讀
CVPR2018 CartoonGAN 解讀
CVPR2018 CartoonGAN 解讀

       可以看到Ladv(G,D)比普通GAN損失多加了一個Eej∼Sdata(e)[log(1 - D(ej))],也就多了一個資料集ej,那這個資料集怎麼來的,它是通過對原始卡通圖像進行邊緣模糊後得到的,目的是為了讓生成網絡G生成邊緣清晰的圖檔,是以D(ej)判别為假資料。而Lcon(G,D)就是Neural Style裡面的内容損失,隻不過把L2損失改為L1損失,在這裡我們可以看成是一個正則化。

3、引入一個初始化過程,先用Lcon(G,D)單獨一個損失來訓練G,大概訓練10個epoch,目的是為了生成的圖檔初始後就能保證原真實場景的内容,畢竟普通的單向GAN要是沒有加入一些限制很難穩定保證原始圖檔的内容,大多會出現扭曲或更嚴重的情況,而類似的,在CycleGAN中展現為用cycle_loss來保證原始圖檔内容。

CartoonGAN實驗

       想跑一跑CartoonGAN的test效果,直接用作者所給的四個模型就好了,假如還想自己訓練其他風格的模型,或者加點别的效果,那就得自己寫代碼實作論文以上三個創新點了,難度不大,用Tensorflow/Pytorch實作很快,隻不過要自己挑好訓練集、訓練集數量要足夠多,品質也要好,其次各種調參也是非常重要的,訓練時間也很長啦~~

最後,歡迎大家讨論交流哈哈~

繼續閱讀