循環生成網絡 CycleGan 原理介紹

​ 本文旨在解釋“循環生成網絡”的內部工作原理,以及如何將其應用於解決現實世界中的任務。

介紹

​ 循環生成對抗網絡(簡稱CycleGans)[1]是功能強大的計算機算法,具有改善數字生態系統的潛力。 它們能夠將信息從一種表示形式轉換爲另一種表示形式。 例如,當給定圖像時,他們可以對其進行模糊處理,着色(如果其最初是黑白的),提高其清晰度或填補缺失的空白。

​ 它們比傳統的設計/生產/寫作軟件更強大。 因爲CycleGans是機器學習算法,所以它們原則上可以學習實現所需的任何轉換。 相反,傳統的轉換軟件(例如Photoshop)通常經過編碼和開發以執行特定任務。 而且,CycleGans可以從現有的軟件獲得更高的性能,因爲它們可以從數據中學習並隨着收集的數據的增加而提高效果。

​ 瞭解CycleGans不同級別的工作原理和能力令人興奮,下面還介紹了有關人工智能如何以前所未有的方式影響我們日常的見解。

生成對抗網絡

​ 在討論CycleGans之前,讓我們簡要討論常規的生成對抗網絡。

​ 生成對抗網絡(簡稱GAN)[2]是能夠創建數據的機器學習算法。 當向他們提供諸如圖像,聲音或文本之類的信息時,他們學會生成新的外觀/聲音相似的輸出。 例如:給定一組人臉圖像,該算法可以自學(通過機器學習數據進行訓練)人臉的外觀,並能夠創建新人臉。

​ CycleGAN是傳統GAN的特殊變體。 他們也可以創建新的數據樣本,但是通過轉換輸入樣本來實現,而不是從頭開始創建。 換句話說,他們學會了從兩個數據源轉換數據。 這些數據可由提供此算法數據集的科學家或開發人員進行選擇。 在兩個數據源是狗的圖片和貓的圖片的情況下,該算法能夠有效地能夠將貓的圖像轉換爲狗的圖像,反之亦然。

他們是怎麼做到的呢?

什麼是CycleGan?

​ CycleGan是一個神經網絡,可以學習兩個域之間的兩個數據轉換函數。 其中之一是G(x)。 它將給定樣本x∈X轉換爲域Y的元素。第二個是F(y),它將樣本元素y∈Y轉換爲域X的元素。

兩個GAN,一個CycleGAN

​ 爲了學習F和G,使用了兩個傳統的GAN。 每個GAN內部都有一個生成器網絡,該網絡學習如何根據需要轉換數據。 GAN的第一生成器學習計算F,GAN的第二生成器學習計算G。

生成器函數G和F的定義。

​ 此外,每個生成器都與一個鑑別器相關聯,該鑑別器學習將實際數據y與合成數據G(x)區分開。

生成器函數G和F的定義。

​ 因此,CycleGAN由兩個生成器和兩個鑑別器組成,它們學習變換函數F和G。此結構顯示在下圖中:

CycleGan表示形式。 它由兩個GAN組成,它們學習兩個轉換。

每個GAN網絡的損失函數

​ 每個GAN生成器將通過最小化損失來學習其對應的變換函數(F或G)。 通過測量生成的數據與目標數據的差異(例如,將貓的生成圖像與真實貓的圖像進行比較的差異)來計算生成器損失。 差異越大,生成器將受到的處罰越高。

​ 鑑別器損失也用於訓練鑑別器,以擅長區分真實數據和合成數據。

​ 當這兩個設置在一起時,它們將彼此改善。 訓練生成器來欺騙鑑別器,並且鑑別器將被訓練爲從合成數據中更好地區分真實數據。 結果,生成器將非常擅長創建/轉換所需數據(學習所需轉換,例如F)。

​ 總體而言,GAN損失看起來像:

單個GAN損失的定義。 D是鑑別函數,G是生成函數。

​ 對於第二個生成器-鑑別器對,可以寫出類似的損失:

​ CycleGAN將嘗試最小化兩個GAN損失的總和,以變換F和G。

循環變換一致性

​ 理想情況下,我們希望CycleGAN學習週期一致的變換函數F和G。 這意味着,在給定輸入x的情況下,我們希望前後變換F(G(x))= x’準確地輸出原始輸入x。 從理論上講這應該是可能的,因爲在輸入x上應用G將在Y域中輸出一個值,而在輸入y上應用F將在X域中輸出一個值。

​ 週期一致性減少了這些網絡可以學習的映射的可能集合,並迫使F和G進行相反的轉換。 想象一下,學習的函數F通過修改貓的耳朵將貓圖片轉換爲狗圖片,而G通過修改貓的鼻子將貓圖片轉換爲貓圖片。 儘管這些轉換可以實現目標,但它們並不一致,因爲它們對數據應用了不同的更改。 使用週期一致性迫使F和G彼此相反。 這樣,通過修改貓的耳朵將貓圖片轉換爲狗圖片,通過以相反的方式將貓耳朵修改爲貓圖片。 如果這兩個函數是週期一致的,則它們也是更有意義的映射。

左:輸入x的循環一致性損失的直觀表示。 右:輸入y的循環一致性損失的直觀表示。

​ 僅使用GAN損失訓練CycleGAN並不能保證保持循環的一致性。 因此,額外的循環一致性損失被用於強制執行此屬性。 將該損失定義爲輸入值x與前向預測F(G(x))以及輸入值y與前向預測G(F(y ))之間的差異。 差異越大,預測與原始輸入的距離就越遠。 理想情況下,我們的網絡將這種損失降到最低。

週期一致性損失的定義。 等效於上圖中的視覺表示。

完整損失

​ 用於訓練網絡的完整CycleGan損失的函數定義爲兩個GAN損失和Cycle一致性損失之和。

​ 加權因子ƛ(稱爲lambda)用於控制循環一致性損失在全部損失中的權重。 權重越高,與其他損失相比,減少循環一致性損失就越有意義。

CycleGan全損的定義

​ 經過優化以最小化此功能的CycleGAN將能夠學習所需的變換F和G。有關機器學習的訓練細節,將留在我的後續文章中。

結果

​ CycleGans已經完成了多項任務的測試,並且能夠成功解決它們。 這些任務的一些示例是:

圖像轉換

輸入:原始花圖片。 輸出:改進的花卉圖片,並具有焦點和效果。

照片增強功能:CycleGans經過訓練,可以生成專業的花朵照片,並具有多個級別的聚焦和模糊度,並且可以使用任何照片編輯工具。

輸入:風景圖片。 輸出:將相同的風景替換到不同的藝術風格下。

圖像樣式轉換:CycleGans經過訓練可以改變圖片和藝術品的樣式。 例如,他們已經能夠將照片轉換成梵高風格的相同風景畫。

從冬天到夏天的風景圖片。

季節轉換:與樣式轉換類似,CycleGAN已用於轉換拍攝照片的季節。 結果令人驚訝,因爲許多圖像看起來像真實的圖片。

音頻轉換

音樂流派轉移:蘇黎世聯邦理工大學的研究人員已經能夠訓練CycleGAN,將經典的流行流派音樂歌曲轉換爲古典音樂作品[4]。

語音轉換:日本NTT傳播科學實驗室的研究人員在使用CycleGAN轉換定位者之間的語音註冊表時,無論性別如何,都顯示出令人印象深刻的結果[5]。

該作品的音頻樣本可以在他們的網站上找到。

其他

​ CycleGan官方紙質網站提供了在互聯網不同地方發現的其他CycleGAN用例的畫廊。 我希望這些引人入勝的示例能夠鼓勵您進一步瞭解CycleGans,併爲它們提供更多有用和有趣的應用程序。

CycleGan問題

​ 儘管CycleGAN在許多上述任務中都取得了明顯的成功,但仍顯示出100%的成功率。 這是他們當前的陷阱:

  1. 當從其訓練源中輸入數據時,CycleGans可能會提供意外結果(請參見下圖)。
  2. 需要進行幾何更改而不是顏色或對比度的任務會使輸入的更改最小。

用來變換馬匹和斑馬圖像的CycleGan並未提供人類的輸入,因此它可以生成任意變換。

​ 進一步的研究可能集中在改進這些領域的工作。 一些策略包括使用更廣泛和更多樣化的數據集,以及使用半監督學習方法。

最後的話

​ 我要感謝並祝賀加州大學伯克利分校AI研究實驗室的朱儁彥,Taesung Park,Phillip Isola和Alexei A.Efros在CycleGans方面所做的工作。 在他們的網站上,您將找到與該項目有關的更多信息。

​ 我鼓勵您看一下我的GANs存儲庫,在那裏您可以找到Python中不同類型的GANs實現,以及在PyTorch和TensorFlow中從頭開始進行中的CycleGan實現。
http://github.com/diegoalejogm/gans
​ 感謝您閱讀本文直到最後。 希望您在學習有關該主題的過程中玩得開心,下一個見。

引用

[1] Jun-Yan Zhu, Taesung Park, Phillip Isola, Alexei A. Efros, Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, https://arxiv.org/abs/1703.10593

[2] Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio, Generative Adversarial Networks, 2014, https://arxiv.org/abs/1406.2661

[3] Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, Timo Aila, Analyzing and Improving the Image Quality of StyleGAN, https://arxiv.org/abs/1912.04958

[4] Gino Brunner, Yuyi Wang, Roger Wattenhofer, Sumu Zhao, Symbolic Music Genre Transfer with CycleGAN, https://arxiv.org/abs/1809.07575)

[5] Takuhiro Kaneko, Hirokazu Kameoka, Kou Tanaka, Nobukatsu Hojo. CycleGAN-VC2: Improved CycleGAN-based Non-parallel Voice Conversion, https://arxiv.org/abs/1904.04631

翻譯:孟翔傑

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