本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專(zhuān)欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
參考文獻(xiàn)本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專(zhuān)欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
用深層卷積生成對(duì)抗網(wǎng)絡(luò)進(jìn)行無(wú)監(jiān)督表示學(xué)習(xí);
GenerativeAdversarialNets。
甘論文匯總:
https://github.com/zhangqianhui/AdversarialNetsPapers
聲明
本教程提供的所有源碼以及素材僅供學(xué)習(xí)交流使用,禁止商用/非法使用。
導(dǎo)語(yǔ)
發(fā)現(xiàn)之前兩篇關(guān)于GAN的文章效果都比較一般,想試著優(yōu)化一下,訓(xùn)練個(gè)像樣一些的模型,至少不能太丟GAN的臉,于是就有了這篇文章。
OK,讓我們愉快地開(kāi)始吧?
相關(guān)文件
百度網(wǎng)盤(pán)下載鏈接:https://pan.baidu.com/s/1t-d5wq3TeBWcVzTOoraPtQ
密碼:84ky
開(kāi)發(fā)工具
蟒蛇中的版本:3.6.4
相關(guān)模塊:
pytorch模塊;
torchvision模塊;
PIL模塊;
以及一些Python中的中自帶的模塊。
PyTorch版本:
0.3.0
環(huán)境搭建
安裝的Python的中并添加到環(huán)境變量,PIP安裝需要的相關(guān)模塊即可。
補(bǔ)充說(shuō)明:
PyTorch0.3.0不支持直接的PIP安裝(Windows)中中中。
有兩個(gè)選擇:
(1)安裝anaconda3后在anaconda3的環(huán)境下安裝(直接PIP安裝即可);
(2)使用編譯好的WHL文件安裝,下載鏈接為:
https://pan.baidu.com/s/1dF6ayLr#list/path=%2Fpytorch
原理簡(jiǎn)介
關(guān)于生成對(duì)抗網(wǎng)絡(luò)的核心思想,請(qǐng)參考之前的文章:
【Python中的中】利用甘生成MNIST數(shù)據(jù)集。
順便補(bǔ)充一下甘訓(xùn)練目標(biāo)的數(shù)學(xué)語(yǔ)言描述:

公式解釋如下:
X:真實(shí)圖片;
Z:輸入?網(wǎng)絡(luò)的噪聲;
G(Z):G ^網(wǎng)絡(luò)生成的圖片;
d(X):真實(shí)圖片是否真實(shí)的概率;
d(G(X)):G ^網(wǎng)絡(luò)生成的圖片是否真實(shí)的概率。
正如之前的文章所述,生成網(wǎng)絡(luò)?的訓(xùn)練目標(biāo)是盡可能生成真實(shí)的圖片去欺騙判別網(wǎng)絡(luò)d;而判別網(wǎng)絡(luò)d的訓(xùn)練目標(biāo)就是盡可能把生成網(wǎng)絡(luò)?生成的圖片和真實(shí)的圖片區(qū)別開(kāi)來(lái),即訓(xùn)練過(guò)程是一個(gè)動(dòng)態(tài)的“博弈過(guò)程”。
因此,公式中的?網(wǎng)絡(luò)希望d(G(Z))盡可能得大; d網(wǎng)絡(luò)希望d(x)的的的盡可能得大,d(G(X))盡可能得小故而公式的訓(xùn)練目標(biāo)為:

更多關(guān)于甘的原理介紹和應(yīng)用可參考“ 參考文獻(xiàn) ”部分的內(nèi)容。
具體模型
與【的的的Python】利用GAN神奇生成寶貝一文中使用的網(wǎng)絡(luò)結(jié)構(gòu)不同,本文使用了全卷積網(wǎng)絡(luò)結(jié)構(gòu)(即不再加入全連接層FC)。同時(shí)本文增加了訓(xùn)練數(shù)據(jù)量,使用了大約5萬(wàn)張動(dòng)漫頭像作為訓(xùn)練數(shù)據(jù)。
具體而言,生成器結(jié)構(gòu)為:

判別器結(jié)構(gòu)為:

具體實(shí)現(xiàn)詳見(jiàn)相關(guān)文件中的源代碼。
模型訓(xùn)練
一。訓(xùn)練數(shù)據(jù)集
使用了大約5萬(wàn)張動(dòng)漫頭像作為訓(xùn)練數(shù)據(jù)集,數(shù)據(jù)集源:
https://zhuanlan.zhihu.com/p/24767059。
二,模型訓(xùn)練
修改config.json文件中的訓(xùn)練數(shù)據(jù)集路徑:

在CMD顯示窗口顯示運(yùn)行顯示train.py文件即可。
訓(xùn)練截圖:

效果展示
Epoch0:

Epoch5:

Epoch10:

Epoch15:

Epoch20:

Epoch25:

Epoch29:

更多
代碼截止2018年7月4日測(cè)試無(wú)誤。
相關(guān)文件中提供了訓(xùn)練好的模型以及調(diào)用模型的簡(jiǎn)單腳本,直接在cmd窗口運(yùn)行“ test.py ”文件即可生成動(dòng)漫頭像:
