幾天前,我們送走了2017年最后一場機(jī)器學(xué)習(xí)頂級會(huì)議NIPS 2017。雖然正會(huì)開完了,但它的熱度依然不減,近幾日,一個(gè)入圍NIPS 2017機(jī)器學(xué)習(xí)創(chuàng)意和設(shè)計(jì)(Workshop for Machine Learning for Creativity and Design)的趣味項(xiàng)目就在twitter上被玩壞了。據(jù)論智了解,作者Osamu Akiyama提出了一種用CNN把圖形轉(zhuǎn)成ASCII碼字符畫的方法,并在昨天更新了著色工具,這讓不少機(jī)器學(xué)習(xí)開發(fā)者都玩high了。 上圖即是ASCII碼字符畫著色前、著色后的效果。整個(gè)過程可分為兩部分,一是用CNN生成字符畫,二是用CNN著色。對于前者,作者已經(jīng)在github上公開了數(shù)據(jù)集等資料,并在論文中詳細(xì)解釋了神經(jīng)網(wǎng)絡(luò)的搭建方法;而對于后者,作者直接做了個(gè)填色工具,因此已經(jīng)有字符畫的讀者可以去PaintsChainer上傳圖像嘗試。 注意:該工具只在落廓清晰、畫面干凈的白底字符畫上有不錯(cuò)效果,網(wǎng)站只支持圖片,不支持文本文檔。 項(xiàng)目思路在論文中,作者首先介紹了CNN用的數(shù)據(jù)集。他從日本BBS 5channel和Shitaraba上收集了500張ASCII碼字符畫,并將之作為數(shù)據(jù)集。在這個(gè)過程中,他發(fā)現(xiàn)了一個(gè)不小的問題,就是許多人在上傳手工制作的字符畫時(shí)并不會(huì)援引原圖,這就使機(jī)器學(xué)習(xí)算法無法學(xué)習(xí)如何把線條轉(zhuǎn)換成文本。 為了解決這個(gè)問題,Osamu Akiyama使用了其他研究人員創(chuàng)建的一個(gè)神經(jīng)網(wǎng)絡(luò)清理工具,能把ASCII碼字符畫逆向還原成線條圖。如上圖所示,這個(gè)工具不僅能刪除多余的字符,還能大膽恢復(fù)一些丟失的線條,使得整個(gè)畫面更連續(xù)流暢。通過把這些經(jīng)還原的圖片作為輸入對神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,他的網(wǎng)絡(luò)能了解哪些字符是適合被用來創(chuàng)建圖片的。 Osamu Akiyama使用的是一個(gè)CNN,其中包括7個(gè)卷積層、3個(gè)最大池化層、兩個(gè)全連接(FC)層以及一個(gè)輸出層,整體架構(gòu)受VGC網(wǎng)絡(luò)啟發(fā),簡單來說,就是C64-C64-P-C128-C128-P-C256-C256-C256-P-FC4096-FC4096-O411。 經(jīng)訓(xùn)練,作者發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)生成的圖片可以與手工制成的ASCII碼字符畫一較高下,如下圖所示: 其中第一行是輸入圖像,第二、第三行是網(wǎng)上兩個(gè)字符畫生成工具生成的圖像,第四行是Osamu Akiyama神經(jīng)網(wǎng)絡(luò)生成的圖像,而最后一行由專業(yè)制作字符畫的藝術(shù)家制作的圖像??梢钥闯觯窠?jīng)網(wǎng)絡(luò)在輪廓描繪和細(xì)節(jié)保留上都遠(yuǎn)勝于其他對照組。 事實(shí)上,大篇幅介紹字符畫生成的目的就是為了最后的著色,經(jīng)小編驗(yàn)證,Osamu Akiyama的配套CNN著色器在線條明顯、畫面整潔簡單的圖像上效果更好。例如上圖中人工完成的最后一行字符畫,比起神經(jīng)網(wǎng)絡(luò)的成果,它們的線條較不流暢,這會(huì)影響填色區(qū)間判定。此外,它們對頭發(fā)、衣服進(jìn)行了“著色”處理,這在黑白顯示時(shí)可能更形象,但放進(jìn)著色器后出來的效果就不盡如人意了。 生成ASCII碼字符畫所有資料、數(shù)據(jù)可前往作者的github(OsciiArt / DeepAA)下載。 環(huán)境
上述github、數(shù)據(jù)集、模型地址請?jiān)谖南铝粞曰蛩叫判【帯?br> 如何運(yùn)行 更改output.py的第15行代碼: image_path = 'sample images/original images/21 original.png' # put the path of the image that you convert. 改成你使用的圖像文件的路徑。注意:圖像必須是黑灰色線條畫。 之后運(yùn)行output.py,生成的圖像會(huì)在output/處顯示。 如果你想用輕型模型,你可以把output.py的第13、14行改為 model_path = "model/model_light.json"weight_path = "model/weight_light.hdf5" 填色效果演示正如之前提到的,昨天作者更新了新的CNN填色工具,可以為以上神經(jīng)網(wǎng)絡(luò)生成的圖像著色。因?yàn)樗€沒有公開這個(gè)工具的設(shè)計(jì)思路,所以我們暫時(shí)還不知道它的模型細(xì)節(jié)。但如網(wǎng)站所示,它只支持圖片上傳(有需要的讀者請找小編)。 以下是論智君的幾種嘗試: 來源:谷歌搜索(盜圖) 生成圖片 來源:作者Github 生成圖片 來源:作者Github 生成圖片 調(diào)色圖片 調(diào)色圖片 該工具提供了幾種著色風(fēng)格,你也可以手動(dòng)調(diào)色來讓你的字符畫更生動(dòng)自然。 |
|