當,程式設計師突然想畫畫,AI+機器人就該登場了
安妮 栗子 發自 凹非寺
量子位 出品 | 公眾號 QbitAI
人生總有那麼一些時候,你突然間想文藝一下。
比方畫一幅畫。
但,理想和現實之間,可能遠隔千山。比方,你其實沒有創作的靈感。以及,你其實沒有把靈感實現出來的基本技能。
每當這時,有人會妥協退縮,也有人會迎難而上。俗話說:“只要思想不滑坡,辦法總比困難多”。
今天,就是這樣一位不妥協的程式猿的故事。
澳大利亞人Jeremy Kraybill活了40多歲,突然對繪畫產生了興趣。橫亙在他面前的就是那兩個問題:既沒有藝術靈感,也沒有繪畫基礎。
但,他有技術。
先看結果。下面這幅畫,就是Jeremy的繪畫作品。為了完成這幅畫,他動用了人工智慧(神經網路)來產生創意,然後又動用了機械臂,把創意畫了出來。
這幅成品,看起來是不是有模有樣,還頗有大師神韻?實力演繹“不想當畫家的創始人不是好的軟體工程師”年度大戲。
然而,這也並不是一番坦途。
這篇文章就帶你真實還原AI設計、機械臂全自動作畫完整過程。對了,量子位還“採訪”了JK的“御用”機器人,問了問它這幾個月的修煉感受。
△ 大概就是這樣的畫風
從歪七扭八開始
一切都得始於靈感。
在這個出發點上就不能輸。不過,怎麼才能擁有大師級的創作靈感?
作為資深程式設計師,Jeremy立刻就想到,可以靠AI啊!
沒錯,現在的AI其實已經有了某種程度的“想象力”和“創造力”了。AI的靈感來源,其實有點像那句話:模仿是藝術家向藝術家最高階別的致敬。
為了生成畫作,Jeremy選用了DCGAN(深度卷積生成對抗網路),直接用了tensorlayer在GitHub上開放的TensorFlow程式碼。
相關論文:
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
Alec Radford, Luke Metz, Soumith Chintala
https://arxiv.org/abs/1511.06434
程式碼:https://github.com/tensorlayer/dcgan
而所用的訓練集,由男男女女的肖像畫組成,全都是他喜歡的風格。挑選、修改、增強等等一套操作下來,他Jeremy得到了一個包含10萬幅畫的訓練集。
接下來,就是訓練和生成了。即使已經有了開原始碼,訓練一個GAN也並不容易。一不小心,就會遇到這樣慘不忍睹的崩潰NG場面:
各種NG都解決了之後,就進入了最終的訓練和生成過程,在亞馬遜的AWS p2.xlarge例項上進行,整整花掉了7天時間。
Jeremy得到了——
就是這個,一個64×64畫素的、歪七扭八的、全新的創意。From AI with Love.。GAN還為這幅作品起了個充滿詩意的名字:028749_0001_08。
上面這張小頭像和成品之間的差距,可能能繞地球好幾圈。但這已經是Jeremy可以得到的最好結果了。他還有過不少其他改善的嘗試,不斷碰壁後,最終他決定:
就用這個了!
這裡插播一下,為啥他沒有繼續嘗試,而是急急忙忙接受目前的結果?可能是因為Jeremy初心變了,他不只想畫一幅畫,而且還想參加機器人藝術大賽RobotArt。
於是,時間一下子就變得很緊張。
轉攻機械臂
接下來的問題是,怎麼把這個AI貢獻的靈感,變成一幅真正的畫作?
靠機械臂!
那也得教一下機械臂,怎麼畫畫。
第一次嘗試機器人手臂大概還是在去年7月份,Jeremy試圖熟悉機械臂的功能,並且想讓它看起來像人類的筆觸,他先就購買了一套溫莎牛頓的豪華刷頭馬克筆。
這套馬克筆的筆尖像毛筆,非常適合測試,又不用擔心調色的事。
△ 2017年9月早期測試
雖然,沒試出什麼驚豔的結果,但Jeremy渾身上下寫滿了 (蜜汁) 自信,感覺用真正的水粉畫筆也沒問題。
後來,他工作一忙,就開始捉急了。看看越來越近的截止日期,再看看還沒玩過水粉筆的自己,Jeremy決定用Aqua Brush (一種內建顏料盒的筆刷),來代替了水粉筆這種需要配置的操作。選了8種預先混合好的顏色,實驗又開始了。
△ Aqua Brush筆刷
“您的撲街只用了一秒。”走出實驗室之前,他喪喪地扔掉了所有的Aqua Brush。這種工具需要的水量太大,效果很水。
技術宅覺得,如果用另外一種介質來代替水,可能會更好。不過,他還是毅然決定死磕水粉了,並堅信古老的筆刷和顏料會比現代工具更適合畫畫。調色盤裡顏色是根據要畫的作品和最少的混色步驟來選定的。
要指導機器畫畫,就需要給它一套指令,告訴它該在畫布的什麼位置、用什麼樣的筆觸、刷上什麼顏色。於是,Jeremy基於機器人要用的色板,將這幅影像用演算法翻譯成一套ABB機器人指令,開頭那張“AV畫質”的小人臉,搖身一變成了現在的樣子——
在這個專案中,“從影像到筆刷”的轉換程式是唯一需要“從零開始”的,其他所有關於AI的步驟都主要基於過去幾年研究的已有檔案和程式碼。
在轉換之前,需要先處理一下DCGAN生成的渣畫質小圖:放大,將顏色減少到能和色板相匹配、並對影像進行平滑處理來增強所生成筆刷的平滑度……
處理好了影像,還要準備備選的筆刷。這些大大小小的筆刷,是Jeremy在Photoshop裡削出來的,構成了演算法的訓練資料集。這些筆刷再加上混色指令,就是演算法的全部輸入了。
距離截止日期12天時,Jeremy計劃的調色方案還很細膩:從奶油色開始,一步一步加深到深棕色,然後再用調色盤來調出餘下的顏色。但對於機器人來說,時間顯然不夠用。
機器人按指令操作的結果,和他美麗的想象相去甚遠。以至於最後關頭,他還在緊急修改調色指令。
Jeremy還向想讓機器人在畫布上做一些混色,寫出了程式碼,但在有限的時間裡,並沒有實踐成功。
萬事俱備,就該進行“影像到筆刷”的生成了:演算法吃下準備好的影像,然後進行一個反覆的試錯,先考慮進多種可能的筆觸,再通過和圖片對比來篩選最接近的。
演算法輸出的結果包括一組要用到的筆刷、和機械臂要執行的混色指令,第一次嘗試的時候用了6000筆,最終的作品是4000筆。用這個訓練好的“影像到筆刷”生成演算法來渲染給機器人的指令,消耗了Jeremy八個小時的時間。
好在,最後的成功,沒有讓他失望。
Jeremy設計的畫作,也最終入圍了2018年度RobotArt設計大賽,他還想讓大家空了去投個票~
https://robotart.org/artworks/
不過,故事還麼完。
光提到Jeremy怎麼夠?
量子位還(假裝)採訪到了參與本次創作的ABB機器人,它的心路歷程飽滿得快要噴發。以下,我們用自述體,還原這次採訪。
機器人的藝術修養
那是一個週四的下午,Jeremy到實驗室來告訴我,之前的試畫他很滿意,晚上就會把一幅大作的任務交給我。
之前從來沒有畫過一張完整的畫,每次都讓我試幾下就把筆收走。啊,想想還真有點小激動呢。
按這個節奏往下走,說不定哪天畫廊就會來找我簽約,這樣我們實驗室的小花會被我的才華折服,然後我順勢表白成功。 從此,兩隻機器人過上了幸福的生活。
回到現實,沒想到他讓我一整晚不許停筆。我是機器人沒錯,不管飯可以忍,不能休息也叫小花來看看我。
大概男人辛苦的樣子才更可愛吧。這樣想著,4月5日的夜晚,我還是用色彩填滿了。
第二天,Jeremy說我發揮正常,不過他覺得青色 (Cyan) 用得有些重了,焦赭石色 (burnt umber) 又有點太輕了。
這不是大問題,反正我的混色習慣都是可以調的。可是他還說我畫得慢,只有一句話想送給毫無藝術天分的他。
三小時畫了1800筆,要不去問問別的機器人有沒有這麼快。一下子塞給我6000筆的任務,我也很絕望啊。
不過,好在他比我還緊張,這樣我也能平衡一點。
可能他也覺得有點對不起我,就給了我三天假。4月9日週一晚上,我又開始工作了。
△ 沒見過吧
Jeremy好像是剛剛知道,我有一個動作更快的模式。一開始,我的內心是拒絕的,那個模式真的很累。但他求了我,還說要帶我參加比賽,於是我決定給他看看我真正的速度。
那天晚上,我就把畫完成了。還是三個小時,但這次畫了4,000多筆。他果然被我精妙的技藝震撼了,除了速度,我還有更加流暢自然的筆觸。
這個傲嬌的技術宅,明明感受到了我的厲害,還要說我的畫有些小小的瑕疵。
他把水粉衝得太淡了,導致顏料在畫布上開心地流淌。還有,他又覺得把混色指示裡的焦赭石色調得太重了。只要他承認那是他的錯,就好。
生動的意外
不知為什麼,他好像不想讓我再畫了,要直接拿這幅畫去參加比賽。可我才剛出道,不想只留下一幅作品就隱退。
△ 大概在剔牙
不過,沒過多久Jeremy就跑來告訴我,他改主意了。Jeremy在調色桶和調色盤的轉換之間,發現了一個bug,導致我的筆刷位置太低,才有了畫布下方那條亂入的棕色長線。
於是,Jeremy第二天一大早又來了。他說這次調整了系統,一幅畫只要4,000筆就好了,少了2,000筆。還算懂事。
另外,他還重新設計了顏料的混合方式,這樣我就可以畫出更有趣的色彩了,好興奮啊。
早上工作,神清氣爽。Jeremy讓我先做筆觸渲染,等他下班回來再開始畫畫。
晚上,準備工作兩小時,畫畫三小時。雖然,過程因為調整混色指示而中斷了幾次,但作品我還是滿意的,技術宅應該也滿意吧。
和預先準備好的影像相比,我畫出的成果有些不同。但在有意無意中,色彩變得更生動了。
投稿截止日期將近,Jeremy說許多變化都是時間不夠造成的程式碼意外,但我們兩個都享受這些可愛的意外。如果真的和原圖一樣,怎麼看得出我的天分呢?
後記
機器人不知道的是,那天晚上Jeremy把它的作品小心翼翼地捧回了家,像個得到了珍貴禮物的孩子。
後來,他還用蠟給作品上了一層表面,讓水粉多了一些光澤,多了一些深度。當然,那是比賽之後的事了。
至於,這是不是藝術。要說不是,那些孩子一樣的心情又是什麼呢?
— 完 —
加入社群
量子位AI社群16群開始招募啦,歡迎對AI感興趣的同學,加小助手微信qbitbot6入群;
此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。
進群請加小助手微訊號qbitbot6,並務必備註相應群的關鍵詞~通過稽核後我們將邀請進群。(專業群稽核較嚴,敬請諒解)
誠摯招聘
量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話介面,回覆“招聘”兩個字。
量子位 QbitAI · 頭條號簽約作者
վ'ᴗ' ի 追蹤AI技術和產品新動態
相關文章
- 程式設計師也想改 Lottie 動畫?是的!程式設計師動畫
- 當程式設計師寫不出程式碼了……程式設計師
- 【程式設計師漫畫】猜猜他是誰?程式設計師
- 程式設計師畫像,十年沉浮程式設計師
- 當了程式設計師之後?(真心話)程式設計師
- 第一個想取代程式設計師的AI程式設計師,失敗了?程式設計師AI
- 漫畫 | 外行對程式設計師誤會有多深!程式設計師
- 最適合程式設計師的畫圖工具?程式設計師
- 《程式設計師漫畫》| 萌新面試Google程式設計師面試Go
- 漫畫|女程式設計師做了一個夢...程式設計師
- 漫畫 | 程式設計師的悲哀是什麼?程式設計師
- 當前就業環境下,程式設計師應該自降薪資應聘嗎?就業程式設計師
- echarts搞定各種地圖(想怎麼畫就怎麼畫)Echarts地圖
- 10 張令人噴飯的程式設計師漫畫程式設計師
- 漫畫 | 浮躁程式設計師的最終結局程式設計師
- 極客漫畫:聊天機器人機器人
- 前端“油畫設計師”——雙快取繪製與油畫分層機制前端快取
- 電腦當機畫面卡住不動怎麼解決 電腦突然卡死畫面定住怎麼辦
- 人生本來就是一場賭。博,中年危機的程式設計師就真的沒機會了嗎?程式設計師
- 「程式設計師小漫畫」 之 程式設計師眼中的聖誕節和萬聖節程式設計師
- 無人機在火星升空!程式設計師應該感到自豪的日子無人機程式設計師
- 核心動畫程式設計(一)動畫程式設計
- 核心動畫程式設計(二)動畫程式設計
- 程式設計師必備畫圖技能之——時序圖程式設計師時序圖
- 女朋友想減肥,程式設計師花了三天寫了個卡路里計數器程式設計師
- 站在風口上的程式設計師,就應該有高收入!程式設計師
- 某網際網路公司領導炫耀:男程式設計師就該當牲口用,狠狠壓榨!程式設計師
- UI 設計師 SVG 動畫進階篇——蒙版動畫(下)UISVG動畫
- 原畫人場景原畫教程,畫場景的思路是怎麼樣的?
- 好程式設計師web前端系列之css3動畫程式設計師Web前端CSSS3動畫
- 「程式設計師小漫畫」 之 不用Tab鍵的後果程式設計師
- 幽默:Linux程式設計師冷眼看微軟藍色畫面Linux程式設計師微軟
- 【漫畫】程式設計師永遠修不好的Bug——情人節程式設計師
- shader程式設計基礎:畫線程式設計
- 漫畫 | 夜深了,程式設計師的電腦卻沒關,發生了這樣的故事…程式設計師
- 《JACK JEANNE》人設畫師訪談:不會作詞的遊戲製作人不是好畫師遊戲
- 年終了,程式設計師應該這樣談加薪!程式設計師
- 逆襲職場,有風變程式設計就夠了程式設計