GAN生成對抗網絡合集(七):cycleGAN—循環損失的提出 / starGAN

cycleGAN源文:https://arxiv.org/abs/1703.10593
cycleGAN筆者實踐代碼:https://github.com/leehomyc/cyclegan-1

-----------------------------------------------------------------------------------------------------------------------------------------

1 cycleGAN大體思路

到了cycleGAN,就不再像之前幾個改進,僅僅停留在改動 Loss,還開始改動結構了…

在這裏插入圖片描述

2 源文精析

2.1 Abstract

       圖像到圖像的翻譯是一類視覺和圖形問題,其目標是學習輸入圖像和輸出圖像之間的映射使用一組對齊的圖像對。然而,對於許多任務,成對的訓練數據是不可用的。本文提出了一種學習方法,在沒有成對實例的情況下,將圖像從源域X轉換爲目標域Y。我們的目標是學習一個映射G: X->Y,使來自G(X)的圖像的分佈與使用對抗損失的分佈難以區分。因爲這個映射是高度欠約束的,我們將它與一個逆映射F: Y->X 和引入一個循環一致性損失 執行F(G(X))約等於X (Y與G(F(Y))亦然).在不存在成對訓練數據的情況下,對風格轉換、物體變形(有限)、季節轉換、照片增強等任務進行定性分析。通過與已有方法的定量比較,證明了該方法的優越性。

2.2 Introduction

在這裏插入圖片描述

注:cycleGAN是無序的圖像對應,有序是指類似於:圖像<->標籤 / 圖像<->邊緣

       圖像到圖像的翻譯[22],是將一個圖像從一個給定場景的一種表示x,轉換成另一個y。例如,灰度到顏色,圖像到語義標籤,邊緣地圖到照片。多年來在計算機視覺、圖像處理、計算攝影和圖形方面的研究已經產生了強大的翻譯系統,在監督設置,其中的示例圖像對{xi,yi}Ni=1是可用的(圖2,左),例如,[11,19,22,23,28,33,45,56,58,62]。然而,獲得成對的訓練數據可能是困難和昂貴的。例如,只有幾個數據集用於語義分割(例如[4]),而且它們相對較小。爲藝術風格化之類的圖形任務獲取輸入-輸出對可能更加困難,因爲所需的輸出非常複雜,通常需要藝術創作。對於許多任務,比如對象變形(例如zebra<->horse,圖1中上部),所需的輸出甚至沒有定義。
       因此,我們尋求一種無需成對輸入-輸出示例就能學會在域之間進行轉換的算法(圖2,右側)。我們假設在這些域之間存在某種潛在的關係——例如,它們是同一底層場景的兩種不同的呈現——並試圖瞭解這種關係。雖然我們缺乏成對樣本的監督,但我們可以利用集合層面的監督: 給定X域中的一組圖像和Y域中的另一組圖像。我們可以訓練一個映射G: X->Y,這樣輸出 y ^ = G (x) (x∈X),y ^ 與y在對抗網絡訓練下不能彼此分開。從理論上講,這一目標可以產生一個輸出分佈y^ 相匹配的經驗分佈 pdata (y)(一般來說,這需要隨機G) [16]。最優的G將定義域X轉化爲定義域Y的同分布。然而,這樣的轉換並不能保證一個單獨的輸入x和輸出y以有意義的方式配對——有無窮多個映射G會在y^ 上產生相同的分佈。此外,在實踐中,我們發現很難單獨優化對抗目標: 標準程序常常導致衆所周知的模式崩潰問題,即所有輸入圖像映射到相同的輸出圖像,而優化未能取得進展。
       這些問題要求爲我們的目標增加更多的結構。因此,我們利用了翻譯應該是“循環一致的”這一特性,也就是說,如果我們把一個句子從英語翻譯成法語,然後再把它從法語翻譯成英語,我們應該回到原來的句子[3]。數學上,如果我們有一個翻譯器G: X->Y和另一個翻譯器F: Y->X。那麼G和F應該是彼此的逆,兩個映射都應該是雙射。我們應用這種結構,假設通過同時訓練映射 G 和 F, 和添加一個循環一致性損失[64],促使 F(G(x))≈x 和 G(F(y))≈y,整合這個過程中的G的損失與判別器X和Y損失。我們完整客觀解決未配對的圖像翻譯問題
       我們的方法適用於廣泛的應用,包括收集風格的轉移,對象變形,季節轉移和照片增強。我們還比較了以前的方法,這些方法要麼依賴於手工定義的樣式和內容的因數分解,要麼依賴於共享的嵌入函數,並表明我們的方法比這些基線更好。我們提供了PyTorch和Torch實現。更多結果請訪問我們的網站。

2.3 Related work

2.4 Formulation

       我們的目標是在給定訓練樣本{xi}Ni=1(其中xi∈X)和{yj}Mj=1(其中yj∈Y)的情況下,學習X和Y兩個域之間的映射函數。我們表示數據分佈的x~pdata(x) 和 y~pdata(y).如圖3 (a)所示,我們的模型包含兩個映射G: X->Y和F: Y->X。此外,我們還介紹了兩個鑑別器DX和DY,其中DX的目的是區分圖像{x}和圖像{F(y)};同樣的,DY的目的是區分{y}和{G(x)}。我們的目標包含兩類: 用於將生成的圖像的分佈與目標域中的數據分佈匹配的對抗性損失[16];和循環一致性損失,以防止學習的映射G和F相互矛盾。

在這裏插入圖片描述

這個圖說明了循環一致性損失是怎麼回事,聯繫最頂上我手繪的醜圖,就明白了!

2.4.1 Adversarial Loss(對抗的損失(判別器和生成器分別的損失))

       我們對這兩個映射函數應用了對抗損失[16]。對於映射函數G: X->Y及其判別器DY,我們將目標表示爲:

在這裏插入圖片描述

       其中G試圖生成與Y域圖像相似的圖像G(x),而DY旨在區分已翻譯的樣本G(x)和真實樣本y,minG maxDY LGAN(G,DY,X,Y)。我們爲映射函數F: Y->X 引入了一個類似的競爭損失。X和它的鑑別器minF maxDx LGAN(F,DX,Y,X)。

2.4.2 Cycle Consistency Loss(循環一致性損失)

       從理論上講,對抗性訓練可以學習生成結果分別爲目標域Y和X同分布的映射G和F(嚴格地說,這要求G和F是隨機函數)[15]。然而,在足夠大的容量下,網絡可以將同一組輸入圖像映射到目標域中任意隨機排列的圖像,其中任何已學習的映射都可以誘導出與目標分佈匹配的輸出分佈。因此,僅僅是對抗性損失並不能保證所學習的函數能夠將單個的輸入xi映射到所需的輸出yi。爲了進一步減少可能的映射函數的空間,我們認爲所學習的映射函數應該是循環一致的: 如圖3 (b)所示,對於x域中的每個圖像x,圖像翻譯週期應該能夠將x帶回到原始圖像,即x->G (x)->F(G(x))≈x ,我們稱之爲 正向循環。類似地,如圖3 ©所示,對於y域中的每個圖像y, G和F也應該滿足反向循環一致性:y->F(y)->G(F(y))≈y 。我們使用循環一致性損失以鼓勵這種行爲:

在這裏插入圖片描述

       在初步實驗中,我們也嘗試用F(G(x))和x之間、G(F(y))和y之間的對抗性損失來代替L1範數,但沒有觀察到性能的改善
       循環一致性損失引起的行爲如圖4所示: 重構圖像F(G(x))最終與輸入圖像x緊密匹配

在這裏插入圖片描述

這個圖清晰地看出哪個變了,哪個沒變,哪個部分有用,哪個部分僅僅是做循環損失…

2.4.3 Fully Objective

       我們的總目標函數爲:

在這裏插入圖片描述
       λ是控制對抗loss和循環一致性loss的比重。

在這裏插入圖片描述

       注意到訓練我們的模型可以看作是兩個“自編碼器” [20]: 我們學習一個自編碼器 F○G : X->X 會同另一個G○F : Y->Y。然而,這些自編碼器都有特殊的內部結構: 它們通過中間表示將圖像映射到自身,中間表示是將圖像轉換到另一個域。這樣的設置也可以看作是“對抗性自動編碼器”[34]的一個特例,它使用對抗性損失來訓練自編碼器的瓶頸層來匹配任意的目標分佈。在我們的例子中,目標分佈X->X是定義域Y的自編碼器。
       在第5.1.4節中,我們將我們的方法與全部目標進行了比較,包括僅使用對抗性損失LGAN和僅使用週期一致性損失Lcyc,並通過實證表明,這兩個目標在獲得高質量的結果中都發揮了關鍵作用。我們也評估了我們的方法只用一個循環損失在一個方向,並表明,一個單一的循環是不夠正則化的訓練,這一不足約束的問題。

2.5 Implementation

2.5.1 生成器和判別器結構

       我們的生成網絡採用了Johnson等人的體系結構,他們在神經風格傳輸和超分辨率方面取得了令人印象深刻的成果。該網絡包含兩個stride-2卷積,幾個殘差塊[18],以及兩個部分stride卷積和stride 1/2。我們使用6blocks128×128圖片 , 9blocks 256×256和更高分辨率訓練圖片。與Johnson等人的[23]類似,我們使用instance normalization(實例規範化) [53]。對於判別器網絡 我們使用70×70PatchGANs [22, 30, 29], 旨在分類 70×70 重疊的圖像補丁是否真實或 fake。這種補丁級判別器架構的參數比全圖像鑑別器的少,並且可以以全卷積的方式處理任意大小的圖像。(見後)

2.5.2 訓練細節

       我們從最近的工作中應用了兩種技術來穩定我們的模型訓練過程。首先,對於LGAN(公式1),我們用最小二乘損失[35]代替負對數似然目標。這種損失在訓練中更穩定,產生更高質量的結果。特別是對於LGAN(G;D;X;Y )的GAN損失函數,

在這裏插入圖片描述

       其次,爲了減少模型振盪[15],我們遵循Shrivastava等人的策略[46],並使用生成圖像的歷史來更新判別器,而不是使用最新的生成器生成的圖像。我們保存了一個圖像緩衝區,它存儲了之前創建的50個圖像
       對於所有實驗, 公式3. 中 我們設置 λ= 10。我們使用批量大小爲1的Adam solver[26]。所有網絡都是從零開始訓練,學習率爲0.0002。我們對前100個週期保持相同的學習率,並在接下來的100個週期內線性衰減到0。有關數據集、體系結構和訓練程序的詳細信息,請參閱附錄(第7節)。

2.6 Results

       我們首先將我們的方法與最近在成對數據集上的非成對圖像翻譯方法進行比較,其中ground truth輸入-輸出對可用於評估。然後,我們研究了對抗性損失和循環一致性損失的重要性,並將我們的完整方法與幾種變體進行了比較。最後,我們演示了我們的算法在不存在配對數據的廣泛應用中的通用性。爲了簡單起見,我們將我們的方法稱爲CycleGAN。PyTorch和Torch代碼、模型和完整的結果可以在我們的網站上找到。

2.6.1 評價指標

AMT感知研究

       在map<->航拍任務中,我們在Amazon Mechanical Turk (AMT)上運行“真實與虛假”感知研究,以評估輸出的真實性。我們遵循的知覺研究協議與Isola等人的[22]相同,只是我們每個測試算法只收集25個參與者的數據。研究人員向參與者展示了一系列圖像,其中一張是真實的照片或地圖,另一張是假的(由我們的算法或基線生成),並要求他們點擊他們認爲是真實的圖像。每一階段的前10次試驗都是練習,並就參與者的回答是正確還是錯誤給出反饋。剩下的40個試驗用於評估每種算法騙到參與者的比率。每個會話(session)只測試一個算法,參與者只允許完成一個會話(session)。我們在這裏報告的數字與[22]中的數字沒有直接的可比性,因爲我們的ground truth圖像處理略有不同,我們測試的參與者池可能與[22]中的參與者池分佈不同(因爲在不同的日期和時間運行實驗)。因此,我們的數字應該只用於與基線(在相同的條件下運行)比較我們當前的方法,而不是與[22]比較。

FCN score

       雖然感知學習可能是評估圖形真實感的黃金標準,我們也尋求一種不需要人類實驗的自動定量測量。爲此,我們採用了來自[22]的“FCN分數”,並使用它來評估Cityscapes標籤->照片的任務。FCN度量根據現成的語義分割算法(全卷積網絡,FCN,源自[33])評估生成的照片的可解釋性。FCN預測生成的照片的標籤映射。然後,可以使用下面描述的標準語義分割指標將此標籤映射與輸入的ground truth標籤進行比較。我們的直覺是,如果我們從“道路上的汽車”的標籤地圖生成一張照片,那麼如果FCN應用到生成的照片檢測到“道路上的汽車”,那麼我們就成功了

語義細分指標

       爲了評估照片->標籤的性能。我們使用Cityscapes基準[4]的標準度量,包括每像素精度、每類精度和平均類相交-過並(類IOU)[4]。

       一頓嘰裏呱啦的數據分析…

       並與有監督的圖像翻譯pix2pix(他們都有成對的訓練數據)作對比:

在這裏插入圖片描述

2.6.2 應用

風格轉換(圖10和圖11)

       我們通過從Flickr和WikiArt下載的風景照片來訓練模型。與最近關於“神經風格轉移”[13]的工作不同,我們的方法學會了模仿整個藝術作品集合的風格,而不是轉移單個選定的藝術作品的風格。因此,我們可以學習生成梵高風格的照片,而不僅僅是《星夜》的風格。每個藝術家/風格的數據集大小分別爲526、1073、400和563 (Cezanne, Monet, Van Gogh, Ukiyo-e)。

在這裏插入圖片描述
對象變形(圖13)

       模型被訓練來將一個對象類從ImageNet[5]轉換成另一個對象類(每個類包含大約1000個訓練圖像)。Turmukhambetov等人[50]提出了一種子空間模型,將一個對象轉換成另一個具有相同類別的對象,而我們的方法側重於兩個視覺上相似的類別之間的對象變形。

在這裏插入圖片描述
季節轉移(圖13)

       模型使用從Flickr下載的854張優勝美地冬季照片和1273張夏季照片進行訓練。

在這裏插入圖片描述
繪畫生成照片(圖12)

       繪畫<->照片,我們發現它有助於引入一個額外的損失,以鼓勵映射,以保持顏色組成之間的輸入和輸出。特別地,我們採用了Taigman等人的[49]技術,當提供目標域的真實樣本作爲生成器的輸入時,將生成器調整爲接近於一個身份映射:即

在這裏插入圖片描述

       在沒有Lidentity的情況下,G和F可以在不需要的時候自由改變輸入圖像的顏色。例如,當學習Monet的繪畫和Flickr照片之間的映射時,生成器經常將白天的繪畫映射到日落時拍攝的照片,因爲這樣的映射在對抗損失和循環一致性損失下可能同樣有效。這種身份映射丟失的影響如圖9所示。

在這裏插入圖片描述
       在圖12中,我們展示了將莫奈的畫作轉換成照片的附加結果。這個圖和圖9顯示了訓練集中包含的繪畫的結果,而對於本文中所有其他的實驗,我們只評估和顯示了測試集的結果。因爲訓練集不包含成對的數據,所以爲訓練集繪製提出一個合理的轉換是一項重要的任務。事實上,由於莫奈不再能夠創作出新的畫作,泛化成看不見的“測試集”,畫作就不是一個緊迫的問題。

在這裏插入圖片描述
照片增強(圖14)

       結果表明,該方法可以生成景深較淺的照片。我們在從Flickr下載的花卉照片上訓練模型。源域由智能手機拍攝的花卉照片組成,由於孔徑較小,這些照片通常具有較深的DoF。目標包含用較大光圈的單反相機拍攝的照片。我們的模型成功地從智能手機拍攝的照片中生成了景深較淺的照片。

在這裏插入圖片描述
與Gatys等人的比較

       在圖15中,我們將我們的結果與神經類型轉換[13]在照片風格化上的結果進行了比較。對於每一行,我們首先使用兩個具有代表性的藝術品作爲[13]的樣式圖像。另一方面,我們的方法可以生成整個集合風格的照片。爲了與整個集合的神經風格傳遞進行比較,我們計算了目標域上的格拉姆矩陣,並使用這個矩陣與Gatys等人的[13]一起傳遞“平均風格”。

在這裏插入圖片描述       圖16展示了其他翻譯任務的類似比較。我們觀察到,Gatys等人的[13]需要找到與期望輸出密切匹配的目標樣式圖像,但仍然經常不能產生逼真的結果,而我們的方法成功地生成自然外觀的結果,類似於目標域。

在這裏插入圖片描述

2.7 Limitations and Discussion

       雖然我們的方法在很多情況下都能得到令人信服的結果,但結果遠不是一致肯定的。圖17顯示了幾個典型的失敗案例。在涉及顏色和紋理變化的翻譯任務中,就像上面報道的許多任務一樣,這種方法通常會成功。我們還探索了需要幾何變化的任務,但收效甚微。例如,關於狗變形貓的任務,學習後的翻譯退化爲對輸入進行最小的更改(圖17)。此故障可能是由我們的生成器架構導致的,我們的生成器架構是爲外觀更改的良好性能而定製的。處理更多樣和極端的轉換,特別是幾何變化,是未來工作的一個重要問題。
       一些失敗案例是由訓練數據集的分佈特性引起的。例如,我們的方法在馬->斑馬示例(圖17,右)中被混淆了,因爲我們的模型是在ImageNet的野馬和斑馬的同義詞集上訓練的,它不包含人騎着馬或斑馬的圖像。
       我們還觀察到配對訓練數據和非配對訓練方法所獲得的結果之間的差距。在某些情況下,這種差距可能很難(甚至不可能)消除: 例如,我們的方法有時會在照片->標籤任務的輸出中破壞樹和建築物的標籤。爲了解決這種模糊性,可能需要某種形式的弱語義監督。集成弱或半監督的數據可能會產生更強大的翻譯,但其註釋成本僅爲全監督系統的一小部分。
       儘管如此,在許多情況下,完全不配對的數據是大量可用的,應該加以利用。這篇論文在這種“無監督”的環境下拓展了可能性的邊界。

在這裏插入圖片描述
-----------------------------------------------------------------------------------------------------------------------------------------

在實踐代碼Github: https://github.com/leehomyc/cyclegan-1

代碼中夏天<->冬天需要訓練200次,我訓練了10次以後的test效果圖:

在這裏插入圖片描述
從左到右依次爲:inputA、inputB、cycA、cycB、fakeB、fakeA(cycA、cycB沒啥用)

在這裏插入圖片描述
-----------------------------------------------------------------------------------------------------------------------------------------

starGAN = cycGAN+ACGAN

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章