當機器學會畫畫
05-07
- 介紹
近來,使用神經網路作為生成工具的圖像生成建模已經取得了重大進展。 利用神經網路來進行圖像生成建模,目前已經大量的應用,只是,迄今為止的大部分工作都是針對類似照片這樣的像素層面來建模處理和應用。然而,人類並不認為這個世界是一個像素網格的世界,而是通過進一步的把我們所看到的進行了高度抽象和概括來理解和認識這個世界。 我們從小時候就開始去學習這種抽象概括能力,我們把所看到的東西用鉛筆畫在一張紙上,這一過程中最重要的就是抽象概括能力,比如你看到一頭豬,你抽象出它有4條腿、2隻耳朵、一隻嘴巴....總之,你最後會在腦海中抽象出一隻豬的各種特徵的概念,然後通過筆把這個抽象的豬的概念畫出來。這種用簡單的幾筆就能出描繪物體的能力,可以繪製自己喜歡的動漫角色、家人、朋友和熟悉的地方。 這種簡單的繪畫方式可能不像照片所捕獲的那樣寫實,但它們告訴我們一些關於人們如何表達和重現她們看到過的世界。
機器,是否能夠具有這種對事物進行調整抽象概括能力呢?下面是一個這方面的嘗試的技術研究。
思考人類的這種對事物特徵進行高度抽象概括並重現(表達)的方式,我們認識到可以用一個簡短的筆畫序列來表達一個連續的矢量圖像。 因此,開發出一種傳統像素圖像建模方法的替代方案:矢量圖像的生成模型。在我們的論文中,「A Neural Representation of Sketch Drawings」, 我們提出了一種能夠生成一些常見物體的素描畫的RNN神經網路,其目的是訓練機器以人類的方式繪製和概括抽象概念。 我們在手繪草圖的數據集上訓練我們的模型,通過控制筆的動作來表達筆畫序列:移動方向,何時抬起筆,何時停止繪圖。 在這樣做的過程中,我們創建了一個可能有許多應用領域的的模型,從輔助藝術家的創作過程到幫助教學生繪製。
- 一種矢量圖的生成模型
我們的sketch-rnn模型,是基於seq2seq 自動編碼器框架。 它包含變分推斷( variational inference),並利用Hyper Networks用作RNN網路的神經元。 seq2seq自動編碼器的目標是訓練一個網路,能夠將輸入序列編碼為浮點數的向量,稱為隱藏向量(latent vector),然後,對這些隱藏向量解碼,進行重構,獲得輸出序列,該解碼器的目標是儘可能地保真輸入序列。
在下圖中,我們將幾個實際的貓的草圖(素描)提供給編碼器,以使用解碼器生成重建的草圖(素描畫):
這一過程中,重要的是,重建的貓素描並不是輸入草圖的副本,而是與輸入具有相似特徵的貓的新的素描圖。 為了證明該模型不是簡單地從輸入序列中複製,而是真正的學到了一些關於人們繪製貓的方式,我們可以嘗試將非標準草圖提供給編碼器。 比如,我們輸入一隻三眼貓的草圖時,該模型產生了一隻相似的貓,但是,這隻貓只有兩隻眼睛,這表明我們的模型已經知道貓通常只有兩隻眼睛的這一特徵。為了表明我們的模型不是簡單地從記憶體的大量貓的素描樣本中選擇最相似的一個,我們可以嘗試輸入完全不同的東西,如牙刷草圖。 我們看到網路產生了一個像貓的形狀,長的鬍鬚,模仿牙刷的特徵和方向。 這表明網路已經學會提取了貓概念,並把這些特徵融合到隱藏向量中(latent vector),因此,有能力基於該隱藏向量(latent vector)來重建全新的草圖。不相信? 我們再重複一次對豬草圖訓練的模型,並得出類似的結論。 當出現一條八腳豬時,該模型生成一隻只有四條腿的豬。 如果我們把一輛卡車餵給豬仔模型,我們會得到一頭看起來像一輛卡車的豬。為了搞清楚這些隱藏的向量 (latent vectors)載體是如何編碼提取動物的抽象特徵的,在下圖中,我們首先從兩個非常不同的豬獲得兩個隱藏向量載體進行編碼,這裡一個是豬頭(綠色盒子),另外一個是全豬(橙色盒子))。 我們想了解我們的模型如何學習畫豬,一種方法是在兩個不同的隱藏向量之間進行插值,並從每個內插的隱藏向量可視化每個生成的草圖。 在下圖中,我們可以看出豬頭的草圖如何緩慢地變成全豬的草圖,並在此過程中展示了模型如何組織豬草圖的概念。 我們看到,隱藏向量控制鼻子相對於頭部的相對位置和大小,以及草圖中身體和腿部的存在。我們還想知道我們的模型是否可以學習畫出多種動物特徵的組合體,如果是,他們會是什麼樣子? 在下圖中,我們通過在貓頭和豬之間插入隱藏向量載體來產生草圖。 我們看到這個過程如何從貓頭,一隻尾巴的貓到一隻胖胖的身體的貓,慢慢地變成一隻完整的豬。 像一個學習畫動物的孩子一樣,我們的模型通過將頭,腳和尾巴附著在身上來學習建造動物。 我們看到,該模型還能夠繪製與豬頭不同的貓頭。
這些插值示例表明隱藏的向量確實對輸入的草圖的概念特徵進行了編碼。 但是,我們可以使用這些特徵來增加到沒有這些特徵的其他草圖嗎? 例如,向貓的頭部添加一個身體?事實上,我們發現草圖繪製類推是可能的。 例如,我們可以從全豬的隱藏層中減去編碼豬頭的隱藏向量特徵,以獲得代表身體概念的向量特徵。 然後,將此添加到貓頭的隱藏向量中,就會產生一隻完整的貓(即貓頭+身體=完整的貓)。 這些繪圖類推使我們能夠探索模型如何組織其隱藏空間,以便在生成的草圖中表示不同的概念。
- 利用本方法進行應用創新
除了這項工作的研究部分,我們對機器進行素描的潛在創意應用也感到非常興奮。 例如,最簡單的一個用例:模式設計人員可以應用sketch-rnn為紡織品或壁紙列印生成大量相似但獨特的設計圖案。如前所述,如果給出卡車的輸入草圖,則可以製作一個訓練成像豬一樣的卡車。 我們可以將此結果擴展到應用程序,這些應用程序可能有助於創意設計師提出可以與目標受眾更多共鳴的抽象設計。
探索不同對象之間的隱藏向量空間可能使創意設計師能夠在不同的繪圖之間找到有趣的交點和關係:
我們也可以使用sketch-rnn的解碼器模塊作為獨立模型,並對其進行訓練,以預測不完整草圖的不同可能結果。 在下圖中,我們繪製不同的不完整草圖(紅色),並使模型得到不同的可能方式來完成圖紙。我們相信,最好的創意作品不會只用機器創作,而是可能由設計師使用機器學習作為豐富創意思維過程的工具。 在未來,我們設想如何與藝術家和設計師合作使用這些工具。 以下是使用我們的模型說明此協作的簡單概念示例:我們對生成矢量圖像建模的未來可能性感到非常興奮。 這些模型將使許多令人興奮的新的創意應用程序在各種不同的方向。 他們也可以作為一個工具來幫助我們提高對自己創意思維過程的理解。項目鏈接:tensorflow/magenta信息來源:Teaching Machines to Draw最後,
歡迎訪問 AI行業資訊聚合小網站readai.me歡迎關注 ReadAI專欄推薦閱讀:
※神經元 寒武紀水母 脊椎動物神經系統 哺乳動物大腦皮層 神經衝動電傳導 突觸化學傳導 神經遞質 神經迴路
※【可解釋 AI 重大突破】DeepMind 構建心智理論神經網路讓機器互相理解
※從下往上看--新皮層資料的讀後感 第十一部分 hopfield-記憶的兩面
※從下往上看--新皮層資料的讀後感 第三部分 MP神經元-70年前的逆向推演