如何讓AI成為梵高?
另:他在文中的提及的DeepArt即是該技術的真正開創者,Prisma即受此啟發而來,原理都是一樣的。
(原文鏈接:Neural Networks with artistic talent)
下圍棋和生成讓觀眾興趣盎然的藝術圖像是兩個很難教給計算機人工智慧的任務,然而AlphaGo和Deepart兩個系統都證明了它們可以很好的完成教給他們的事。同時,兩個系統都碰巧依賴卷積網路,於是我決定寫下這篇關於此技術的文章。
如何把一張圖片的風格融入到另一張圖片中?
DeepArt創始團隊搭建了這樣一個系統:可以將這樣的兩張圖片:一張 是藝術作品,比如著名的繪畫;另一張是任意的照片,然後通過一種有趣的方式輸出成一張圖片,一張混合了原始照片的內容與繪畫風格的新圖片。用deepart團隊的說法如下:
圖像合成的方法是通過找到一副圖像同時匹配照片的內容和藝術圖像的風格。雖然源照片的全局布置被保存,顏色和局部的結構這些組成全局場景的要素則由藝術圖像提供。這有效的賦予了照片藝術品的樣式,既合成圖像的外觀與藝術品相似,即使它顯示了與照片相同的內容。
接下來,我現在將解釋deepart團對怎麼實現這點的。為了讓大家更好的理解,我需要先花點時間,介紹一些卷積網路的知識。
卷積網路
資料來源:維基媒體
卷積神經網路(或簡稱為卷積網路)是人工神經網路的一個子類,它尤其適合用圖像作為輸入。一個卷積神經網路的輸出可以是一個分類的結果(例如「這幅圖像包含機器人」),或者一副或多幅圖像(例如輸出圖像是源輸入圖像的降噪或去模糊版本)。
運用MLP的演算法進行圖像去模糊的結果。(MLP是另一種神經網路)
卷積網路像其它人工神經網路一樣,包含一些參數。這些參數是通過獲得最優期望值(比如物體檢測,能夠告訴圖像包含機器人或者香蕉)的訓練(比如調諧值)得到的。卷積網路也同樣用前饋方式逐層操作。換而言之,一個輸入圖像被順序地發送入網路的各層中,在最後一層輸出結果圖像。每一層有一組在網路的訓練過程中被計算(訓練)出來的參數集,這些可訓練的參數定義了每層濾波器的功能。一副圖像經過層的濾波器後產生的多個濾波圖像稱之為特徵圖。這些特徵圖本身是圖像。它們中的每一個都表示了源輸入圖像的一些特徵(邊緣,角落,輪廓,物體部分)。
通常卷積網路在更深的層中均比前面的層包含更多的特徵圖,但是特徵圖隨著網路的變深而變得越來越小。
物體識別
特徵圖於是包含了輸入圖像的某些特徵。重要的是要理解對於每個濾波器的角色是沒有嚴格定義和描述的;同樣,我們也很難確定特定的特徵圖捕捉到了輸入圖片的哪些特徵。
通常這些特徵在經過一定數量的網路層之後會越來越抽象。舉個例子:當卷積網路被訓練用於物體識別時,越是深層的特徵圖就越關注在特定圖片中指定對象的存在,而不是特定的圖像像素的值。作為對比,在第一層的特徵圖檢測到諸如邊緣這樣相對簡單的特徵。
此外,後幾層檢測到的特徵的尺寸相對於第一層更大。這緣於濾波操作本身的原因:第一層能檢測到的特徵最多與濾波器一樣大(這個僅僅是幾個像素的大小)。但是第二層能檢測到的特徵幾乎是第一層的兩倍。這個尺寸與域的大小相適應。我們呆會還要再回到這點。
近些年來,用卷積網路獲得的物體檢測和定位已經越來越好,挑戰也變得越來越困難——比如關於ImageNet的挑戰需要分辨1000類不同的物體。
imagenet 2014的勝者是一個帶有19層以及相對少的濾波器的深層卷積網路。這個網路被稱為VGG,它是DeepArt系統的基石。
利用卷積網路進行紋理合成
在一篇論文里,DeepArt團隊的成員介紹了如何用被訓練了物體識別的卷積網路用於其它的任務:生成人造紋理。一張照片作為源圖像,合成一張與它相似的人工圖像。下面是兩個合成生成紋理的例子:
來源: Bethgelab。左側的圖片是由右側的圖片自動生成的。這兩張圖片看起來非常像,但是整體布局已經沒有了。
在Bethgelab可以找到許多令人印象深刻的合成紋理和它們對應的源圖像的例子。一副紋理圖像經常可以表示一個可以被重複的圖案,比如沙子、紙、雲、木頭、鋼筋混泥土等等。紋理圖像的整體布局沒有比在照片中的諸如著名地標的重要。
合成過程是選一幅僅帶有隨機雜訊的圖像,然後根據一些標準通過迭代更新這個雜訊圖像直到和原圖像足夠相似。
這個標準的目標是保留顏色和局部結構這樣的方法來抓取相似度,而不是保留圖像的整體布局。DeepArt團隊說的非常好:
紋理是預定義固定的,所以紋理模型需要和空間信息分離。
這個團隊所做的就是利用VGG網路的不同特徵圖之間的關係(對物體識別進行訓練),並用這些關係作為標準:
概況統計量是放棄特徵圖中被給予不同特徵關係的空間信息。
我們希望刪除空間信息,但是保存紋理信息。問題是一個特徵圖是(非線性)一個濾波器版本的輸入圖像。所以它會包含輸入圖像的空間信息。我們如何才能做到去除空間信息?計算一個去除空間關係層的特徵圖之間的關係(兩個特徵圖的關係是一個單一的值,所以空間信息需要去除)。作者提取了一個層中所有特徵圖的關係,得到一個大小為N*N的Gram矩陣,其中N是某層的特徵圖的數量。
於是迭代更新過程修改源雜訊圖像直到它的Gram矩陣接近於這個源圖像生成的Gram矩陣,結果是該迭代更新過程可以通過反向傳播方便地完成。這便是標準的訓練神經網路的方法,除了這種情況中僅更新輸入圖像(而不是網路的參數)。它也證明,這個過程可以生成與源圖像驚人地相似的紋理。
第一排:原始圖片。第二排:僅用第一層進行重建。由於第一層中的小的接收域尺寸,重建具有很小的結構。第三排:使用更多(更深)層的重建。由於更大可容納區域,空間信息在更大範圍內被保留。
剩餘一個問題:應該選擇哪一層或哪幾層計算Gram矩陣?事實證明,選擇第一層(最淺)不能導致令人滿意的結果。最好的結果是用包括較深層的多個層。這個效果可以從兩個方面解釋:
更深的層從輸入圖像中抽取更多的抽象特徵。
得益於增加相應域的大小,較深的層能抽取越來越大的特徵。
用卷積網路合併內容和樣式
接下來,這個團隊對於之前介紹的紋理合成增加了一種額外的步驟。對於紋理合成,目標是近似由VGG網路特徵圖生成的Gram矩陣,得到一個樣式相似內容不同的圖像。現在新的目標是生成與一張圖像有相同的樣式,但是和另一幅不同的圖像有相同的內容的圖像。除了現在的度量不同之外,近似圖像內容與紋理合成方法類似地進行:目標是直接近似VGG網路的深層中的值。該演算法可以總結如下:
將藝術圖片輸入VGG網路,計算和保存Gram矩陣的G值.
將照片輸入VGG網路然後保存特徵圖F值。
生成白雜訊圖像。通過反向傳播,迭代地更新這個圖像,直到它生成的特徵圖和Gram矩陣分別接近F值和G值。
因為通常不可能找到完全匹配G和F的圖像,所以需要權衡:接近G或F,哪個更重要?如果更加強調Gram矩陣G,則結果是更接近匹配藝術圖像的風格的圖像。如果更多地強調特徵圖F,則結果是更接近匹配照片內容的圖像。下面的例子說明了這種權衡。
它是如何工作的?來源。同樣的臉,在不同的光線條件下的效果(是的,這些真的是一張臉!)。在所有的四個圖像中,內容是相同的,但是外觀/風格是不同的。這表明了能夠在對象識別中區分內容和外觀/風格的重要性。
正如我前面所說,神經網路中每層的確切功能很難定義,因為網路作為一個整體被訓練,並且根據其參數,不同的層將具有不同的功能。看起來,被訓練用以識別對象的卷積網路允許以圖像內容和圖像風格的分離的方式在內部表示圖像:Gram矩陣代表圖像風格,特徵圖值代表圖像內容。他們在訓練過程中自動學習這種可分離的表示法。這就是為什麼可以控制圖像的風格,而不會太嚴重的影響到內容的原因。
這是個令人驚訝的結果,有人可能會想知道為什麼會這樣。作者給出了可能的解釋:
總而言之,一個被訓練來執行生物視覺的核心計算任務之一的神經網路,可以自動學習內容與風格分離的圖像表示法。這是非常令人著迷的。它的原因可能是當學習對象識別時,網路必須對保持對象特性的所有不同的圖像得出一致結果。化簡圖像內容的變化和其外觀的變化的表示法對於該任務將是非常實用的。因此,我們從內容抽取風格的能力,乃至我們創造和享受藝術的能力,成為了我們的視覺系統強大的推理能力的一個非凡的證明。
讓我進一步解釋:有許多變化(如光照變化)改變了圖像的外觀,而不影響其內容(仍是同一個對象)。因此,任何有利於識別圖像對象的系統都被迫能夠將內容與外觀區分開。而系統到底是計算機系統(例如卷積網路)亦或生物系統(例如,人類大腦)則變得無關緊要。這是一個相當有趣的洞察!
有趣的嘗試:系統反向
使用DeepArt的demo,我首先在論文中複製結果:我使用了Tübingen的Neckarfront的照片,並結合它與梵高的「星夜」,結果類似於DeepArt的團隊提出的結果。然後,我使用的系統相反:我使用內卡河的照片作為藝術形象,梵高的畫作為照片。結果是一個圖像,保留了繪畫的內容表示,使用在內卡河畔的照片中發現的顏色和小結構。我們看到系統在這種情況下也能如預期的那樣工作。
從左上方開始,順時針:圖賓根的Neckarfront的照片。梵高的「星夜」。DeepArt的組合,使用梵高的繪畫作為這件藝術品。DeepArt的組合,使用圖賓根的照片作為藝術品。
下一步是什麼?
Matthias Bethge告訴我,Leon Gatys成為Adobe的新研究員之一,與Adobe的合作正在將風格分解成不同的風格特定方面。期待看到更多的結果!
推薦閱讀:
※如何評價天鳳特東 AI ?爆打?
※AI的「邊界」與校園的「圍牆」
※【戰略解讀】 美國人工智慧報告解析
TAG:人工智能 |