摘要:生成你的明星臉介紹,叫做生成對抗網(wǎng)絡(luò)。改進損失函數(shù)為了訓(xùn)練過程穩(wěn)定,生成高質(zhì)量的圖像,論文中采用自定義梯度懲罰來代替對抗誤差損失其中表示真實和生成圖像之間均勻采樣的直線,試驗時。
StarGAN——生成你的明星臉 1 GAN 介紹
GAN,叫做生成對抗網(wǎng)絡(luò) (Generative Adversarial Network) 。其基本原理是生成器網(wǎng)絡(luò) G(Generator) 和判別器網(wǎng)絡(luò) D(Discriminator) 相互博弈。生成器網(wǎng)絡(luò) G 的主要作用是生成圖片,在輸入一個隨機編碼 (random code) z后,自動的生成假樣本 G(z) 。判別器網(wǎng)絡(luò) D 的主要作用是判斷輸入是否為真實樣本并提供反饋機制,真樣本則輸出 1 ,反之為 0 。在兩個網(wǎng)絡(luò)相互博弈的過程中,兩個網(wǎng)絡(luò)的能力都越來越高:G 生成的圖片越來越像真樣本,D 也越來越會判斷圖片的真假,然后我們在最大化 D 的前提下,最小化 D 對 G 的判斷能力,這實際上就是最小最大值問題,或者說二人零和博弈,其目標函數(shù)表達式:
其中表達式中的第一項 D(G(z)) 處理的是假圖像 G(z) ,我們盡量降低評分 D(G(z)) ;第二項處理的是真圖像 x ,此時評分要高。但是 GAN 并不是完美的,也有自己的局限性。比如說沒有用戶控制的能力和低分辨率與低質(zhì)量的問題。
為了提高 GAN 的用戶控制能力,人類進行了一些列的探索研究。比如 Pix2Pix 模型采用有條件的使用用戶輸入,使用成對的數(shù)據(jù) (paired data)?進行訓(xùn)練; CycleGAN 模型使用不成對的數(shù)據(jù) (unpaired data)?的就能訓(xùn)練 。但無論是 Pix2Pix 還是 CycleGAN ,都是解決了從一個領(lǐng)域到另一個領(lǐng)域的圖像轉(zhuǎn)換問題。當(dāng)有很多領(lǐng)域需要轉(zhuǎn)換時,對于每一個領(lǐng)域轉(zhuǎn)換,都需要重新訓(xùn)練一個模型去解決。目前,存在的模型處理多領(lǐng)域圖像生成任務(wù)時,學(xué)習(xí) k 個領(lǐng)域之間所有映射就必須訓(xùn)練 k * (k-1) 個生成器。如果訓(xùn)練一對一的圖像多領(lǐng)域生成任務(wù)時,主要會導(dǎo)致兩個問題:
訓(xùn)練低效,每次訓(xùn)練耗時很大。
訓(xùn)練效果有限,因為一個領(lǐng)域轉(zhuǎn)換多帶帶訓(xùn)練的話就不能利用其它領(lǐng)域的數(shù)據(jù)來增大泛化能力。
上圖中 (a) 模型說明如何訓(xùn)練 12 個不同生成器網(wǎng)絡(luò)以達到 4 個不同領(lǐng)域圖像之間轉(zhuǎn)換任務(wù)。很明顯每個生成器不能夠充分利用整個訓(xùn)練數(shù)據(jù),只能從 4 個領(lǐng)域中 2 個領(lǐng)域相互學(xué)習(xí),這樣就會生成圖片質(zhì)量不好。而上圖(b)中的模型就可以解決這些問題,該模型接受多個領(lǐng)域訓(xùn)練數(shù)據(jù),并僅使用一個生成器來學(xué)習(xí)多領(lǐng)域圖像之間映射關(guān)系。根據(jù)模型的長相將該模型稱為星形網(wǎng)絡(luò),外文名就是 StarGAN 。
上圖是根據(jù) StarGAN 模型訓(xùn)練出的效果。在同一種模型下,可以做多領(lǐng)域圖像之間的轉(zhuǎn)換,比如更換頭發(fā)顏色、更換表情、更換年齡等。
上圖是對 StarGAN 的簡單介紹,主要包含判別器 D 和生成器 G 。
(a)D 對真假圖片進行判別,真圖片判真,假圖片判假,真圖片被分類到相應(yīng)域。
(b)G 接受真圖片和目標域標簽并生成假圖片;
(c)G 在給定原始域標簽的情況下將假圖片重建為原始圖片(重構(gòu)損失);
(d)G 盡可能生成與真實圖像無法區(qū)分的圖像,并且通過 D 分類到目標域。
提出 StarGAN 網(wǎng)絡(luò)模型,僅使用一個 G 和 D 就可以實現(xiàn)多個領(lǐng)域之間圖像生成和訓(xùn)練。
采用 mask vector 方法控制所有可用域圖像標簽以實現(xiàn)訓(xùn)練集之間的多領(lǐng)域圖像轉(zhuǎn)換。
StarGAN?相對于基準模型,?在面部屬性轉(zhuǎn)移和面部表情合成的任務(wù)中有更好的效果?(具體數(shù)據(jù)請參看原論文中的實驗部分)
3 StarGAN首先描述 StarGAN 網(wǎng)絡(luò),在一個數(shù)據(jù)集中進行多領(lǐng)域的圖像轉(zhuǎn)換任務(wù);然后我們討論了如何使 StarGAN 能合并包含不同標簽的數(shù)據(jù)集以及對其中任意的標簽屬性靈活進行圖像轉(zhuǎn)換。
3.1 多領(lǐng)域圖像轉(zhuǎn)換訓(xùn)練一個生成器 G ,能夠多領(lǐng)域映射。將帶有領(lǐng)域標簽 c 的輸入圖像 x 轉(zhuǎn)換為輸出圖像 y,即?。隨機生成目標領(lǐng)域標簽 c 使得 G 能夠靈活的轉(zhuǎn)換輸入圖像,同時使用 D 控制多領(lǐng)域。這樣 D 就在圖像源和域標簽上產(chǎn)生概率分布,即。
使用對抗損失函數(shù)提高生成圖像質(zhì)量,達到 D 無法區(qū)分出來輸出圖像和生成圖像之間的差別:
根據(jù)輸入圖像 x 和目標領(lǐng)域標簽 c ,由 G 生成輸出圖像,同時 D 區(qū)分出真實圖像和生成圖像。將
作為輸入圖像 x 經(jīng)過 D 之后得到的可能性分布。生成器 G 使這個式子盡可能的小,而 D 則盡可能使其最大化。
對于一個輸入圖像 x 和目標分布標簽 c ,我們的目標是將 x 轉(zhuǎn)換為輸出圖像 y后能夠被正確分類為目標分布 c 。為了實現(xiàn)這一目標,我們在 D 之上添加一個輔助分類器,并在優(yōu)化 G 和 D 時采用目標域分類損失函數(shù)。簡單來說,我們將這個式子分解為兩部分:一個真實圖像的分布分類損失用于約束 D ,一個假圖像的分布分類損失用于約束 G 。其表達式如下所示:
其中,代表 D 計算出來的領(lǐng)域標簽的可能性分布。一方面,通過將這個式子最小化, D 將真實圖像 x 正確分類到與其相關(guān)分布 c" 。另一方面,假圖像的分類分布的損失函數(shù)定義如下:
即 G 使這個式子最小化,使得生成的圖像能夠被 D 判別為目標領(lǐng)域 c。
通過最小化對抗損失和分類損失, G 訓(xùn)練生成的圖像盡可能與真實圖像一樣,并且能夠被分類到正確的目標領(lǐng)域。然而,最小化這兩個損失函數(shù)不能保證?,?轉(zhuǎn)換后的圖像中,只改變領(lǐng)域差異的部分,?而保留輸入圖像中的其他內(nèi)容 。故對 G 使用循環(huán)一致性損失函數(shù) (cycle consistency loss) ,如下:
其中: G 以生成圖像 G(x,c) 以及原始輸入圖像領(lǐng)域標簽 c" 為輸入,努力重構(gòu)出原始圖像 x 。我們選擇L范數(shù)作為重構(gòu)損失函數(shù)。注意到我們兩次使用了同一個生成器,第一次將原始圖像轉(zhuǎn)換到目標領(lǐng)域的圖像,然后將生成的圖像重構(gòu)回原始圖像。
最終 G 和 D 的損失函數(shù)表示如下:
其中?_?和?_?是控制分類誤差和重構(gòu)誤差相對于對抗誤差的相對權(quán)重的超參數(shù)。在所有實驗中,我們設(shè)置。
為了 GAN 訓(xùn)練過程穩(wěn)定,生成高質(zhì)量的圖像,論文中采用自定義梯度懲罰來代替對抗誤差損失:
其中:?表示真實和生成圖像之間均勻采樣的直線,試驗時。
starGAN 的一個重要優(yōu)勢在于它能夠同時合并包含不同標簽的不同數(shù)據(jù)集,使得其在測試階段能夠控制所有的標簽。從多個數(shù)據(jù)集學(xué)習(xí)的問題在于標簽信息對每一個數(shù)據(jù)集而言只是部分已知。在 CelebA 和 RaFD 的例子中,前一個數(shù)據(jù)集包含諸如發(fā)色,性別等信息,但它不包含任何后一個數(shù)據(jù)集中包含的諸如開心生氣等表情標簽。這會引起問題,因為在將 G(x,c) 重構(gòu)回輸入圖像 x 時需要完整的標簽信息 c" 。
為了緩解這一問題,我們引入了向量掩碼 m,使 StarGAN 模型能夠忽略不確定的標簽,專注于特定數(shù)據(jù)集提供的明確的已知標簽。在 StarGAN 中我們使用 n 維的 one-hot 向量來代表 m ,n 表示數(shù)據(jù)集的數(shù)量。除此之外,我們將標簽的同一版本定義為一個數(shù)組:
其中:[·]表示串聯(lián),其中 c表示第 i 個數(shù)據(jù)集的標簽,已知標簽 c?的向量能用二值標簽表示二值屬性或者用 one-hot 的形式表示多類屬性。對于剩下的 n-1 個未 i 知標簽我們簡單的置為 0 。
利用多數(shù)據(jù)集訓(xùn)練 StarGAN 時,我們使用上面定義的?作為生成器的輸入。如此,生成器學(xué)會忽略非特定的標簽,而專注于指定的標簽。除了輸入標簽?,此處的生成器與單數(shù)據(jù)集訓(xùn)練的生成器網(wǎng)絡(luò)結(jié)構(gòu)一樣。另一方面我們也擴展判別器的輔助分類器的分類類別到到所屬聚集的所有標簽。最后,我們將我們的模型按照多任務(wù)學(xué)習(xí)的方式進行訓(xùn)練,其中,判別器只將已知標簽相關(guān)的分類誤差最小化即可。
3.3 訓(xùn)練數(shù)據(jù)處理以 celebA 數(shù)據(jù)為例,下載后的數(shù)據(jù)包括 label 文件和圖像。
文件的第一行為圖像的總數(shù):202599。
第二行為數(shù)據(jù)處理的類別,共 40 種,如下:
(1, "5_o_Clock_Shadow"), (2, "Arched_Eyebrows"), (3, "Attractive"), (4, "Bags_Under_Eyes"), (5, "Bald"), (6, "Bangs"), (7, "Big_Lips"), (8, "Big_Nose"), (9, "Black_Hair"), (10, "Blond_Hair"), (11, "Blurry"), (12, "Brown_Hair"), (13, "Bushy_Eyebrows"), (14, "Chubby"), (15, "Double_Chin"), (16, "Eyeglasses"), (17, "Goatee"), (18, "Gray_Hair"), (19, "Heavy_Makeup"), (20, "High_Cheekbones"), (21, "Male"), (22, "Mouth_Slightly_Open"), (23, "Mustache"), (24, "Narrow_Eyes"), (25, "No_Beard"), (26, "Oval_Face"), (27, "Pale_Skin"), (28, "Pointy_Nose"), (29, "Receding_Hairline"), (30, "Rosy_Cheeks"), (31, "Sideburns"), (32, "Smiling"), (33, "Straight_Hair"), (34, "Wavy_Hair"), (35, "Wearing_Earrings"), (36, "Wearing_Hat"), (37, "Wearing_Lipstick"), (38, "Wearing_Necklace"), (39, "Wearing_Necktie"), (40, "Young")
第三行及之后的每行為,圖像名,已經(jīng)對應(yīng)的 40 種類別的 label , label 值為 1 或 -1。
000001.jpg -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 14 總結(jié)與展望
通過本文學(xué)習(xí),您應(yīng)該初步了解 StarGAN 模型的網(wǎng)絡(luò)結(jié)構(gòu)和實現(xiàn)原理,以及關(guān)鍵部分代碼的初步實現(xiàn)。如果您對深度學(xué)習(xí) Tensorflow 比較了解,可以參考?Tensorflow版實現(xiàn)starGAN;如果您對pytorch框架比較熟悉,可以參考?pytorch實現(xiàn)starGAN;如果您想更深入的學(xué)習(xí)了解starGAN原理,可以參考?論文。
如果想體驗項目效果,您可以登陸 ?Mo?平臺,在?應(yīng)用中心?中找到?StarGAN,可以體驗以下五種特征["Black_Hair", "Blond_Hair", "Brown_Hair", "Male", "Young"] 的風(fēng)格變換??紤]到代碼較長,我們在StarGAN 項目源碼中對相關(guān)代碼做了詳細解釋。您在學(xué)習(xí)的過程中,遇到困難或者發(fā)現(xiàn)我們的錯誤,可以隨時聯(lián)系我們。
5 參考資料1.論文:https://arxiv.org/pdf/1711.09020.pdf?
2.博客:https://blog.csdn.net/stdcoutzyx/article/details/78829232
3.博客:https://www.cnblogs.com/Thinker-pcw/p/9785379.html
4.pytorch原版github地址:https://github.com/yunjey/StarGAN
5.tensorflow版github地址:https://github.com/taki0112/StarGAN-Tensorflow
6.Celeba數(shù)據(jù)集:https://www.dropbox.com/s/d1kjpkqklf0uw77/celeba.zip?dl=0
Mo(網(wǎng)址:momodel.cn)是一個支持 Python 的人工智能在線建模平臺,能幫助你快速開發(fā)、訓(xùn)練并部署模型。
Mo 人工智能俱樂部?是由網(wǎng)站的研發(fā)與產(chǎn)品設(shè)計團隊發(fā)起、致力于降低人工智能開發(fā)與使用門檻的俱樂部。團隊具備大數(shù)據(jù)處理分析、可視化與數(shù)據(jù)建模經(jīng)驗,已承擔(dān)多領(lǐng)域智能項目,具備從底層到前端的全線設(shè)計開發(fā)能力。主要研究方向為大數(shù)據(jù)管理分析與人工智能技術(shù),并以此來促進數(shù)據(jù)驅(qū)動的科學(xué)研究。
目前俱樂部每周六在杭州舉辦以機器學(xué)習(xí)為主題的線下技術(shù)沙龍活動,不定期進行論文分享與學(xué)術(shù)交流。希望能匯聚來自各行各業(yè)對人工智能感興趣的朋友,不斷交流共同成長,推動人工智能民主化、應(yīng)用普及化。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/20066.html
摘要:第一列和第六列顯示輸入圖像,其余列是產(chǎn)生的圖像。然而,現(xiàn)有的模型在多域圖像轉(zhuǎn)換任務(wù)中效率低下。該圖表示連接多個域的拓撲圖。在訓(xùn)練過程中,隨機生成目標域標簽并訓(xùn)練模型,以便靈活地將輸入圖像轉(zhuǎn)換到目標域。 圖像到圖像轉(zhuǎn)化的任務(wù)是將一個給定圖像的特定方面改變到另一個方面,例如,將一個人的面部表情從微笑到皺眉改變(見圖1)。自從生成對抗網(wǎng)絡(luò)(GANs)的引入,這個任務(wù)經(jīng)歷了很大的發(fā)展,從改變發(fā)色,改...
支持原作者,購買地址鏈接描述 概念 代理模式 代理模式(Proxy),為其他對象提供一種代理以控制對這個對象的訪問。 在現(xiàn)實生活中,可以找到很多代理模式使用的場景。明星都有經(jīng)紀人作為代理。如果請明星來演出,就要先同他的經(jīng)紀人溝通,談好相應(yīng)的細節(jié)與報酬。再交給明星。 需求:公司(Company)通過經(jīng)紀人(agent)找明星(start)開演唱會 //演唱會 var Concert = ...
摘要:然而,收到了自己的產(chǎn)品,大部分人卻一臉迷茫,我們能拿虛擬現(xiàn)實來干什么呢事實上,有很多領(lǐng)域已經(jīng)運用了虛擬現(xiàn)實的概念,我們可以相信,在不遠的將來,虛擬現(xiàn)實將會大放異彩。 帶給大眾無與倫比的真實感,VR虛擬現(xiàn)實已經(jīng)逐漸走進我們的生活中。然而,收到了自己的VR產(chǎn)品,大部分人卻一臉迷茫,我們能拿VR虛擬現(xiàn)實來干什么呢?事實上,有很多領(lǐng)域已經(jīng)運用了VR虛擬現(xiàn)實的概念,我們可以相信,在不遠的將來,V...
閱讀 1333·2021-10-14 09:50
閱讀 1625·2019-08-30 15:54
閱讀 1089·2019-08-30 11:22
閱讀 2986·2019-08-30 10:50
閱讀 1872·2019-08-29 18:39
閱讀 3125·2019-08-29 13:07
閱讀 2131·2019-08-28 17:54
閱讀 799·2019-08-26 17:44