【明星自動大變臉,嬉笑怒罵加變性】最新StarGAN對抗生成網絡實現多領域圖像變換(附代碼)

2021-01-18 專知

點擊上方「專知」關注獲取專業AI知識!

【導讀】圖像之間的風格遷移和翻譯是近年來最受關注的人工智慧研究方向之一,這個任務在具有趣味性的同時也是很有挑戰的。相關的研究成果也層出不窮,有的甚至引起了全世界的廣泛討論。近日,香港科技大學、新澤西大學和 韓國大學等機構在 arXiv 上聯合發表了一篇研究論文,提出了在同一個模型中進行多個圖像領域之間的風格轉換的對抗生成方法StarGan,突破了傳統的只能在兩個圖像領域轉換的局限性。


▌視頻




▌詳細內容


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


圖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章進一步討論。


圖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同時在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在CelebA 數據集上訓練後生成的。


這些圖片是由StarGAN在RaFD人臉數據集上訓練後生成的。


這些圖片是由StarGAN同時在RaFD和CelebA數據集上訓練後生成的。 



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



▌摘要

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


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


▌Github 代碼


PyTorch代碼實現的《StarGAN: UnifiedGenerative Adversarial Networks for Multi-Domain Image-to-Image Translation》,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代碼依賴包

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/  


如何開始運行代碼1. 克隆代碼倉庫  

bash

$ git clonehttps://github.com/yunjey/StarGAN.git

$ cd StarGAN/

2. 下載數據集(i) CelebA數據集

bash

$ bashdownload.sh

(ii) RaFD數據集

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

3. 訓練 StarGAN(i) 使用CelebA訓練

bash

$ python main.py--mode='train' --dataset='CelebA' --cdim=5 --imagesize=128 --numepochs=20--numepochsdecay=10

(ii) 使用RaFD訓練

bash

$ python main.py--mode='train' --dataset='RaFD' --cdim=8 --imagesize=128 --numepochs=200--numepochsdecay=100

(iii) 同時使用CelebA和RaFD訓練

bash

$ python main.py--mode='train' --dataset='Both' --cdim=5 --c2dim=8 --imagesize=256--numiters=200000 --numitersdecay=100000

4. StarGAN測試(i) 在明星臉上的面部屬性遷移

bash

$ python main.py--mode='test' --dataset='CelebA' --cdim=5 --imagesize=256 --testmodel=201000

(ii) 在RaFD人臉數據集上的表情合成

bash

$ python main.py--mode='test' --dataset='RaFD' --cdim=8 --imagesize=256 --testmodel=200200

(iii) 在明星臉上的表情合成

bash

$ python main.py--mode='test' --dataset='Both' --cdim=5 --c2dim=8 --imagesize=256--testmodel=200000


參考文獻

論文:

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

arXiv: https://arxiv.org/abs/1711.09020

github: https://github.com/yunjey/StarGAN

video: https://v.qq.com/x/page/t0510kq8mya.html


請關注專知公眾號(掃一掃最下面專知二維碼,或者點擊上方藍色專知),


人工智慧領域主題知識資料查看獲取【專知薈萃】人工智慧領域22個主題知識資料全集(入門/進階/論文/綜述/視頻/專家等)

請PC登錄www.zhuanzhi.ai或者點擊閱讀原文,註冊登錄專知,獲取更多AI知識資料

請關注我們的公眾號,獲取人工智慧的專業知識。掃一掃關注我們的微信公眾號。

請加專知小助手微信(Rancho_Fang),加入專知主題群(請備註主題類型:AI、NLP、CV、 KG等,或者加小助手諮詢入群)交流~

相關焦點

  • 【明星自動大變臉】最新StarGAN對抗生成網絡實現多領域圖像變換(附代碼)
    近日,香港科技大學、新澤西大學和韓國大學等機構在 arXiv 上聯合發表了一篇研究論文,提出了在同一個模型中進行多個圖像領域之間的風格轉換的對抗生成方法StarGan,突破了傳統的只能在兩個圖像領域轉換的局限性。
  • 揭秘騰訊變臉魔法,生成對抗網絡GAN的威力是什麼?
    漫畫臉的刷屏,是否讓你喜歡上了這種打破現實與幻想次元壁的變臉特效?明星也被這種新奇有趣的玩法吸引,比如張含韻,她變身王者峽谷裡的妲己,憑藉AI加成的美貌,收穫"妲己本己"的追捧。
  • 這隻狗,其實是貓變的:「擼貓神器」StarGAN v2來了!
    新智元報導 來源:arxiv 編輯:大明、鵬飛 【新智元導讀】最新的神奇變臉工具但是,StarGAN仍然需要學習每個域的確定性映射,這可能無法獲取數據分布的多模式性質。在給定源圖像的情況下,它不可避免地在每個域中產生相同的輸出。 StarGAN v2可以同時解決這兩方面的問題,可以跨多個域生成不同的圖像。該方法以StarGAN為基礎,用特定域的樣式代碼替換原來的域標籤,這些代碼可以表示特定域的各種形式。
  • 生成「貓狗版」川普,造假臉工具StarGANv2被玩壞,算法已開源
    最近他們在GitHub上公布了官方實現代碼,很快就被網友玩壞了。StarGANv2有兩個訓練數據集,一個針對人臉,一個針對動物臉。兩者本來是「井水不犯河水」,但是有人偏偏要混用,拿川普的臉輸入到動物臉預訓練模型裡。結果川普的臉轉換成貓就成了這樣:與狗臉合成又成了這樣,模型甚至給狗穿上了西服。安裝使用這麼有趣的模型,如何安裝呢?
  • STARGAN-多領域圖像
    Pix2Pix模型解決了有Pair對數據的圖像翻譯問題;CycleGAN解決了Unpaired數據下的圖像翻譯問題。但無論是Pix2Pix還是CycleGAN,都是解決了一對一的問題,即一個領域到另一個領域的轉換。當有很多領域要轉換了,對於每一個領域轉換,都需要重新訓練一個模型去解決。這樣的行為太低效了。本文所介紹的StarGAN就是將多領域轉換用統一框架實現的算法。
  • 不到200 行代碼,教你如何用 Keras 搭建生成對抗網絡(GAN)
    為此,本文將以深度卷積生成對抗網絡(Deep Convolutional GAN,DCGAN)為例,介紹如何基於 Keras 2.0 框架,以 Tensorflow 為後端,在 200 行代碼內搭建一個真實可用的 GAN 模型,並以該模型為基礎自動生成 MNIST 手寫體數字。
  • 「CVPR Oral」TensorFlow實現StarGAN代碼全部開源,1天訓練完
    新智元編譯 來源:github作者:Junho Kim 編譯:肖琴【新智元導讀】StarGAN 是去年 11 月由香港科技大學、新澤西大學和韓國大學等機構的研究人員提出的一個圖像風格遷移模型,是一種可以在同一個模型中進行多個圖像領域之間的風格轉換的對抗生成方法。
  • [CVPR 2020] StarGAN v2: 多域風格圖像合成,效果驚人,史上最強!
    基於StarGAN,並用我們提出的域特定風格代碼取代掉了StarGAN的域標籤,這個域特定風格代碼可以表示特定域的不同風格。為此,我們引入了兩個模塊,一個映射網絡(mapping network),一個風格編碼器(style encoder)。
  • 升級版StarGAN來襲!你想要的多目標域多風格圖像變換它都有
    另一種轉換的方式就類似於 CycleGAN [2] 那樣,從一個域簡單的轉換到另一個域,可以實現斑馬到馬,博美到吉娃娃這種單一的轉換,如果要實現博美到薩摩這種變換,往往需要重新設計一組生成器。那麼由 N 中風格圖像的轉換的話,就需要設計 N×(N−1)  種生成器,這顯然是不合理的。上述分析的兩個問題就是圖像翻譯任務下的兩個需要解決的問題。
  • 生成對抗網絡的最新研究進展
    8.自我關注機制「Self Attention GANs」的作者聲認為,用於生成圖像的卷積著眼於局部傳播的信息。也就是說,由於接受領域有限,這些卷積錯過了全局關係。自我關注生成對抗網絡允許對圖像生成任務進行關注驅動的遠程依賴性建模。自我注意機制是對正常卷積運算的補充。全局信息(長距離相關性)有助於生成更高質量的圖像。網絡可以選擇忽略注意機制,或者將其與普通卷積一起考慮。要獲得詳細的解釋,你可以查看他們的論文。
  • 一文看懂生成對抗網絡
    Generative models(生成模型)現在被認為是能夠實現這一目標的最有前景的方法之一。Generative models通過輸入一大堆特定領域的數據進行訓練(比如圖像,句子,聲音等)來使得模型能夠產生和輸入數據相似的輸出。這一直覺的背後可以由下面名言闡述。「What I cannot create, I do not understand.」
  • 生成式對抗網絡GAN的高級議題
    生成對抗網絡(GAN)就是一個幫你實現的新朋友。"GAN是過去10年機器學習中最有趣的想法。"最近引入了生成對抗網作為訓練生成模型的新方法,即創建能夠生成數據的模型。它們由兩個"對抗"模式:生成模型G獲得數據和判別模型D來估計訓練數據提供的樣本的準確性。G和D可能是一個非線性映射函數,如多層感知。在生成對抗網絡(GAN)中,我們有兩個神經網絡在零和遊戲中相互對抗,其中第一個網絡,即生成器,其任務是欺騙第二個網絡,即鑑別器。
  • 基於生成對抗網絡的三維點雲自動修復
    為了在對點雲形狀修復補全中能保持形狀的精細結構信息,最近研究者提出了一種能夠自動修復補全三維點雲形狀的生成對抗網絡結構。針對形狀缺失的稠密點雲和稀疏點雲數據,該網絡在修復補全形狀缺失部分的同時能有效保持輸入點雲形狀的精細結構信息。《中國科學: 信息科學》在2020年第50卷第5期刊登了這一研究。
  • 十個生成模型(GANs)的最佳案例和原理 | 代碼+論文
    GANs最先是由蒙特婁大學的Ian Goodfellow提出,已在圖像生成和風格遷移等領域獲得了巨大的成功,充分展示了「無監督學習」技術的潛力。GANs是如何工作的?將這兩個網絡聯合訓練,經過大量回合「交鋒」後,鑑別器將無法區分生成樣本和實際數據。做個比喻,生成器就像是想製作一些高仿品的生產商,而鑑別器就像是試圖檢測出這些仿製品的警察。由於整個過程是自動完成的,僅受限於實際的計算能力,因此GANs可用來實現一些很有趣的功能。以下是一些用GANs完成的酷炫應用。
  • ACM MM最佳論文全文:通過多對抗訓練,從圖像生成詩歌
    儘管我們不要求格律、韻律或其他傳統的詩歌技術,但仍要有詩歌結構和詩歌語言。在本研究中,我們將這一素質定義為詩意。例如,詩歌的長度一般有限;與圖像描述相比,詩歌一般偏好特定的詞語;詩歌中的語句應與同一主題相關,保持一致。為了應對以上挑戰,我們收集了兩個人類註解的詩歌數據集,在一個系統中通過集成檢索和生成技術來研究詩歌創作。
  • GANs中的明星StarGAN:使用單一模型執行多個域的圖像轉換
    StarGAN這樣一個統一的模型體系架構讓我們可以同時訓練單個網絡中具有不同域的多個數據集,這導致StarGAN的圖像轉化結果比現有模型質量更高,並具有將輸入圖像靈活轉化成任何期望目標域的新穎能力。我們憑經驗證明了我們的方法在面部屬性轉移和面部表情合成任務上的有效性。上圖為在CelebA數據集上通過傳遞從RaFD數據集中學習到的知識,進行多領域圖像到圖像的轉換結果。
  • 乾貨|OpenCV看這篇就夠了,9段代碼詳解圖像變換基本操作
    現就職某世界100強企業的數據實驗室,從事數據科學相關技術領域的預研工作。來源 | 大數據(ID:hzdashuju)【導讀】OpenCV是一個以BSD許可證開源的、跨平臺的計算機視覺庫。它提供了Python、C++、Java、Matlab等多種程式語言接口。
  • 10 大深度學習架構:計算機視覺優秀從業者必備(附代碼實現)
    原標題:10 大深度學習架構:計算機視覺優秀從業者必備(附代碼實現) 選自Analytics Vidhya 作者:FAIZAN SHAIKH 的文章,總結了計算機視覺領域已經成效卓著的 10 個深度學習架構,並附上了每篇論文的地址連結和代碼實現。機器之心對該文進行了編譯,原文連結請見文末。 時刻跟上深度學習領域的最新進展變的越來越難,幾乎每一天都有創新或新應用。但是,大多數進展隱藏在大量發表的 ArXiv / Springer 研究論文中。
  • GAN(生成對抗網絡)萬字長文綜述
    GAN的基本介紹生成對抗網絡(GAN,Generative Adversarial Networks)作為一種優秀的生成式模型,引爆了許多圖像生成的有趣應用。GAN的基本概念GAN(Generative Adversarial Networks)從其名字可以看出,是一種生成式的,對抗網絡。再具體一點,就是通過對抗的方式,去學習數據分布的生成式模型。所謂的對抗,指的是生成網絡和判別網絡的互相對抗。
  • 用Keras搭建GAN:圖像去模糊中的應用(附代碼)
    這篇文章主要介紹在Keras中搭建GAN實現圖像去模糊。所有的Keras代碼可點擊這裡。可點擊查看原始出版文章和Pytorch實現。快速回憶生成對抗網絡GAN中兩個網絡的訓練相互競爭。這些只是對生成對抗網絡的一個簡單回顧,如果還是不夠明白的話,可以參考完整介紹。數據Ian Goodfellow首次使用GAN模型是生成MNIST數據。 而本篇文章是使用生成對抗網絡進行圖像去模糊。因此生成器的輸入不是噪聲,而是模糊圖像。