CycleGAN


 

CycleGAN解決了模型需要成對數據進行訓練的困難

前文說到的pix2pix,它和CycleGAN的區別在於,pix2pix模型必須要求 成對數據 (paired data),而CycleGAN利用 非成對數據 也能進行訓練(unpaired data)。

 

CycleGAN的原理可以概述為: 將一類圖片轉換成另一類圖片 。也就是說,現在有兩個樣本空間,X和Y,我們希望把X空間中的樣本轉換成Y空間中的樣本。(獲取一個數據集的特征,並轉化成另一個數據集的特征)

 

  因此,實際的目標就是學習從X到Y的映射。我們設這個映射為F。它就對應着GAN中的 生成器 ,F可以將X中的圖片x轉換為Y中的圖片F(x)。對於生成的圖片,我們還需要GAN中的 判別器 來判別它是否為真實圖片,由此構成對抗生成網絡。設這個判別器為 D_{Y} 。這樣的話,根據這里的 生成器 和 判別器 ,我們就可以構造一個GAN損失,表達式為:

大數據

這個損失實際上和原始的GAN損失是一模一樣的。

  從理論上講,對抗訓練可以學習和產生與目標域Y相同分布的輸出。但單純的使用這一個損失是無法進行訓練的。原因在於,在足夠大的樣本容量下,網絡可以將相同的輸入圖像集合映射到目標域中圖像的任何隨機排列,其中任何學習的映射可以歸納出與目標分布匹配的輸出分布(即:映射F完全可以將所有x都映射為Y空間中的同一張圖片,使損失無效化)。

  因此,單獨的對抗損失Loss不能保證學習函數可以將單個輸入Xi映射到期望的輸出Yi。

   對此,作者又提出了所謂的“循環一致性損失”(cycle consistency loss)

 

  我們再假設一個映射G,它可以將Y空間中的圖片y轉換為X中的圖片G(y)。CycleGAN同時學習F和G兩個映射,並要求 大數據 以及 大數據 也就是說,將X的圖片轉換到Y空間后,應該還可以轉換回來。這樣就杜絕模型把所有X的圖片都轉換為Y空間中的同一張圖片了。 

 根據 大數據 和 大數據 循環一致性損失就定義為:

大數據

同時,我們為G也引入一個判別器 大數據 由此可以同樣定義一個GAN的損失 大數據 最終的損失就由三部分組成:

大數據

 

 實現過程

  1. 網絡結構 

    生成網絡使用了這篇文章中的網絡結構。判別器網絡采用了70*70的PathGANs。

  2.  訓練細節

    <1> 兩個操作使得模型訓練更加穩定

    (1)對於LGAN使用最小二乘損失替換對數loss

      

     (2)在DX,DY中,使用先前生成的圖片而不是最近生成的。使用一個能容納50張圖像的圖像池。

    <2> λ的值設置為10.使用Adam優化求解,batch size為1.前100個epoch學習率設置為0.0002,后100個epoch學習率線性遞減直至0.

 

 限制

  對顏色、紋理等的轉換效果比較好,對多樣性高的、多變的轉換效果不好(如幾何轉換)。

  加上弱或半監督效果會更好。

 

注:

恆等映射,保護顏色。

 

 

 實驗

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM