開源|如何用反卷積網路實現人臉生成(附源代碼)
來源:Github 編輯: 王健
反卷積網路實現人臉生成
本目錄下有用於訓練反卷積網路以及與反卷積網路相交互的代碼,實驗基於Learning to Generate Chairs, Tables and Cars with Convolutional Networks這篇論文所提出的模型做了改進。
論文地址:[1411.5928] Learning to Generate Chairs, Tables and Cars with Convolutional Networks
能夠通過Radboud Faces Database數據集生成人臉。實驗所需工具為:Keras、NumPy、SciPy、tqdm以及 Python 3。
Radboud Faces Database數據集:Radboud Faces Database
Generating Faces with Deconvolution Networks這篇博客詳細地講解了本實驗的具體過程及原理。
地址:Generating Faces with Deconvolution Networks
訓練新模型
執行以下命令即可訓練一個新模型:
python3 faces.py train path/to/data
如果你的內存允許,你可以通過-d參數指定反卷積層的層數以生成更大的圖像。你也可以通過-b參數和-k參數分別調整批處理數量(batch size)和每一層的卷積核(kernels)的數量直到適應計算機內存,但是這些改變實際上可能會導致更差的結果或者更長的訓練時間。
本實驗中默認的反卷基層數是6,批處理數量是8,在Nvidia Titan X顯卡上(12GB)生成512x640的圖像需要一天稍多一點的時間。
生成圖像
在yaml文件中指定具體參數並執行以下命令,即可使用已訓練好的模型。
python3 faces.py generate -m path/to/model -o output/directory -f path/to/params.yaml
本實驗提供四種生成圖像的模式:
· single:生成單一圖像
· random:生成一個隨機圖像的集合
· drunk:與random模式類似,但是會生成更連續的圖像序列
· interpolate:指定的一系列關鍵幀,生成這些關鍵幀之間的圖像
在params目錄中有這些文件的示例,這些示例將有助於你理解怎樣格式化這些文件、分清哪些內容是可用的內容。
示例
在人臉和表情之間插值:
在不同的方向之間插值(此時模型不能進行學習):
隨機生成(使用drunk模式):
熱門文章推薦重磅|Google發布新開源圖像演算法工具Guetzli:壓縮35%的圖片大小仍保證高質量
重磅|3.15曝光的「人臉識別」技術真的那麼脆弱嗎?!
重磅|谷歌DeepMind將「記憶」植入機器學習,從而提高機器持續的自適應學習!
資源|28本必讀的經典機器學習/數據挖掘書籍(免費下載)
活動|12位AI大佬齊聚ACM TURC 2017-中國(已開始報名)
恐怖|50 億條用戶隱私信息泄露,嫌犯竟是互聯網名企工程師
乾貨|周志華揭開機器學習本質的57張PPT
重磅|百度PaddlePaddle發布最新API 從三大方面優化了性能
重磅|NVIDIA發布兩款"深度神經網路訓練"開發者產品:DIGITS 5 和 TensorRT
重磅|「薩德」——不怕!我國的人工智慧巡航導彈可破解
推薦閱讀:
※卷積神經網路提取圖像特徵時具有旋轉不變性嗎?
※cnn分類時圖片較大物體較圖片較小,大約1/16,要怎麼做?
※Krizhevsky等人是怎麼想到在CNN里用Dropout和ReLu的?
※深度圖像depth image作為CNN卷積神經網路的輸入層有什麼技巧?選用什麼網路模型能取得好效果?
※CNN和RNN風行之後,DBN/SAE/pre-train在deep learning中還有意義嗎?