想把馬變成斑馬嗎怀愧?制作DIY動漫人物或名人?生成對抗網(wǎng)絡(luò)(GAN)是您最好的新朋友。
“Generative Adversarial Networks是過去10年機(jī)器學(xué)習(xí)中最有趣的想法。” ?-? Facebook AI人工智能研究總監(jiān)Yann LeCun
可以在此處找到本教程的第1部分:
這是關(guān)于使用生成對抗網(wǎng)絡(luò)創(chuàng)建深度生成模型的3部分教程的第二部分牢酵。這是關(guān)于變分自動編碼器的上一個(gè)主題的自然擴(kuò)展(可在此處找到)。我們將看到GAN在很大程度上優(yōu)于變分自動編碼器衙猪,但眾所周知難以使用馍乙。
在本教程中垫释,我們將解決以下主題:
- GAN的簡短回顧
- GAN應(yīng)用程序
- GAN問題
- 其他類型的GAN
- 構(gòu)建圖像GAN
- 編碼教程
本文的大部分內(nèi)容將涉及編碼GAN以及對GAN的一些更高級實(shí)現(xiàn)的廣泛介紹丝格。
本教程中使用的所有代碼都可以在我的GAN-Tutorial GitHub存儲庫中找到。
mrdragonbear / GAN-Tutorial
通過在GitHub上創(chuàng)建一個(gè)帳戶棵譬,為mrdragonbear / GAN-Tutorial開發(fā)做出貢獻(xiàn)显蝌。github.com
GAN的簡短回顧
對于那些已閱讀過第一部分的人,您可以跳過本節(jié)订咸,因?yàn)槲覍⒅厣闓AN如何使用我之前的熊貓實(shí)例機(jī)械地工作曼尊。
最近引入了生成對抗網(wǎng)(在過去5年左右)作為訓(xùn)練生成模型的新方法酬诀,即創(chuàng)建能夠生成數(shù)據(jù)的模型。它們由兩個(gè)“對抗”模式:生成模型摹捕獲的數(shù)據(jù)分發(fā)和判別模型d是估計(jì)的樣本從訓(xùn)練數(shù)據(jù)骆撇,而不是附帶的概率摹瞒御。既?和d可能是一個(gè)非線性映射函數(shù),諸如多層感知
在生成對抗網(wǎng)絡(luò)(GAN)中艾船,我們有兩個(gè)神經(jīng)網(wǎng)絡(luò)在零和游戲中相互對抗葵腹,其中第一個(gè)網(wǎng)絡(luò),即生成器屿岂,其任務(wù)是欺騙第二個(gè)網(wǎng)絡(luò),即鑒別器鲸匿。生成器創(chuàng)建“假的”數(shù)據(jù)爷怀,在這種情況下,是大熊貓的圖像带欢,試圖欺騙鑒別器將圖像分類為真正的熊貓运授。我們可以迭代地改進(jìn)這兩個(gè)網(wǎng)絡(luò),以便生成逼真的圖像以及執(zhí)行其他一些非城巧罚酷的應(yīng)用程序吁朦,其中一些我們將在本教程后面討論。
最初渡贾,圖像可能是相當(dāng)明顯的偽造逗宜,但隨著網(wǎng)絡(luò)變得更好,區(qū)分真實(shí)和虛假圖像變得更加困難空骚,即使對于人類也是如此纺讲!
這兩個(gè)網(wǎng)絡(luò)可以被認(rèn)為是黑盒子,代表一些任意復(fù)雜的功能囤屹,應(yīng)用于噪聲或真實(shí)數(shù)據(jù)熬甚。生成器的輸入是一些隨機(jī)噪聲,產(chǎn)生偽圖像肋坚,鑒別器的輸入既是偽樣本乡括,也是來自真實(shí)數(shù)據(jù)集的樣本。然后智厌,鑒別器做出關(guān)于所提供的圖像z是真實(shí)圖像D(z)= 1還是假圖像D(z)= 0的二元判定诲泌。
為了訓(xùn)練兩個(gè)網(wǎng)絡(luò),我們必須具有丟失功能峦剔,并且每個(gè)網(wǎng)絡(luò)的丟失功能取決于第二網(wǎng)絡(luò)档礁。為了訓(xùn)練網(wǎng)絡(luò),我們進(jìn)行反向傳播吝沫,同時(shí)凍結(jié)其他網(wǎng)絡(luò)的神經(jīng)元權(quán)重呻澜。
如果您無法理解正在發(fā)生的事情递礼,我建議您回過頭來閱讀第1部分,以更好地直觀了解此培訓(xùn)程序的工作原理羹幸。
重要的是要注意脊髓,通常,鑒別器和生成器網(wǎng)絡(luò)可以是任何形式的映射函數(shù)栅受,例如支持向量機(jī)将硝。正是GAN的這種概括通常被稱為圖靈學(xué)習(xí)。然而屏镊,在實(shí)踐中依疼,神經(jīng)網(wǎng)絡(luò)是最常見的,因?yàn)樗鼈兪侨我夥蔷€性函數(shù)的廣義函數(shù)逼近器而芥。
我現(xiàn)在將討論GAN的一些最酷的應(yīng)用程序律罢,然后再討論一些更高級的主題,以及GAN的代碼演練棍丐,旨在生成名人面孔和動漫角色误辑。
GAN應(yīng)用程序
在本節(jié)中,我將簡要介紹一下我在數(shù)據(jù)科學(xué)研究過程中發(fā)現(xiàn)的一些最有趣的GAN應(yīng)用歌逢。最常見的主題是:
- (有條件)合成? - 包括字體生成巾钉,Text2Image以及3D對象生成。
- 數(shù)據(jù)擴(kuò)充 ?- 旨在減少對標(biāo)記數(shù)據(jù)的需求(GAN僅用作增強(qiáng)其他模型的培訓(xùn)過程的工具)秘案。
- 風(fēng)格轉(zhuǎn)移和操縱 - ?面部老化砰苍,繪畫,姿勢估計(jì)和操作踏烙,修復(fù)和混合师骗。
- 信號超分辨率 -?人為地提高圖像的分辨率。
條件合成
在我看來讨惩,條件合成是相當(dāng)不可思議的辟癌。可以說荐捻,條件合成最迷人的應(yīng)用是Image2Text和Text2Image黍少,它能夠?qū)D片翻譯成文字(整個(gè)畫面說千言萬語),反之亦然处面。
這種應(yīng)用影響深遠(yuǎn)厂置,如果不僅僅是用于分析醫(yī)學(xué)圖像來描述圖像的特征,從而消除了醫(yī)生對圖像的主觀分析(這實(shí)際上是我目前正在嘗試用乳房X光檢查作為自己側(cè)面項(xiàng)目的一部分)魂角。
這也是另一種方式(假設(shè)我們給它的網(wǎng)絡(luò)提供它理解的單詞)昵济,并且圖像可以純粹從單詞生成。以下是用于執(zhí)行此文本到圖像條件合成的多條件GAN(MC-GAN)的示例:
用于將單詞翻譯成圖像的MC-GAN的實(shí)現(xiàn)。資料來源:https://arxiv.org/pdf/1902.06068.pdf
數(shù)據(jù)擴(kuò)充
這個(gè)是相當(dāng)不言自明的访忿。GAN像在查看VAE時(shí)一樣學(xué)習(xí)數(shù)據(jù)生成分布瞧栗。因此,我們可以從我們的發(fā)生器中采樣并生成其他樣本海铆,我們可以使用這些樣本來增強(qiáng)我們的訓(xùn)練集迹恐。因此,GAN提供了另外的方法來執(zhí)行數(shù)據(jù)增加(除了旋轉(zhuǎn)和扭曲圖像之外)卧斟。
風(fēng)格轉(zhuǎn)移和操縱
風(fēng)格轉(zhuǎn)移是不言自明的殴边。它涉及將一個(gè)圖像的“樣式”轉(zhuǎn)移到另一個(gè)圖像上。這與神經(jīng)風(fēng)格轉(zhuǎn)移非常相似珍语,我將在以后的文章中討論锤岸。
這對于背景場景非常有效,并且類似于圖像過濾廊酣,除了我們可以操縱實(shí)際圖像的各個(gè)方面(比較上面圖像中的云以用于輸入和輸出)能耻。
GAN如何在動物或水果等其他物體上表現(xiàn)?
看起來相當(dāng)不錯(cuò)亡驰!如果我對GAN一無所知,我可能會認(rèn)為馬的形象實(shí)際上是風(fēng)格轉(zhuǎn)移后的斑馬饿幅。
我們還可以改變風(fēng)景來操縱季節(jié)凡辱,這對于視頻游戲和虛擬現(xiàn)實(shí)模擬器等事物來說可能是有用的操作。
我們還可以使用GAN更改景深栗恩。
我們還可以操縱繪圖透乾,將它們變成真實(shí)的物體,相對容易(但是磕秤,這可能需要比我目前擁有的繪畫技能更多)乳乌。
自動駕駛汽車以與下圖相似的視角看世界,這樣可以以更加對比的方式(通常稱為語義地圖)觀察物體市咆。
我們甚至可以進(jìn)行風(fēng)格轉(zhuǎn)換來渲染圖像汉操,如俠盜獵車手的環(huán)境(適用于那里的任何粉絲)。
我們也可以以同樣的方式將白天轉(zhuǎn)移到夜晚蒙兰。
關(guān)于風(fēng)格轉(zhuǎn)移和圖像處理就足夠了磷瘤。這有很多很好的應(yīng)用,但我們已經(jīng)看到了該技術(shù)的幾種惡意使用搜变,人們冒充政治人物并制造虛假的電話交談采缚,電子郵件等。
這實(shí)際上是一個(gè)問題挠他,美國軍方正在開發(fā)一個(gè)新的取證領(lǐng)域來研究視頻和媒體的類似例子扳抽,以確定它們是否是由GAN產(chǎn)生的(哦,我的,我們生活的世界......)贸呢。
圖像超分辨率
圖像超分辨率(SR)是指從低分辨率(LR)圖像中恢復(fù)高分辨率(HR)圖像的過程镰烧,是計(jì)算機(jī)視覺和圖像處理中一類重要的圖像處理技術(shù)。
通常贮尉,該問題非常具有挑戰(zhàn)性并且固有地不適合拌滋,因?yàn)榭偸谴嬖趯?yīng)于單個(gè)LR圖像的多個(gè)HR圖像。
已經(jīng)應(yīng)用各種深度學(xué)習(xí)方法來處理SR任務(wù)猜谚,范圍從早期基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的方法(例如败砂,SRCNN)到最近使用GAN的有希望的SR方法(例如,SRGAN)魏铅。通常昌犹,使用深度學(xué)習(xí)技術(shù)的SR算法族在以下主要方面彼此不同:不同類型的網(wǎng)絡(luò)架構(gòu),不同類型的損失函數(shù)览芳,不同類型的學(xué)習(xí)原理和策略等斜姥。
實(shí)現(xiàn)這一目的的過程實(shí)際上非常復(fù)雜,所以我不會在本文中詳細(xì)介紹(盡管如果讀者感興趣我會在將來討論這個(gè)問題)沧竟。
可以在此處找到有關(guān)GAN的樣式傳輸?shù)娜娓攀觥?/p>
GAN問題
我們在前一篇文章中討論了GAN的一些最基本的問題铸敏,主要是需要大量的計(jì)算能力,大圖像訓(xùn)練的難度悟泵,靈敏度以及模態(tài)崩潰杈笔。
我想重申這些問題,因?yàn)榕嘤?xùn)GAN非常困難且耗時(shí)糕非。GAN還有很多其他問題蒙具,在學(xué)術(shù)界(至少在哈佛),有一個(gè)笑話朽肥,如果你想訓(xùn)練一個(gè)GAN禁筏,你會選擇一個(gè)毫無防備和天真的研究生為你做這個(gè)(我一直在這個(gè)笑話的接收端)。
振蕩
當(dāng)發(fā)生器和鑒別器共同尋找平衡時(shí)衡招,可能發(fā)生振蕩篱昔,但模型更新是獨(dú)立的。沒有理論上的收斂性保證蚁吝,事實(shí)上旱爆,結(jié)果可能會發(fā)生變化。
![GAN表現(xiàn)出消失的梯度問題
解決方案不是預(yù)先訓(xùn)練鑒別器窘茁,或者與發(fā)生器相比降低其學(xué)習(xí)率怀伦。也可以在每次迭代時(shí)更改生成器/鑒別器的更新次數(shù)(正如我在第1部分中所建議的那樣)。
很容易看出GAN何時(shí)融合山林,因?yàn)閮蓚€(gè)網(wǎng)絡(luò)的穩(wěn)定性將發(fā)生在中間地帶的某個(gè)地方(即其中一個(gè)網(wǎng)絡(luò)不占主導(dǎo)地位)房待。
GAN中Nash均衡的極小極大表達(dá)式
模態(tài)崩潰
發(fā)生器可以折疊鹃栽,以便始終生成相同的樣本塑陵。當(dāng)發(fā)生器被約束到小子空間并因此開始生成低分集的樣本時(shí),這可能發(fā)生。
以上生成的圖像中的五個(gè)看起來相同蕴茴,并且其他幾個(gè)看起來成對出現(xiàn)顶霞。
對此的解決方案是通過小批量區(qū)分(將整個(gè)批次呈現(xiàn)給鑒別器以供審查)或通過特征匹配(即垦巴,為低多樣性添加發(fā)生器懲罰)或使用多個(gè)GAN來鼓勵(lì)多樣性涎跨。
評估指標(biāo)
這是我在前一篇文章中沒有提到的。GAN仍然在非常定性的基礎(chǔ)上進(jìn)行評估 - 基本上宣虾,這個(gè)圖像看起來很好嗎惯裕?定義有些客觀的適當(dāng)指標(biāo)令人驚訝地具有挑戰(zhàn)性⌒逑酰“好”的發(fā)電機(jī)看起來如何蜻势?
對此沒有明確的解決方案,它仍然是一個(gè)活躍的研究領(lǐng)域鹉胖,并且具有特定領(lǐng)域的特定領(lǐng)域握玛。強(qiáng)分類模型通常用于判斷生成樣本的質(zhì)量。使用的兩個(gè)常見分?jǐn)?shù)是初始分?jǐn)?shù)和TSTR分?jǐn)?shù)(Train on Synthetic甫菠,Test on Real)挠铲。
Jonathan Hui有一篇相當(dāng)全面的文章,解釋了用于評估GAN性能的最常用指標(biāo)寂诱,您可以在此處找到:
GAN - 如何衡量GAN性能市殷?
在GAN中,發(fā)電機(jī)和鑒別器的目標(biāo)函數(shù)通常衡量它們的運(yùn)行情況......medium.com
在下一節(jié)中刹衫,我將概述一些從學(xué)術(shù)領(lǐng)域出現(xiàn)的最重要的GAN類型。
其他類型的GAN
還有許多其他類型的GAN已經(jīng)出現(xiàn)搞挣,用于解決特定于域的問題以及不同類型的數(shù)據(jù)(例如带迟,時(shí)間序列,圖像或普通的csv樣式數(shù)據(jù))囱桨。
我將在本節(jié)討論的GAN類型是:
- Wasserstein GAN
- CycleGAN
- 條件GAN(前面簡要討論過)
Wasserstein GAN
在我看來仓犬,這是最重要的GAN類型,所以要注意舍肠!
使用標(biāo)準(zhǔn)的GAN配方搀继,我們已經(jīng)觀察到訓(xùn)練非常不穩(wěn)定。鑒別器通常改進(jìn)太快以至于發(fā)電機(jī)不能趕上翠语,這就是為什么我們需要調(diào)節(jié)學(xué)習(xí)速率或在兩個(gè)網(wǎng)絡(luò)之一上執(zhí)行多個(gè)時(shí)期叽躯。為了獲得合適的輸出,我們需要仔細(xì)平衡肌括,即使這樣点骑,模態(tài)崩潰也是非常頻繁的。
信息來源: Arjovsky,M.黑滴,Chintala憨募,S。和Bottou袁辈,L.菜谣,2017年.Wasserstein GAN。arXiv preprint arXiv:1701.07875晚缩。
一般而言尾膊,生成模型試圖最小化實(shí)際和學(xué)習(xí)分布之間的距離(距離就是一切!)橡羞。Wasserstein(也稱為EM眯停,Earth-Mover)距離,非正式地指的是當(dāng)分布被解釋為在區(qū)域D上堆積一定量污垢的兩種不同方式.Wasserstein距離是轉(zhuǎn)動一堆的最小成本進(jìn)入另一個(gè); 假設(shè)成本是移動的污垢量乘以它移動的距離卿泽。
不幸的是莺债,在這種情況下,精確的計(jì)算是難以處理的签夭。但是齐邦,我們可以使用CNN來估算Wasserstein距離。在這里第租,我們重用了鑒別器措拇,其輸出現(xiàn)在是無界的。我們定義了與Wasserstein損失相對應(yīng)的自定義損失函數(shù):
這里有什么想法慎宾?我們可以盡可能地對一種類型進(jìn)行預(yù)測丐吓,對盡可能小的其他類型進(jìn)行預(yù)測。
Wasserstein論文的作者聲稱:
- 在訓(xùn)練期間更高的穩(wěn)定性趟据,更少需要仔細(xì)平衡發(fā)電機(jī)和鑒別器券犁。
- 有意義的損失度量,與樣本質(zhì)量很好地相關(guān)汹碱。
- 模態(tài)崩潰很少見粘衬。
在Keras實(shí)施Wasserstein GAN的提示。
- 使鑒別器輸出無限制咳促,即應(yīng)用線性激活稚新。
- 使用小權(quán)重進(jìn)行初始化,以便從一開始就不會遇到剪切問題跪腹。
- 請記住運(yùn)行足夠的鑒別器更新褂删。這在WGAN設(shè)置中至關(guān)重要。
- 您可以使用Wasserstein代理損失實(shí)施尺迂。
- 通過實(shí)現(xiàn)您自己的Keras約束來剪輯鑒別器權(quán)重笤妙。
這是一個(gè)復(fù)雜的主題冒掌,實(shí)施Wasserstein GAN并不是一項(xiàng)簡單的任務(wù)。如果您有興趣為個(gè)人項(xiàng)目尋求其中一項(xiàng)蹲盘,我建議您閱讀我之前提到的原始論文股毫。
CycleGAN
還記得我們看到一匹馬與斑馬交換的第一張圖片嗎?這是一個(gè)CycleGAN召衔。CycleGAN將樣式傳輸?shù)綀D像铃诬。這與進(jìn)行神經(jīng)風(fēng)格轉(zhuǎn)移基本相同,我將在以后的文章中介紹苍凛。
舉一個(gè)例子趣席,想象一下著名的,如金門大橋的照片醇蝴,然后從另一幅圖像中提取風(fēng)格宣肚,這可能是一幅著名的畫作,并以所述著名畫作的風(fēng)格重新繪制橋梁的圖片悠栓。 霉涨。
作為我的神經(jīng)傳遞學(xué)習(xí)文章的預(yù)告片,這是我之前做過的一個(gè)例子惭适。
結(jié)合著名的“神奈川大浪”與芝加哥天際線的風(fēng)格
將GAN應(yīng)用于這些類型的問題相對簡單笙瑟,它本質(zhì)上是圖像重建。我們使用第一個(gè)網(wǎng)絡(luò)G將圖像x轉(zhuǎn)換為y癞志。我們用另一個(gè)深度網(wǎng)絡(luò)F來反轉(zhuǎn)該過程以重建圖像往枷。然后,我們使用均方誤差MSE來指導(dǎo)G和F的訓(xùn)練凄杯。
這里的不同之處在于我們實(shí)際上并不關(guān)心重建圖像错洁,我們試圖混合兩個(gè)圖像的樣式。在GAN實(shí)現(xiàn)中戒突,將鑒別器D添加到現(xiàn)有設(shè)計(jì)中以指導(dǎo)發(fā)電機(jī)網(wǎng)絡(luò)更好地執(zhí)行墓臭。D充當(dāng)訓(xùn)練樣本和生成的圖像之間的批評者。通過這種批評妖谴,我們使用反向傳播來修改生成器以產(chǎn)生圖像,以解決由鑒別器識別的缺點(diǎn)酌摇。在這個(gè)問題中膝舅,我們引入了一個(gè)鑒別器D,以確保Y類似于梵高的繪畫窑多。
CycleGAN將圖片從一個(gè)域傳輸?shù)搅硪粋€(gè)域仍稀。在真實(shí)圖像和梵高繪畫之間轉(zhuǎn)換圖片。我們建立了三個(gè)網(wǎng)絡(luò)埂息。
- 生成器G將真實(shí)圖像轉(zhuǎn)換為梵高風(fēng)格圖片技潘。
- 生成器F將梵高風(fēng)格的圖片轉(zhuǎn)換為真實(shí)圖像遥巴。
- 鑒別器D用于識別真實(shí)或生成的梵高圖片。
對于反方向享幽,我們只是反轉(zhuǎn)數(shù)據(jù)流并構(gòu)建一個(gè)額外的鑒別器來識別真實(shí)圖像铲掐。
創(chuàng)建斑馬/馬圖像的此實(shí)現(xiàn)的示例如下所示。
有條件的GAN
與在VAE中一樣值桩,GAN可以簡單地用于生成特定的數(shù)據(jù)模式携栋。有條件的GAN的參考文獻(xiàn)可以在這里找到。
如果生成器和鑒別器都以某些額外信息c為條件咳秉,我們可以將GAN的生成模型擴(kuò)展到條件模型婉支。該c可以是任何類型的輔助信息,例如類標(biāo)簽或來自其他模態(tài)的數(shù)據(jù)澜建。我們可以通過將c作為附加輸入層饋入鑒別器和發(fā)生器來執(zhí)行調(diào)節(jié)向挖。
在生成器中,先前輸入噪聲p(z)和c在聯(lián)合隱藏表示中組合霎奢,并且對抗訓(xùn)練框架允許在如何組成該隱藏表示時(shí)具有相當(dāng)大的靈活性。在鑒別器中帝美,x和c表示為輸入和判別函數(shù)。
GAN故障排除
對于那些喜歡摘要的人晤硕,請簡要概述我們到目前為止討論過的所有故障排除方法悼潭。
[1]模型。確保正確定義模型疏橄。您可以通過培訓(xùn)香草圖像分類任務(wù)來單獨(dú)調(diào)試鑒別器占拍。
[2]數(shù)據(jù)。將輸入正確歸一化為[-1,1]捎迫。在這種情況下晃酒,確保使用tanh作為生成器的最終激活。
[3]噪音窄绒。嘗試從正態(tài)分布(不均勻)中采樣噪聲向量贝次。
[4]規(guī)范化。盡可能應(yīng)用BatchNorm彰导,并在單獨(dú)的小批量中發(fā)送真實(shí)和假冒樣本蛔翅。
[5]激活敲茄。使用LeakyRelu而不是Relu。
[6]平滑山析。應(yīng)用標(biāo)簽平滑以避免在更新鑒別器時(shí)過度自信堰燎,即將實(shí)際圖像的目標(biāo)設(shè)置為小于1。
[7]診斷盖腿。不斷監(jiān)測梯度的大小爽待。
[8]消失的漸變。如果鑒別器變得太強(qiáng)(鑒別器丟失= 0)翩腐,嘗試降低其學(xué)習(xí)速率或更頻繁地更新發(fā)生器鸟款。
現(xiàn)在讓我們進(jìn)入有趣的部分,實(shí)際上構(gòu)建一個(gè)GAN茂卦。
構(gòu)建圖像GAN
正如我們已經(jīng)多次討論過的那樣何什,培訓(xùn)GAN可能會令人沮喪且耗費(fèi)時(shí)間。我們將在Keras中介紹一個(gè)干凈的最小例子等龙。結(jié)果僅在概念證明級別上以增強(qiáng)理解处渣。在代碼示例中,如果不仔細(xì)調(diào)整參數(shù)蛛砰,則不會超過圖像生成的這個(gè)級別(見下文):
網(wǎng)絡(luò)拍攝圖像[H罐栈,W,C]并輸出[M]的矢量泥畅,**分類(分類)或單個(gè)分?jǐn)?shù)量化照片寫實(shí)荠诬。可以是任何圖像分類網(wǎng)絡(luò)位仁,例如ResNet或DenseNet柑贞。我們使用簡約的自定義架構(gòu)。
采用噪聲矢量[N]并輸出[H聂抢,W钧嘶,C]的圖像。網(wǎng)絡(luò)必須執(zhí)行綜合琳疏。同樣有决,我們使用非常簡約的自定義架構(gòu)。
在Keras中正確定義模型非常重要空盼,這樣可以在正確的時(shí)間固定各個(gè)模型的權(quán)重疮薇。
[1]定義鑒別器模型,并進(jìn)行編譯我注。
[2]定義生成器模型,無需編譯迟隅。
[3]定義由這兩者組成的整體模型但骨,在編譯之前將鑒別器設(shè)置為不可訓(xùn)練:
在最簡單的形式中励七,這就是訓(xùn)練GAN所需要做的一切
訓(xùn)練循環(huán)必須手動執(zhí)行:
[1]從訓(xùn)練集中選擇R實(shí)像。
[2] 通過對大小為N的隨機(jī)向量進(jìn)行采樣奔缠,并使用生成器從它們預(yù)測圖像來生成F偽圖像掠抬。
[3]使用train_on_batch訓(xùn)練鑒別器:分別為R真實(shí)圖像批次和F偽圖像調(diào)用它,地面實(shí)況分別為1和0校哎。
[4]采樣大小為N的新隨機(jī)向量两波。
[5]使用train_on_batch訓(xùn)練新模型的完整模型,目標(biāo)為1.這將更新生成器闷哆。
最后評論
在本教程中腰奋,我已經(jīng)介紹了GAN的高級主題,它們的架構(gòu)和當(dāng)前的應(yīng)用程序抱怔,以及簡單的GAN的編碼實(shí)現(xiàn)劣坊。在本教程的最后部分,我們將比較VAE屈留,GAN的性能以及VAE-GAN的實(shí)現(xiàn)局冰,以生成動畫圖像。
謝謝你的閱讀灌危!請繼續(xù)關(guān)注第3部分康二。
進(jìn)一步閱讀
在COLAB中運(yùn)行BigGAN:
更多代碼幫助+示例:
- https://www.jessicayung.com/explaining-tensorflow-code-for-a-convolutional-neural-network/
- https://lilianweng.github.io/lil-log/2017/08/20/from-GAN-to-WGAN.html
- https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html
- https://github.com/tensorlayer/srgan
- https://junyanz.github.io/CycleGAN/ https://affinelayer.com/pixsrv/
- https://tcwang0509.github.io/pix2pixHD/
有影響力的論文:
- DCGAN https://arxiv.org/pdf/1511.06434v2.pdf
- Wasserstein GAN(WGAN)https://arxiv.org/pdf/1701.07875.pdf
- 條件生成性對抗網(wǎng)(CGAN)https://arxiv.org/pdf/1411.1784v1.pdf
- 使用拉普拉斯金字塔的對抗網(wǎng)絡(luò)的深度生成圖像模型(LAPGAN)https://arxiv.org/pdf/1506.05751.pdf
- 使用生成對抗網(wǎng)絡(luò)(SRGAN)的照片真實(shí)單圖像超分辨率https://arxiv.org/pdf/1609.04802.pdf
- 使用周期一致的對抗網(wǎng)絡(luò)(CycleGAN)進(jìn)行不成對的圖像到圖像轉(zhuǎn)換https://arxiv.org/pdf/1703.10593.pdf
- InfoGAN:可解釋的代表性信息學(xué)習(xí)最大化生成性對抗網(wǎng)絡(luò)https://arxiv.org/pdf/1606.03657
- DCGAN https://arxiv.org/pdf/1704.00028.pdf
- 改進(jìn)了Wasserstein GAN的培訓(xùn)(WGAN-GP)https://arxiv.org/pdf/1701.07875.pdf
- 基于能量的生成性對抗網(wǎng)絡(luò)(EBGAN)https://arxiv.org/pdf/1609.03126.pdf
- 使用學(xué)習(xí)的相似性度量(VAE-GAN)自動編碼超出像素https://arxiv.org/pdf/1512.09300.pdf
- 對抗特征學(xué)習(xí)(BiGAN)https://arxiv.org/pdf/1605.09782v6.pdf
- 堆疊生成對抗網(wǎng)絡(luò)(SGAN)https://arxiv.org/pdf/1612.04357.pdf
- StackGAN ++:堆疊生成對抗網(wǎng)絡(luò)的逼真圖像合成https://arxiv.org/pdf/1710.10916.pdf
- 通過對抗訓(xùn)練(SimGAN)學(xué)習(xí)模擬和非監(jiān)督圖像https://arxiv.org/pdf/1612.07828v1.pdf