App下載

【Python】利用GAN生成動(dòng)漫頭像

猿友 2018-08-07 17:56:55 瀏覽數(shù) (9675)
反饋

本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄

下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解

參考文獻(xiàn)

用深層卷積生成對(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,讓我們愉快地開始吧?


相關(guān)文件

百度網(wǎng)盤下載鏈接:https//pan.baidu.com/s/1t-d5wq3TeBWcVzTOoraPtQ

密碼:84ky


開發(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ū)別開來(lái),即訓(xùn)練過程是一個(gè)動(dòng)態(tài)的“博弈過程”。

因此,公式中的?網(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)詳見相關(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)漫頭像:

0 人點(diǎn)贊