谷歌論文搶鮮看:教機器畫畫

本文的 「咱們」 所指的是谷歌,本文爲翻譯文章。

前言

抽象的視覺傳達是人們彼此之間交流的一種方式,佔着交流方式的主要一部分。從小的時候開始,孩紙們就能夠經過簡單的描繪來形容一個具體的物體或者描述他們的心情,可是他們所畫的東西不像照片所拍攝的同樣與現實事物同樣,可是它能夠告訴咱們一些關於人們如何表明和重建周圍世界圖像的方式。html

圖 : sketch-rnn 矢量繪圖算法

正文

在谷歌最近的論文「A Neural Representation of Sketch Drawings」中,提出了一種可以產生普通物體草圖的生成式復現神經網絡,其目的是訓練機器人以和人類類似的方式繪製和歸納一些抽象概念,在手繪草圖訓練模型,每個筆:移動方向、何時擡起筆、何時中止繪畫,在這個過程當中,他們建立了一個可能有着諸多應用的程序模型,從輔助創做家創做到幫助學生繪製。網絡

雖然如今已經有大量使用神經網絡的圖像生成建模工做,但大部分工做着重於對2D網格像素的光柵圖像進行建模,雖然這些模型均能生成一些逼真的圖像,因爲2D網格像素的高維度,它們的關鍵是生成具備相干結構的圖像,好比它們可能會生成擁有3只或者更多眼睛的貓、擁有多個頭部的狗。框架

用128x128 ImageNet數據集訓練,使用之前的GAN模型產生的身體部位數量錯誤的動物的例子, Generative Adversarial Networks, Ian Goodfellow, NIPS 2016 Tutorial.ide

在本文中,咱們研究了一個基於人體繪製的低維向量的表示,咱們的模型,sketch-rnn是基於序列到序列(seq2seq)自動編碼器框架。 它包含變分推理,並將超網絡用做復發神經網絡單元。seq2seq自動編碼器的目標是訓練網絡將輸入序列編碼爲浮點數的向量,稱爲潛向向量,而且從該潛矢量使用解碼器來重構輸出序列,該解碼器儘量複製輸入序列 。工具

圖 : sketch-rnn原理圖學習

在咱們的模型中,咱們刻意的在向量中添加噪聲,在咱們的論文中,咱們代表,經過將噪聲引入到編碼器和解碼器之間的通訊通道中,該模型不可以準確地再現輸入草圖,而是必須學會將草圖的本質捕獲爲嘈雜的潛在向量。咱們的解碼器採用這個潛在的向量,併產生用於構建新草圖的一系列運動動做。 在下圖中,咱們將幾個實際的貓的草圖提供給編碼器,以使用解碼器產生重建的草圖。google

圖 : 貓草圖的重建編碼

強調:

重建的貓草圖不是輸入的草圖的副本,而是與輸入具備類似特徵的貓的新草圖,爲了證實該模型不是簡單的複製,而且實際學到了一些關於人們繪製貓的方式,咱們能夠嘗試將非標準的草圖提供給編碼器:spa

當咱們提供一隻擁有3隻眼睛的貓做爲輸入草圖時,該模型產生了一隻兩隻眼睛的貓,這代表咱們的模型已經知道了貓一般只有兩隻眼睛,爲了代表咱們的模型不是簡單的從大量記憶貓草圖中選擇最接近正常貓,因此咱們嘗試輸入不一樣的東西,如牙刷草圖,咱們看到了該編碼器產生了一個像貓的形狀,長滿鬍鬚,模仿牙刷的特徵和方向。這代表網絡已經學會將草圖編碼嵌入到潛在向量的一組抽象貓概念,而且還能基於這個潛在向量構建全新的草圖。

若是不相信咱們能夠重複一次對豬草圖訓練的模型,而且得出相似的結論,當出現一隻有8只腳的豬時,該模型生成一隻只有四條腿的豬,若是在這個輸入草圖中再加入卡車,咱們會獲得一直看起來像卡車的豬。

圖 : 豬草圖的重建

爲了研究這些潛在載體如何編碼概念動物特徵,在下圖中,咱們首先得到兩個很是不一樣的豬編碼的兩個潛在載體,在這種狀況下,豬頭(綠色盒子)和一頭滿完整和豬(橙色) 框)。 咱們想知道咱們的模型如何學習表明豬,一種方法是在兩個不一樣的潛在向量之間進行插值,並從每一個內插潛在向量中可視化每一個生成的草圖。 在下圖中,咱們能夠看出豬頭的草圖如何緩慢地變成全豬的草圖,並在此過程當中展現了模型如何組織豬草圖的概念。 咱們看到,潛伏矢量控制鼻子相對於頭部的相對位置和大小,以及草圖中身體和腿部的存在。

圖 :潛在空間插值生成的一個模型訓練豬草圖

咱們還想知道咱們的模型是否能夠學習多種動物的特徵表現,若是能夠,會是什麼樣子? 在下圖中,咱們經過在貓頭和一隻完整的豬之間插入潛在載體產生草圖。 咱們看到這個表現如何從貓頭,一隻尾巴貓到一隻胖胖的身體的貓,慢慢地變成一隻全豬。 像一個學習繪畫動物的孩子同樣,咱們的模型經過將頭,腳和尾巴附着在身上來學習建造動物。 咱們看到,該模型還可以繪製與豬頭不一樣的貓頭。

圖 :貓和豬一塊兒做爲輸入草圖訓練圖

這些插值示例代表潛在的矢量確實對草圖的概念特徵進行了編碼。 可是,咱們可使用這些功能來增長沒有這些功能的其餘草圖 - 例如,向貓添加一個身體?

圖 :使用潛在的向量算法探索抽象概念之間的學習關係

事實上,咱們發現草圖繪製類比是可能的,咱們的模型訓練貓和豬草圖。 例如,咱們能夠從完整豬的潛在載體中減去編碼豬頭的潛在載體,以得到表明身體概念的載體。 將這種差別添加到貓頭的潛在載體中會產生一隻完整的貓(即貓頭+身體=完整的貓)。 這些繪圖類比使咱們可以探索模型如何組織其潛在空間,以便在生成的草圖的多邊形中表示不一樣的概念。

創意應用

除了這項工做的研究部分,咱們對草圖的潛在創意應用也感到很是興奮。 例如,即便在最簡單的用例中,模式設計人員也能夠應用sketch-rnn爲紡織品或壁紙打印生成大量類似但獨特的設計。

圖 :由單一輸入草圖(綠色和黃色框)生成的相似但獨特的貓

如前所述,若是給出卡車的輸入草圖,則能夠製做一個訓練成豬仔的模型來繪製豬式卡車。 咱們能夠將此結果擴展到應用程序,這些應用程序可能有助於創意設計師提出能夠與目標受衆更多共鳴的抽象設計。

例如,在下圖中,咱們將四把椅子的草圖放入咱們的繪圖模型中,生產四隻椅子般的貓。 咱們能夠進一步,並結合前面介紹的插值方法來探索座椅貓的潛在空間,併產生一個大的網格生成的設計來選擇。

探索不一樣對象之間的潛在空間可能使創意設計師可以找到有趣的交叉點和不一樣圖形之間的關係

探索生成的平常物品草圖的潛在空間

從左到右的潛在空間插值,而後從上到下

咱們也可使用sketch-rnn的解碼器模塊做爲獨立模型,並對其進行訓練,以預測不完整草圖的不一樣結果。 這種技術可讓應用程序經過提供完成不完整草圖的替代方法來協助藝術家的創做過程。 在下圖中,咱們繪製不一樣的不完整草圖(紅色),並使模型獲得不一樣的可能方式來完成繪圖。

該模型能夠從不完整的草圖(垂直線左側的紅色部分草圖)開始,並自動生成不一樣的圖像

咱們能夠進一步把這個概念,並有不一樣的模型完成相同的不完整素描。 在下圖中,咱們看到如何使同一個圓圈和方形圖成爲各類螞蟻,火烈鳥,直升機,貓頭鷹,沙發甚至油漆刷的一部分。 經過使用訓練有素的多種模式來繪製各類對象,設計人員能夠探索創造性的方式來向觀衆傳達有意義的視覺信息。

使用訓練了不一樣對象的sketch-rnn模型 預測圓和矩形(中間)的結尾

這些模型將使許多使人興奮的新的創意應用程序在各類不一樣的方向。 他們也能夠做爲一個工具來幫助咱們提升對本身創意思惟過程的理解。 經過閱讀咱們的論文「A Neural Representation of Sketch Drawings」,瞭解更多關於sketch-rnn的信息。

致謝

感謝Ian Johnson,Jonas Jongejan,Martin Wattenberg,Mike Schuster,Ben Poole,Kyle Kastner,Junyoung Chung,Kyle McDonald對這個項目的幫助。 這項工做是Google Brain Residency計劃的一部分。

相關文章
相關標籤/搜索