0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用CNN把圖形轉(zhuǎn)成ASCII碼字符畫的方法,并更新了著色工具

zhKF_jqr_AI ? 2018-01-03 09:01 ? 次閱讀

幾天前,我們送走了2017年最后一場機(jī)器學(xué)習(xí)頂級會議NIPS 2017。雖然正會開完了,但它的熱度依然不減,近幾日,一個(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)有字符畫的讀者可以去網(wǎng)站上傳圖像嘗試。

注意:該工具只在落廓清晰、畫面干凈的白底字符畫上有不錯(cuò)效果,網(wǎng)站只支持圖片,不支持文本文檔。

項(xiàng)目思路

在論文中,作者首先介紹了CNN用的數(shù)據(jù)集。他從日本BBS 5channel和Shitaraba上收集了500張ASCII碼字符畫,并將之作為數(shù)據(jù)集。在這個(gè)過程中,他發(fā)現(xiàn)了一個(gè)不小的問題,就是許多人在上傳手工制作的字符畫時(shí)并不會援引原圖,這就使機(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ò)的成果,它們的線條較不流暢,這會影響填色區(qū)間判定。此外,它們對頭發(fā)、衣服進(jìn)行了“著色”處理,這在黑白顯示時(shí)可能更形象,但放進(jìn)著色器后出來的效果就不盡如人意了。

生成ASCII碼字符畫

所有資料、數(shù)據(jù)可前往作者的github下載(https://github.com/OsciiArt/DeepAA)。

環(huán)境

  • 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

  • 訓(xùn)練數(shù)據(jù)地址(下載后將提取的目錄放入目錄中的data):drive.google.com/file/d/0B90WglS_AQWebjBleG5uRXpmbUE/view

如何運(yùn)行

更改output.py的第15行代碼:


	
  1. image_path = 'sample images/original images/21 original.png'# put the path of the image that you convert.

改成你使用的圖像文件的路徑。注意:圖像必須是黑灰色線條畫。

之后運(yùn)行output.py,生成的圖像會在output/處顯示。

如果你想用輕型模型,你可以把output.py的第13、14行改為


	
  1. model_path = "model/model_light.json"

  2. weight_path = "model/weight_light.hdf5"

填色效果演示

正如之前提到的,昨天作者更新了新的CNN填色工具,可以為以上神經(jīng)網(wǎng)絡(luò)生成的圖像著色。因?yàn)樗€沒有公開這個(gè)工具的設(shè)計(jì)思路,所以小編在這里只放出PaintsChainer地址:paintschainer.preferred.tech/index_en.html。如網(wǎng)站所示,它只支持圖片上傳。

以下是論智君的幾種嘗試:

來源:谷歌搜索(盜圖)

生成圖片

來源:作者GitHub

生成圖片

來源:作者GitHub

生成圖片

調(diào)色圖片

調(diào)色圖片

小編色感堪憂,無法調(diào)出和諧的顏色,但根據(jù)這些圖我們也能直觀感受到,這跟黑白的ASCII碼字符畫簡直是兩個(gè)世界啊!


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • ASCII
    +關(guān)注

    關(guān)注

    5

    文章

    171

    瀏覽量

    34946
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131838
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    349

    瀏覽量

    21952

原文標(biāo)題:NIPS 2017:用卷積網(wǎng)絡(luò)生成ASCII碼字符畫并進(jìn)行著色

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    漢字轉(zhuǎn)換程序,字符串轉(zhuǎn)換為16進(jìn)制軟件,ascii碼查詢工具

    漢字轉(zhuǎn)換程序,字符串轉(zhuǎn)換為16進(jìn)制軟件,ascii碼查詢工具,這是編程人員必的小工具。。[/
    發(fā)表于 06-30 09:58

    請問如何實(shí)現(xiàn)一串ASCII碼字符串的異或校驗(yàn)和

    如題如何實(shí)現(xiàn)一串ASCII碼字符串的異或校驗(yàn)和例如:$1.2,324.3,123,4*計(jì)算$和*之間的異或校驗(yàn)和 最好有框圖 謝謝大家
    發(fā)表于 04-10 11:06

    ASCII 碼表

    ASCII碼大致由三部分組成: 1、ASCII 打印字符:數(shù)字 32–126 分配給能在鍵盤上找到的字符,當(dāng)您查看或打印文檔時(shí)就會出現(xiàn)。注
    發(fā)表于 09-19 12:02

    ASCII數(shù)字與字符串轉(zhuǎn)換問題。

    本帖最后由 5612355653 于 2016-10-14 09:01 編輯 大神們好:請問:1、如何將10進(jìn)制數(shù)字1234轉(zhuǎn)換成16進(jìn)制ASCII碼字符串31 32 33 34顯示?2、如何將10進(jìn)制字符串1234轉(zhuǎn)換成
    發(fā)表于 10-14 08:36

    LABVIEW串口收到ASCII碼,如何轉(zhuǎn)成十進(jìn)制顯示

    LABVIEW串口收到ASCII碼,如何轉(zhuǎn)成十進(jìn)制顯示。注:LABVIEW串口收到字符串,正常顯示為ASCII碼,顯示控件選擇16進(jìn)制可以顯示16進(jìn)制
    發(fā)表于 07-14 09:45

    RISC-V MCU IDE MRS(MounRiver Studio)開發(fā)之:設(shè)置工程編碼字符

    MounRiver Studio(MRS)為例,修改工程編碼字符集的方法如下: 點(diǎn)擊工具欄工程屬性配置按鈕,在彈出的窗口中點(diǎn)擊Resource選項(xiàng),在右側(cè)Text file encoding中點(diǎn)擊Other
    發(fā)表于 11-23 10:20

    字符串與ASCII碼字符串的相互轉(zhuǎn)換

    本帖最后由 貓仔靜2019 于 2022-8-24 10:05 編輯 字符串與ASCII碼字符串的相互轉(zhuǎn)換
    發(fā)表于 08-24 10:00

    信息交換用漢字編碼字符集 基本集GB 312-1980

    信息交換用漢字編碼字符集 基本集GB 312-1980 本標(biāo)準(zhǔn)規(guī)定漢字信息交換用的基本圖形字符及其二進(jìn)制編碼表示。安適用于一般漢字處理、漢字通信等系統(tǒng)之間的
    發(fā)表于 04-17 17:57 ?15次下載

    ascii碼是什么,ascii碼字符是什么

    ascii碼是什么,ascii碼字符是什么 ASCII碼:美國(國家)信息交換標(biāo)準(zhǔn)(代)碼,一種使用7個(gè)或8個(gè)二
    發(fā)表于 06-28 11:09 ?2w次閱讀
    <b class='flag-5'>ascii</b>碼是什么,<b class='flag-5'>ascii</b><b class='flag-5'>碼字符</b>是什么

    字符ASCII碼互轉(zhuǎn)軟件

    電子發(fā)燒友網(wǎng)站提供《字符ASCII碼互轉(zhuǎn)軟件.exe》資料免費(fèi)下載
    發(fā)表于 01-01 10:31 ?15次下載

    圖的著色方法解決排課沖突問題_安衛(wèi)鋼

    圖的著色方法解決排課沖突問題_安衛(wèi)鋼
    發(fā)表于 03-20 09:29 ?0次下載

    基于卷積神經(jīng)網(wǎng)絡(luò)CNN的車牌字符識別方法

    車牌字符識別是智能車牌識別系統(tǒng)中的重要組成部分。針對車牌字符類別多、背景復(fù)雜影響正確識別率的問題,提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的車牌字符識別方法。首先對車牌
    發(fā)表于 11-30 14:24 ?21次下載
    基于卷積神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>CNN</b>的車牌<b class='flag-5'>字符識別方法</b>

    如何利用Linux終端將圖像轉(zhuǎn)換成ASCII藝術(shù)?

    和其他字符ASCII 藝術(shù)是一個(gè)由可打印的 ASCII 字符組成的圖形?;旧希怯梢欢炎帜?、數(shù)字和特殊
    的頭像 發(fā)表于 06-29 13:53 ?1907次閱讀

    碼字符串分割方法

    我們寫代碼的時(shí)候,經(jīng)常會遇到這樣一個(gè)場景,那就是分割字符串。比如說一個(gè)字符串分成N個(gè),或者說按照N個(gè)字符分割。 我們今天就來看看怎么每隔N個(gè)字符
    的頭像 發(fā)表于 09-25 11:42 ?684次閱讀

    c語言如何字符變成ascii

    C語言是一種廣泛應(yīng)用的編程語言,用于開發(fā)各種類型的程序。在C語言中,字符可以表示為ASCII碼(美國信息交換標(biāo)準(zhǔn)碼)的整數(shù)值。ASCII碼是一種最常用的字符編碼方案,其中每個(gè)
    的頭像 發(fā)表于 11-26 10:34 ?3659次閱讀