開源|如何用反卷積網路實現人臉生成(附源代碼)

微信公眾號:全球人工智慧

來源: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中還有意義嗎?

TAG:人脸识别 | 卷积神经网络CNN | GitHub |