本文轉載至知乎ID:Charles(白露未晞)知乎個人專欄
下載W3Cschool手機App,0基礎隨時隨地學編程>>戳此了解
參考文獻本文轉載至知乎ID:Charles(白露未晞)知乎個人專欄
下載W3Cschool手機App,0基礎隨時隨地學編程>>戳此了解
用深層卷積生成對抗網絡進行無監(jiān)督表示學習;
GenerativeAdversarialNets。
甘論文匯總:
https://github.com/zhangqianhui/AdversarialNetsPapers
聲明
本教程提供的所有源碼以及素材僅供學習交流使用,禁止商用/非法使用。
導語
發(fā)現之前兩篇關于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
原理簡介
關于生成對抗網絡的核心思想,請參考之前的文章:
順便補充一下甘訓練目標的數學語言描述:

公式解釋如下:
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)。同時本文增加了訓練數據量,使用了大約5萬張動漫頭像作為訓練數據。
具體而言,生成器結構為:

判別器結構為:

具體實現詳見相關文件中的源代碼。
模型訓練
一。訓練數據集
使用了大約5萬張動漫頭像作為訓練數據集,數據集源:
https://zhuanlan.zhihu.com/p/24767059。
二,模型訓練
修改config.json文件中的訓練數據集路徑:

在CMD顯示窗口顯示運行顯示train.py文件即可。
訓練截圖:

效果展示
Epoch0:

Epoch5:

Epoch10:

Epoch15:

Epoch20:

Epoch25:

Epoch29:

更多
代碼截止2018年7月4日測試無誤。
相關文件中提供了訓練好的模型以及調用模型的簡單腳本,直接在cmd窗口運行“ test.py ”文件即可生成動漫頭像:
