App下載

【Python】利用GAN生成動漫頭像

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

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

下載W3Cschool手機App,0基礎隨時隨地學編程>>戳此了解

參考文獻

用深層卷積生成對抗網絡進行無監(jiān)督表示學習;

GenerativeAdversarialNets。

甘論文匯總:

https://github.com/zhangqianhui/AdversarialNetsPapers


聲明

本教程提供的所有源碼以及素材僅供學習交流使用,禁止商用/非法使用。


導語

發(fā)現(xiàn)之前兩篇關于GAN的文章效果都比較一般,想試著優(yōu)化一下,訓練個像樣一些的模型,至少不能太丟GAN的臉,于是就有了這篇文章。

OK,讓我們愉快地開始吧?


相關文件

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

密碼:84ky


開發(fā)工具

蟒蛇中的版本:3.6.4

相關模塊:

pytorch模塊;

torchvision模塊;

PIL模塊;

以及一些Python中的中自帶的模塊。

PyTorch版本:

0.3.0


環(huán)境搭建

安裝的Python的中并添加到環(huán)境變量,PIP安裝需要的相關模塊即可。

補充說明:

PyTorch0.3.0不支持直接的PIP安裝(Windows)中中中。

有兩個選擇:

(1)安裝anaconda3后在anaconda3的環(huán)境下安裝(直接PIP安裝即可);

(2)使用編譯好的WHL文件安裝,下載鏈接為:

https://pan.baidu.com/s/1dF6ayLr#list/path=%2Fpytorch

原理簡介

關于生成對抗網絡的核心思想,請參考之前的文章:

【Python中的中】利用甘生成MNIST數(shù)據(jù)集。

順便補充一下甘訓練目標的數(shù)學語言描述:

公式解釋如下:

X:真實圖片;

Z:輸入?網絡的噪聲;

G(Z):G ^網絡生成的圖片;

d(X):真實圖片是否真實的概率;

d(G(X)):G ^網絡生成的圖片是否真實的概率。

正如之前的文章所述,生成網絡?的訓練目標是盡可能生成真實的圖片去欺騙判別網絡d;而判別網絡d的訓練目標就是盡可能把生成網絡?生成的圖片和真實的圖片區(qū)別開來,即訓練過程是一個動態(tài)的“博弈過程”。

因此,公式中的?網絡希望d(G(Z))盡可能得大; d網絡希望d(x)的的的盡可能得大,d(G(X))盡可能得小故而公式的訓練目標為

更多關于甘的原理介紹和應用可參考參考文獻 ”部分的內容。

具體模型

【的的的Python】利用GAN神奇生成寶貝一文中使用的網絡結構不同,本文使用了全卷積網絡結構(即不再加入全連接層FC)。同時本文增加了訓練數(shù)據(jù)量,使用了大約5萬張動漫頭像作為訓練數(shù)據(jù)。

具體而言,生成器結構為:

判別器結構為:

具體實現(xiàn)詳見相關文件中的源代碼。


模型訓練

一。訓練數(shù)據(jù)集

使用了大約5萬張動漫頭像作為訓練數(shù)據(jù)集,數(shù)據(jù)集源:

https://zhuanlan.zhihu.com/p/24767059。

二,模型訓練

修改config.json文件中的訓練數(shù)據(jù)集路徑:

在CMD顯示窗口顯示運行顯示train.py文件即可。

訓練截圖:

效果展示

Epoch0:

Epoch5:

Epoch10:

Epoch15:

Epoch20:

Epoch25:

Epoch29:

更多

代碼截止2018年7月4日測試無誤。

相關文件中提供了訓練好的模型以及調用模型的簡單腳本,直接在cmd窗口運行“ test.py ”文件即可生成動漫頭像:

0 人點贊