幾天前,我們送走了2017年最后一場機器學習頂級會議NIPS 2017。雖然正會開完了,但它的熱度依然不減,近幾日,一個入圍NIPS 2017機器學習創意和設計(Workshop for Machine Learning for Creativity and Design)的趣味項目就在twitter上被玩壞了。據論智了解,作者Osamu Akiyama提出了一種用CNN把圖形轉成ASCII碼字符畫的方法,并在昨天更新了著色工具,這讓不少機器學習開發者都玩high了。
上圖即是ASCII碼字符畫著色前、著色后的效果。整個過程可分為兩部分,一是用CNN生成字符畫,二是用CNN著色。對于前者,作者已經在github上公開了數據集等資料,并在論文中詳細解釋了神經網絡的搭建方法;而對于后者,作者直接做了個填色工具,因此已經有字符畫的讀者可以去網站上傳圖像嘗試。
注意:該工具只在落廓清晰、畫面干凈的白底字符畫上有不錯效果,網站只支持圖片,不支持文本文檔。
項目思路
在論文中,作者首先介紹了CNN用的數據集。他從日本BBS 5channel和Shitaraba上收集了500張ASCII碼字符畫,并將之作為數據集。在這個過程中,他發現了一個不小的問題,就是許多人在上傳手工制作的字符畫時并不會援引原圖,這就使機器學習算法無法學習如何把線條轉換成文本。
為了解決這個問題,Osamu Akiyama使用了其他研究人員創建的一個神經網絡清理工具,能把ASCII碼字符畫逆向還原成線條圖。如上圖所示,這個工具不僅能刪除多余的字符,還能大膽恢復一些丟失的線條,使得整個畫面更連續流暢。通過把這些經還原的圖片作為輸入對神經網絡進行訓練,他的網絡能了解哪些字符是適合被用來創建圖片的。
Osamu Akiyama使用的是一個CNN,其中包括7個卷積層、3個最大池化層、兩個全連接(FC)層以及一個輸出層,整體架構受VGC網絡啟發,簡單來說,就是C64-C64-P-C128-C128-P-C256-C256-C256-P-FC4096-FC4096-O411。
經訓練,作者發現神經網絡生成的圖片可以與手工制成的ASCII碼字符畫一較高下,如下圖所示:
其中第一行是輸入圖像,第二、第三行是網上兩個字符畫生成工具生成的圖像,第四行是Osamu Akiyama神經網絡生成的圖像,而最后一行由專業制作字符畫的藝術家制作的圖像。可以看出,神經網絡在輪廓描繪和細節保留上都遠勝于其他對照組。
事實上,大篇幅介紹字符畫生成的目的就是為了最后的著色,經小編驗證,Osamu Akiyama的配套CNN著色器在線條明顯、畫面整潔簡單的圖像上效果更好。例如上圖中人工完成的最后一行字符畫,比起神經網絡的成果,它們的線條較不流暢,這會影響填色區間判定。此外,它們對頭發、衣服進行了“著色”處理,這在黑白顯示時可能更形象,但放進著色器后出來的效果就不盡如人意了。
生成ASCII碼字符畫
所有資料、數據可前往作者的github下載(https://github.com/OsciiArt/DeepAA)。
環境
-
TensorFlow(1.3.0)
-
Keras(2.0.8)
-
NumPy (1.13.3)
-
Pillow (4.2.1)
-
Pandas (0.18.0)
-
Scikit-learn (0.19.0)
-
h5py (2.7.1)
-
模型下載地址(下載后放入目錄中的model):drive.google.com/file/d/0B90WglS_AQWebjBleG5uRXpmbUE/view
-
訓練數據地址(下載后將提取的目錄放入目錄中的data):drive.google.com/file/d/0B90WglS_AQWebjBleG5uRXpmbUE/view
如何運行
更改output.py的第15行代碼:
-
image_path = 'sample images/original images/21 original.png'# put the path of the image that you convert.
改成你使用的圖像文件的路徑。注意:圖像必須是黑灰色線條畫。
之后運行output.py,生成的圖像會在output/處顯示。
如果你想用輕型模型,你可以把output.py的第13、14行改為
-
model_path = "model/model_light.json"
-
weight_path = "model/weight_light.hdf5"
填色效果演示
正如之前提到的,昨天作者更新了新的CNN填色工具,可以為以上神經網絡生成的圖像著色。因為他還沒有公開這個工具的設計思路,所以小編在這里只放出PaintsChainer地址:paintschainer.preferred.tech/index_en.html。如網站所示,它只支持圖片上傳。
以下是論智君的幾種嘗試:
來源:谷歌搜索(盜圖)
生成圖片
來源:作者GitHub
生成圖片
來源:作者GitHub
生成圖片
調色圖片
調色圖片
小編色感堪憂,無法調出和諧的顏色,但根據這些圖我們也能直觀感受到,這跟黑白的ASCII碼字符畫簡直是兩個世界啊!
-
ASCII
+關注
關注
5文章
172瀏覽量
35046 -
機器學習
+關注
關注
66文章
8377瀏覽量
132405 -
cnn
+關注
關注
3文章
351瀏覽量
22168
原文標題:NIPS 2017:用卷積網絡生成ASCII碼字符畫并進行著色
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論