StarGAN 是去年 11 月由香港科技大學(xué)、新澤西大學(xué)和韓國大學(xué)等機(jī)構(gòu)的研究人員提出的一個(gè)圖像風(fēng)格遷移模型,是一種可以在同一個(gè)模型中進(jìn)行多個(gè)圖像領(lǐng)域之間的風(fēng)格轉(zhuǎn)換的對(duì)抗生成方法。近日,有研究人員將 StarGAN 在 TensorFlow 上實(shí)現(xiàn)的全部代碼開源,相關(guān)論文獲 CVPR 2018 Oral。
看代碼之前,我們先來回顧一下 StarGAN 的原始論文。
StarGAN 對(duì)抗生成網(wǎng)絡(luò)實(shí)現(xiàn)多領(lǐng)域圖像變換
圖像到圖像轉(zhuǎn)換(image-to-image translation)這個(gè)任務(wù)是指改變給定圖像的某一方面,例如,將人的面部表情從微笑改變?yōu)榘櫭肌T谝肷蓪?duì)抗網(wǎng)絡(luò)(GAN)之后,這項(xiàng)任務(wù)有了顯著的改進(jìn),包括可以改變頭發(fā)顏色,改變風(fēng)景圖像的季節(jié)等等。
給定來自兩個(gè)不同領(lǐng)域的訓(xùn)練數(shù)據(jù),這些模型將學(xué)習(xí)如何將圖像從一個(gè)域轉(zhuǎn)換到另一個(gè)域。我們將屬性(attribute)定義為圖像中固有的有意義的特征,例如頭發(fā)顏色,性別或年齡等,并且將屬性值(attribute value)表示為屬性的一個(gè)特定值,例如頭發(fā)顏色的屬性值可以是黑色 / 金色 / 棕色,性別的屬性值是男性 / 女性。我們進(jìn)一步將域(domain)表示為共享相同屬性值的一組圖像。例如,女性的圖像可以代表一個(gè) domain,男性的圖像代表另一個(gè) domain。
一些圖像數(shù)據(jù)集帶有多個(gè)標(biāo)簽屬性。例如,CelebA 數(shù)據(jù)集包含 40 個(gè)與頭發(fā)顏色、性別和年齡等面部特征相關(guān)的標(biāo)簽,RaFD 數(shù)據(jù)集有 8 個(gè)面部表情標(biāo)簽,如 “高興”、“憤怒”、“悲傷” 等。這些設(shè)置使我們能夠執(zhí)行更有趣的任務(wù),即多域圖像到圖像轉(zhuǎn)換(multi-domain image-to-image translation),即根據(jù)來自多個(gè)域的屬性改變圖像。
圖 1:通過從 RaFD 數(shù)據(jù)集學(xué)習(xí)遷移知識(shí),應(yīng)用到 CelebA 的多域圖像到圖像轉(zhuǎn)換結(jié)果。第一列和第六列顯示輸入圖像,其余列是產(chǎn)生的 StarGAN 圖像。注意,圖像是由一個(gè)單一模型網(wǎng)絡(luò)生成的,面部表情標(biāo)簽如生氣、高興、恐懼是從 RaFD 學(xué)習(xí)的,而不是來自 CelebA。
在圖 1 中,前 5 列顯示了一個(gè) CelebA 的圖像是如何根據(jù) 4 個(gè)域(“金發(fā)”、“性別”、“年齡” 和 “白皮膚”)進(jìn)行轉(zhuǎn)換。我們可以進(jìn)一步擴(kuò)展到訓(xùn)練來自不同數(shù)據(jù)集的多個(gè)域,例如聯(lián)合訓(xùn)練 CelebA 和 RaFD 圖像,使用在 RaFD 上訓(xùn)練的特征來改變 CelebA 圖像的面部表情,如圖 1 最右邊的列所示。
然而,現(xiàn)有模型在這種多域圖像轉(zhuǎn)換任務(wù)中既效率低,效果也不好。它們的低效性是因?yàn)樵趯W(xué)習(xí) k 個(gè)域之間的所有映射時(shí),必須訓(xùn)練 k(k-1)個(gè)生成器。圖 2 說明了如何訓(xùn)練 12 個(gè)不同的生成器網(wǎng)絡(luò)以在 4 個(gè)不同的域中轉(zhuǎn)換圖像。
圖 2: StarGAN 模型與其他跨域模型的比較。(a)為處理多個(gè)域,應(yīng)該在每兩個(gè)域之間都建立跨域模型。(b)StarGAN 用單個(gè)生成器學(xué)習(xí)多域之間的映射。該圖表示連接多個(gè)域的拓?fù)鋱D。
為了解決這類問題,我們提出了StarGAN,這是一個(gè)能夠?qū)W習(xí)多個(gè)域之間映射的生成對(duì)抗網(wǎng)絡(luò)。如圖 2(b) 所示,我們的模型接受多個(gè)域的訓(xùn)練數(shù)據(jù),僅使用一個(gè)生成器就可以學(xué)習(xí)所有可用域之間的映射。
這個(gè)想法很簡單。我們的模型不是學(xué)習(xí)固定的轉(zhuǎn)換(例如,將黑頭發(fā)變成金色頭發(fā)),而是將圖像和域信息作為輸入,學(xué)習(xí)將輸入的圖像靈活地轉(zhuǎn)換為相應(yīng)的域。我們使用一個(gè)標(biāo)簽來表示域信息。在訓(xùn)練過程中,我們隨機(jī)生成一個(gè)目標(biāo)域標(biāo)簽,并訓(xùn)練模型將輸入圖像轉(zhuǎn)換為目標(biāo)域。這樣,我們可以控制域標(biāo)簽并在測(cè)試階段將圖像轉(zhuǎn)換為任何想要的域。
我們還介紹了一種簡單但有效的方法,通過在域標(biāo)簽中添加一個(gè)掩碼向量(mask vector)來實(shí)現(xiàn)不同數(shù)據(jù)集域之間的聯(lián)合訓(xùn)練。我們提出的方法可以確保模型忽略未知的標(biāo)簽,并關(guān)注特定數(shù)據(jù)集提供的標(biāo)簽。這樣,我模型就可以很好地完成任務(wù),比如利用從 RaFD 中學(xué)到的特征合成 CelebA 圖像的面部表情,如圖 1 最右邊的列所示。據(jù)我們所知,這是第一個(gè)在不同的數(shù)據(jù)集上成功地完成多域圖像轉(zhuǎn)換的工作。
總結(jié)而言,這個(gè)研究的貢獻(xiàn)如下:
提出 StarGAN,這是一個(gè)新的生成對(duì)抗網(wǎng)絡(luò),只使用一個(gè)生成器和一個(gè)鑒別器來學(xué)習(xí)多個(gè)域之間的映射,能有效地利用所有域的圖像進(jìn)行訓(xùn)練。
演示了如何通過使用 mask vector 來學(xué)習(xí)多個(gè)數(shù)據(jù)集之間的多域圖像轉(zhuǎn)換,使 StarGAN 能夠控制所有可用的域標(biāo)簽。
使用 StarGAN 在面部屬性轉(zhuǎn)換和面部表情合成任務(wù)提供了定性和定量的結(jié)果,優(yōu)于 baseline 模型
圖 3:StarGAN 的概觀,包含兩個(gè)模塊:一個(gè)鑒別器 D 和一個(gè)生成器 G。(a)D 學(xué)習(xí)區(qū)分真實(shí)圖像和假圖像,并將真實(shí)圖像分類到相應(yīng)的域。(b)G 接受圖像和目標(biāo)域標(biāo)簽作為輸入并生成假圖像。 (c)G 嘗試在給定原始域標(biāo)簽的情況下,從假圖像中重建原始圖像。(d)G 嘗試生成與真實(shí)圖像非常像的假圖像,并通過 D 將其分類為目標(biāo)域。
實(shí)驗(yàn)結(jié)果
圖4:CelebA 數(shù)據(jù)集上面部屬性轉(zhuǎn)換的結(jié)果對(duì)凱勒巴數(shù)據(jù)集。第1列顯示輸入圖像,后4列顯示單個(gè)屬性轉(zhuǎn)換的結(jié)果,最右邊的列顯示多個(gè)屬性的轉(zhuǎn)換結(jié)果。H:頭發(fā)的顏色;G:性別;A:年齡
圖5:RaFD 數(shù)據(jù)集上面部表情合成的結(jié)果
圖6:StarGAN-SNG 和 StarGAN-JNT 在 CelebA 數(shù)據(jù)集上的面部表情合成結(jié)果。
TensorFlow模型的實(shí)現(xiàn)
要求:
Tensorflow 1.8
Python 3.6
> python download.py celebA
下載數(shù)據(jù)集
> python download.py celebA
訓(xùn)練
python main.py --phase train
測(cè)試
python main.py --phase test
celebA 測(cè)試圖像和你想要的圖像同時(shí)運(yùn)行
預(yù)訓(xùn)練模型
下載celebA_checkpoint
結(jié)果 (128x128, wgan-gp)
女性
男性
-
數(shù)據(jù)集
+關(guān)注
關(guān)注
4文章
1205瀏覽量
24644 -
圖像轉(zhuǎn)換
+關(guān)注
關(guān)注
0文章
6瀏覽量
6151 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60499
原文標(biāo)題:【CVPR Oral】TensorFlow實(shí)現(xiàn)StarGAN代碼全部開源,1天訓(xùn)練完
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論