真·深扒「暮光女」克里斯汀發表的人工智慧論文
這背後用到的技術就是基於神經網路的「圖像風格轉移」(Image Style Transfer Using Convolutional Neural Networks,由Leon A. Gatys提出)。
導讀:大部分的八卦在另外一篇知乎文章中已經八得差不多了(鏈接:知乎專欄,與本文完全無關,我只是借用了題目而已),本文主要討論技術問題(所以才叫真·深扒啊)。
前置科技點A:基於神經網路的圖像合成
大家都知道,常見的神經網路訓練的方法是輸入一堆圖片和對應的標籤,然後基於梯度下降的方式去更新網路權重,得到一個圖片分類器。在這種情況下,輸入輸出是固定的,網路參數會改變。很自然地,我們會想到,如果我們要生成帶特定標籤的圖片,是不是可以網路參數和輸出固定,用梯度下降的方法去更新圖片?比如說,拿一個預先訓練好的圖片分類器,給定輸出是「貓」,輸入圖片初始化為白噪音,經過一定次數的迭代後,是不是能生成一張貓的圖片呢?
想得很美好,但是這種簡單粗暴的方法基本是不可能可行的,你很可能會得到一張不知所謂雜訊圖片,但依然被分類器認為是貓。具體在這裡不展開。但是,採用類似的思路,我們可以由網路深處的隱含層的結果,反推得到原來的輸入圖片。具體而言:
假如我有一個輸入圖片,以這個圖片作為輸入的時候網路中間某個隱含層的Activation為;我想在僅有的情況下還原,怎麼做呢?最直接的思路就是,構造一個(隨機初始化),保持網路參數不變,以為目標函數,用梯度下降的方法更新,使得和儘可能接近。採用不同的隱含層,能得到不同的逼近效果
前置科技點B:抽取圖片風格打個宗教化的比喻:一幅畫,它的內容就是它的身體,而它的風格就是它的靈魂。圖片風格化這種東西吧,可以簡單理解成把一幅畫的靈魂抽取出來然後放到另外一幅畫裡面去。那麼,總得有個東西可以拿來表示靈魂,這樣我們才能把它挪到別的地方去吧?[1] 討論的就是這個事情,也是通過神經網路,也是通過採用梯度更新圖片的方式,只不過把目標函數改成了Gram Matrix,也就是:
1) 假如某個隱含層,打比方說一個卷積層,每個FeatureMap是16*16,一共有50個
2) 把它reshape成256 (16 * 16) x 50的矩陣A
3) 為50x50的矩陣。這個矩陣裡面的元素可以被理解為每個FeatureMap之間的相關性(Correlation)
4) 以目標函數為 梯度更新圖片
這個Intuition或者Idea我還沒有理解從何而來的,大家可以參考下原論文。出來的結果還是很不錯的。
黑科技尤里卡![2]
有了前面兩個科技點,我們可以直接進入這個演算法的具體實現了——其實很簡單,就是上面兩個方法的目標函數的加權和!也就是說,你在生成圖片的時候,既要考慮讓生成的圖片跟原圖片儘可能的相似(內容儘可能一樣),又要考慮讓它帶有特定的風格。這個權重的分配會決定你生成的圖片是浪漫主義色彩,還是荒誕現代主義色彩(其實我什麼藝術都不懂:P)
上圖,左上就是給予藝術風格過多的權重,結果什麼都看不出來了,也不知道是好是壞,而右下角就比較合理,至少看得出來是幾個房子。不過大致思路就是這樣,非常簡單,就是可能需要微調下參數。除了拿來生成藝術圖片,這個技術還可以拿來生成偏現實的圖片:
(The style is transferred fromna photograph showing New York by night onto a picture showingnLondon by day 左上是紐約夜景,右上是白天的倫敦,生成的圖片是不是還挺像倫敦夜景的?)[1] Texture Synthesis
[2] Image_Style_Transfer
推薦閱讀:
※漫畫 | 「你有病,人工智慧有葯。」等等!這是什麼葯?
※AI干起了實時翻譯,我們離跨越語言的鴻溝還有多遠?
※AI在農業領域的應用
TAG:深度学习DeepLearning | 人工智能 |