天天看點

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

圖像到圖像轉化的任務是将一個給定圖像的特定方面改變到另一個方面,例如,将一個人的面部表情從微笑到皺眉改變(見圖1)。自從生成對抗網絡(GANs)的引入,這個任務經曆了很大的發展,從改變發色,改變邊緣圖以重建照片,到改變風景圖像的季節等。

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

圖1. 通過從RaFD資料集學習轉移知識,進而應用到CelebA圖像轉化的多域的圖像到圖像轉化結果。第一列和第六列顯示輸入圖像,其餘列是産生的StarGAN圖像。注意,圖像是由一個單一模型網絡生成的,面部表情标簽如生氣、高興、恐懼是從RaFD學習的,而不是來自CelebA。

給定來自兩個不同域的訓練資料,這些模型學習如何将圖像從一個域轉換到另一個域。文章中将術語表示為圖像中固有的特征,如頭發顔色、性别或年齡,屬性值作為屬性的特定值,例如黑色/金色/棕色的頭發顔色,或性别的男性/女性等。我們進一步将具有一系列相同屬性值的圖像設為一個域。例如,女性形象代表一個域,而男性代表另一個域。

幾個圖像資料集帶有許多标記屬性。例如,在CelebA資料集包含40個标簽的面部特征,如頭發的顔色、性别、年齡;RaFD資料集有8個表示面部表情的标簽,如“快樂”,“憤怒”和“悲傷”。我們可以根據這些屬性設定執行更有趣的任務,即多域圖像到圖像的轉換,我們根據多個域的屬性來改變圖像。圖1中,前5列展示了一個CelebA圖像可以根據任何四個域進行轉化,“金發”、“性别”、“年齡”、“蒼白的皮膚”。我們可以進一步延伸到從不同的資料集進行多個域的訓練,如共同訓練的CelebA和RaFD圖像來改變CelebA圖像的面部表情,通過訓練RaFD資料提取特征來作用于CelebA圖像,如在圖1的最右邊的列。

然而,現有的模型在多域圖像轉換任務中效率低下。這些模型的低效率是因為在學習K域的時候,需要訓練K(K−1)個生成器。圖2說明了如何在四個不同的域之間轉換圖像的時候,訓練十二個不同的生成器的網絡。即使它們可以從所有域圖像學習全局特征,如形狀特征學習,這種模型也是無效的,因為每個生成器不能充分利用整個訓練資料,隻能從K學習的兩個領域。未能充分利用訓練資料很可能會限制生成圖像的品質。此外,它們不能聯合訓練來自不同域的資料集,因為每個資料集隻有部分标記,本文在3.2章進一步讨論。

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

圖2. 我們的StarGAN模型與其他跨域模型的比較。(a)為處理多個域,應該在每一對域都建立跨域模型。(b)StarGAN用單個發生器學習多域之間的映射。該圖表示連接配接多個域的拓撲圖。

為解決這些問題我們提出了StarGAN,它是生成對抗網絡,能夠學習多個域之間的映射。如圖2(b)所示,文章中提出的模型接受多個域的訓練資料,并且隻使用一個生成器學習所有可用域之間的映射。這個想法是非常簡單的。其模型不是學習固定的圖像轉化(例如,從黑發到金發),而是輸入圖像和域資訊,學習如何靈活地将輸入圖像轉換到相應的域中。文章中使用一個标簽(二進制或one hot向量)代表域資訊。在訓練過程中,随機生成目标域标簽并訓練模型,以便靈活地将輸入圖像轉換到目标域。通過這樣做,可以控制域标簽并在測試階段将圖像轉換成任何所需的域。

本文還引入了一種簡單而有效的方法,通過将掩碼向量添加到域标簽,使不同資料集的域之間進行聯合訓練。文章中所提出的方法使模型可以忽略未知的标簽,并專注于有标簽的特定資料集。在這種方式下,此模型對任務能獲得良好的效果,如利用從RaFD資料集學到的特征來在CelebA圖像中合成表情,如圖1的最右邊的列。據本文中提及,這篇工作是第一個成功地完成跨不同資料集的多域圖像轉化。

總的來說,本文的貢獻如下:

提出了StarGAN,生成一個新的對抗網絡,隻使用一個單一的發生器和辨識器實作多個域之間的映射,有效地從所有域的圖像進行訓練;

展示了如何在多個資料集之間學習多域圖像轉化,并利用掩碼向量的方法使StarGAN控制所有可用的域标簽。

提供定性和定量的結果,對面部表情合成任務和面部屬性傳遞任務使用StarGAN,相比baseline模型顯示出它的優越性。

原則上,文中提出的模型可以應用于任何其他類型的域之間的轉換問題,例如,風格轉換(style transfer),這是未來的工作方向之一。

模型簡介

在單一資料集上的訓練

總得來看,StarGAN包括兩個子產品,一個鑒别器D和一個生成器G.(a)D學習如何區分真實圖像和僞造圖像,并将真實圖像分類到相應領域。 (b)G同時輸入圖像和目标域的标簽并生成假圖像,在輸入時目标域标簽被複制并與輸入圖像拼接在一塊。 (c)G嘗試從給定原始域标簽的假圖像重建原始圖像。 (d)G試圖生成與真實圖像不可區分的圖像同時又很容易被目标域D所區分出來。

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

在多資料集上的訓練

StarGAN同時在CelebA和RaFD兩個資料機上進行教育訓練的概述。 (a)〜(d)顯示了使用CelebA的訓練過程,(e)〜(h)顯示了使用RaFD的訓練過程。 (a),(e)鑒别器D學習如何區分真實圖像和僞造圖像,并僅将已知标簽的分類誤差最小化。 (b),(c),(f),(g)當掩碼向量(紫色)為[1,0]時,生成器G學習專注于CelebA标簽(黃色),而忽略RaFD标簽(綠色)來執行圖像到圖像的轉換,反之亦然,當掩碼矢量是[0,1]時。 (d),(h)G嘗試生成與真實圖像無法區分的圖像,同時圖像可以被D分類可為目标域。

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

實驗結果

在明星臉上的面部屬性遷移

這些圖檔是由StarGAN在CelebA 資料集上訓練後生成的。

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

在RaFD人臉資料集上的表情合成

這些圖檔是由StarGAN在RaFD人臉資料集上訓練後生成的。

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

在明星臉上的表情合成

這些圖檔是由StarGAN同時在RaFD和CelebA資料集上訓練後生成的。 

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

論文:StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

摘要

最近的研究表明,在兩個領域之間圖像到圖像轉化的研究領域取得了顯著的成功。然而,現有的方法在處理兩個以上圖像域時,可伸縮性和魯棒性有限,是以,要為每一對映像域都需要獨立建構不同的模型。

為了解決這個問題,我們提出了一個新的可擴充的StarGAN,可以利用同一個模型實作多個域圖像到圖像轉化。這樣一個統一的StarGAN模型體系允許在一個單一的網絡内同時訓練不同域的多個資料集。這使得StarGAN與現有的圖像轉化模型相比,StarGAN更加靈活,能将輸入圖像轉化到任意所需要的目标域圖像。實驗證明,我們的方法在面部屬性轉移和面部表情合成任務上的有效性。

Github 代碼

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

PyTorch代碼實作的《StarGAN: UnifiedGenerative Adversarial Networks for Multi-Domain Image-to-Image Translation》,StarGAN可以很靈活的将一副圖檔轉換成任何你想要的目标風格,這一切隻需要一個簡單的生成器和一個判别器。

【明星自動大變臉】最新StarGAN對抗生成網絡實作多領域圖像變換(附代碼)

Yunjey Choi  https://github.com/yunjey, 

Minje Choi  https://github.com/mjc92, 

Munyoung Kim  https://www.facebook.com/munyoung.kim.1291, 

Jung-Woo Ha  https://www.facebook.com/jungwoo.ha.921, 

Sung Kim  https://www.cse.ust.hk/~hunkim/, 

Jaegul Choo  https://sites.google.com/site/jaegulchoo/

Python 2.7 or 3.5+ https://www.continuum.io/downloads

PyTorch 0.2.0 http://pytorch.org/

TensorFlow 1.3+ https://www.tensorflow.org/  

由于RaFD并不是一個公開的資料集,是以你必須先在Radboud Faces Database website (http://www.socsci.ru.nl:8180/RaFD2/RaFD?p=main)這個網站上申請使用權限。然後你需要想這裡描述https://github.com/yunjey/StarGAN/blob/master/png/RaFD.md的那樣,來建立相應的目錄結構。

原文釋出時間為:2017-11-29

本文來自雲栖社群合作夥伴新智元,了解相關資訊可以關注“AI_era”微信公衆号