原文地址:https://arxiv.org/abs/1703.10593
背景——風格遷移
圖片生成領域是GAN網絡的天下,最近很多人將GAN網絡應用到了圖像風格遷移領域。這篇論文也是做image to image translation,之前已經有較為成功的網絡PIX2PIX了(同一個團隊做的),本篇論文的出發點和PIX2PIX的不同在於:
- PIX2PIX網絡要求提供image pairs,也即是要求提供x和y,整個思路為:從噪聲z,根據條件x,生成和真實圖片y相近的y‘。條件x和圖像y是具有一定關聯性的。
- 而本篇CycalGAN不要求提供pairs,如題目所說:Unpaired。因為成對的圖像數據集其實並不多。這里的x和y不要求有什么較好的關聯性,可以是毫不相干的兩幅圖像。
方法
普通的GAN損失:
但單純的使用這一個損失是無法進行訓練的。原因在於,映射F完全可以將所有x都映射到y空間的同一張圖片,使損失無效化。為此提出循環GAN網絡。從域x生成域y,再從y生成回x,循環往復。
網絡結構
兩個生成器網絡:G和F;兩個鑒別器網絡:Dx和Dy。整個網絡是一個對偶結構。
下圖對網絡結構說明很清楚,出處見水印。
Loss函數
Loss部分除了經典的基礎的GAN網絡的對抗loss,還提出了一個cycle-loss。因為網絡需要保證生成的圖像必須保留有原始圖像的特性,所以如果我們使用生成器GenratorA-B生成一張假圖像,那么要能夠使用另外一個生成器GenratorB-A來努力恢復成原始圖像。此過程必須滿足循環一致性。
對抗損失有兩部分:
對偶網絡的循環損失分為前向循環損失和后向循環損失,分別為:
采用L1 loss:
最后,總的損失函數為:
lamba=10
代碼中還有個loss:identity loss
大致可以這樣理解,生成器是負責域x到域y的圖像生成,如果輸入域y的圖片還是應該生成域y的圖片y‘’,計算y‘’和輸入y的loss。
訓練細節
- Generator采用的是Perceptual losses for real-time style transfer and super-resolution 一文中的網絡結構;一個resblock組成的網絡,降采樣部分采用stride 卷積,增采樣部分采用反卷積;Discriminator采用的仍是pix2pix中的PatchGANs結構,大小為70x70
- 定義四個xx器的損失函數,分別優化訓練G和D,兩個生成器共享權重,兩個鑒別器也共享權重訓練
- 計算每個生成圖像的損失是不可能的,因為會耗費大量的計算資源。建立一個圖像庫,存儲之前生成的50張圖,而不只是最新的生成器生成的圖
- Lr=0.0002。對於前100個周期,保持相同的學習速率0.0002,然后在接下來的100個周期內線性衰減到0。
實驗結果
一些對比試驗結果:(通過label生成原圖y‘,再利用FCN對生成的原圖y‘進行分割,進行一個label-photo的實驗)