天天看點

AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外

本文來自AI新媒體量子位(QbitAI)

正在研究機器學習的全棧碼農Dendrick Tan在部落格上釋出了一份教程+代碼:用PyTorch實作将色塊拼湊成的圖檔,轉換為一幅Bob Ross風格的畫作。

說到Bob Ross,這頭蓬松的秀發你可能有點印象……

AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外

他在電視節目《歡樂畫室》上教了11年畫畫,還推出了同名的美術用品品牌,也出版了不少教材。

他的畫,基本上是這個風格:

AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外
AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外
AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外

量子位今天要介紹的這個教程,就叫drawlikebobross。

drawlikebobross項目的目标是,将一張色塊拼湊而成的圖檔轉變成(看起來有點像)Bob Ross油畫風格的圖像,如下圖所示:

AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外

在我們開始訓練網絡之前,首先需要擷取資料來建構資料集。幸運的是,通過谷歌搜尋,我在twoinchbrush網站上找到了一個關于Bob Ross作品的資料集。

這個網站的優點是它包含所有的Bob Ross作品,并按照如下格式列出:

<a>http://www.twoinchbrush.com/images/painting1.png</a> <a>http://www.twoinchbrush.com/images/painting2.png</a> <a>http://www.twoinchbrush.com/images/painting3.png</a> <a>http://www.twoinchbrush.com/images/paintingN.png</a>

開源代碼中的scrapper.sh就是用來完成這項工作的。

由于我們的目标是将色塊圖檔轉換為Bob Ross風格的圖像,是以我決定使用平均偏移濾波(mean shift filtering)來實作圖像平滑操作,将得到的色塊圖像作為輸入,原始圖像作為輸出。

AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外

為了最大限度地減少訓練時間,我将大部分原始圖像預處理成平滑的色塊圖檔,并存儲為HDF5格式。由于HDF5的快速可讀寫性能,我們能夠快速地測試不同的神經網絡結構,無需在訓練時間内多次重複預處理資料,這樣,就節省了大量的時間。

部落格介紹中對AAE的評價是:“我覺得本文中最有趣的想法是不利用變分推理方法,而是使用對抗訓練的方法将編碼器的輸出分布q(z | x)映射到任意先驗分布p(z)的概念。”

AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外

△ 對抗自動編碼器AAE的網絡結構

我們希望将色塊圖檔輸入到網絡,輸出為Bob Ross風格的圖像。具體實作流程如下。

AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外

△ 利用AAE網絡實作風格遷移

我選擇使用PyTorch來實作這個模型,是因為我一直在用它,也是因為與TensorFlow相比,這個架構的API很好用,且保持着很強的一緻性,自從用了它,效率提升了幾十倍。

該模型的訓練過程可以分為四個部分:

models.py:神經網絡的結構;

loader.py:資料載入操作;

trainer.py:訓練網絡的超參數配置;

train.py:訓練的啟動檔案;

通過這種方式,如果想改變神經網絡的結構,隻需要再次編輯models.py和trainer.py,很容易進行修改。

網絡訓練的時間越長,則網絡輸出Bob Ross風格的圖像效果越好。

AI跟Bob Ross學畫畫,雜亂色塊秒變風景油畫 | PyTorch教程+代碼是什麼?怎麼做?另外

由于我使用的是ThinkPad t460s,自帶的GPU計算性能不好,是以我在AWS上租了一個g2工作站,花了大約一天的時間,運作了2500步,來訓練這個模型。

drawlikebobross的開源代碼中還包含一個網頁App,歡迎下載下傳測試,告訴我們結果如何。

也強烈推薦想嘗試PyTorch的同學,花兩天時間用這樣一個小項目練手~

我們整理了文章所有相關連結,在量子位公衆号(QbitAI)對話界面回複“BobRoss”檢視。

本文作者:王新民

原文釋出時間:2017-04-09