深度學習也可以取悅女友

Submitted by donghonglin on Mon, 04/23/2018 - 10:49
13

深度學習目前在圖像處理領域有著非常好的應用和研究,在醫學領域可以用它在極早期判斷癌癥;在安防領域,可以用它來快速檢索目標任務,進行可疑或危險人物的檢測與抓捕;在金融領域,可以較好的分析風險風控等。

但是今天不說這么深奧的知識,我們今天來說的是一個能有程序取悅我們女朋友的“黑科技”!這一招叫藝術風格變換,就是你點擊一下,就可以把你女朋友的大頭照換成一個畢加索的后現代藝術作品(當然是取代還是找打要看你的藝術品位)。

藝術風格遷移是一個古老而現代的主題 ,多少藝術家為了描摹他人作品而競折腰。在出現了深度學習之后,通過簡單的訓練就可以完成這個簡單的任務,接下來,說說何玩轉基于神經網絡的風格遷移。

其實風格遷移就是把一張圖片的內容和另一個圖片的風格進行合成的一個方法,比如說你給出一個貓的圖片和一個梵高的自畫像,就可以生成一只梵高畫像版本的貓。

在深度學習沒有應用在該領域之前,機器視覺的工程師就嘗試用各種濾鏡提取圖像的紋理信息或者用傳統的機器學習方法提取,得到的紋理特征再經過某些變換放回到原始圖片中,就得到了一個新的風格圖片。

深度學習所作的事情,是把整個過程自動化智能化了。我們利用卷積網絡的深層結構去提取圖片的信息,來替代之前的各種濾鏡或機器學習方法?!?/p>

首先,現在的卷積神經網絡在分類任務中,表現的非常出色,所以利用現在流行的網絡進行學習,可以學習很多豐富的有用信息,而這些豐富、抽象的信息正好是風格遷移的基礎。

可視化CNN的各層級結構,會發現不同階段的可視化是不一樣的,越是底層的,就越接近輸入圖像的紋理信息,如同物品的材質;然而,越是上層的,就越接近實際內容(比較抽象,比較顯著),如同物品的種類。

1

研究人員在Visualizing CNN 2014 提出了,如下就是部分的可視化效果圖:

2

底層神經元關心畫面的材質

3

深層神經元關心物品的種類

現在整個框架就變得特別簡單明了,只要用CNN提取圖像的豐富特征信息就可以實現,主要通過一張圖像的底層信息和另一張圖像的高層信息結合,然后就可以簡單實現。

4

用框架中間層的特征信息恢復的內容,可以看到,不同層里都可以找到風格和內容有關的信息, 但是層次越深, 具體的信息就越少, 可以通過一個已訓練好的卷積神經網絡, 把一張風格圖片和內容圖片的信息都提取出來, 然后結合在一起!

這里用已經訓練好的VGG網絡,一種非常流行的CNN圖像分類框架,預先設定好一個損失函數,然后再進行反向傳播

在進行梯度回傳,這里也不例外,我們可以通過設定合理的損失函數,來解決問題。

這個損失函數,正是一種能夠測量生成圖片與風格圖片,內容圖片距離的函數。

看我們如何設定這樣一個函數。既然我們的深度卷積網絡可以做到測量與內容有關的特征,那么我們只需要在這個層次上找一下特征向量的距離就好了?!?/p>

5

圖像無非是高維空間的一個點,通過神經網絡變換再經過特定降維方法處理后我們可以給它轉化成二維曲面上的一個點, 我們會發現,在這個世界里, 狗在狗的國度 , 貓在貓的國度。 而我們只需要度量不同圖像的空間距離,就測量了內容的相似度。

6

然后呢,如何搞定風格,風格通常是一個藝術家眼中主關的有點虛無縹緲的概念,也就是我們通常說的感覺,比如梵高或者莫奈的畫,你沒有經過藝術熏陶也可以得來。

而在深度學習的角度下,這種感覺卻發現與不同神經元活動的相關性有關!也就是說,風格是深度網絡神經元活動的某種統計特性!悄悄的,我們把藝術和數學對接上了。( 統計果然是上帝的語言啊有木有?。?、

這里我們借助一個叫gram矩陣的數學工具,它通過測量同一層卷積輸出不同通道之間的相關性(計算不同通道間的相關性,組成一個矩陣)給出一個對風格的度量。然后,我們在測量一下風格之間的距離不就行了嗎?

7

把CNN某一層對應不同特征的神經元像攤煎餅一樣攤開, 然后計算之間的相關性:

8

得到一個矩陣,矩陣的每個元素對應不同特征間的相關性:

9

這個損失函數就是gram 矩陣之間的距離!

注意,衡量風格之間的距離,我們是把不同網絡層級間的gram矩陣的距離都計算一下加在一起,這樣可以把不同層次度量的東西綜合起來。

好了,到這一步,大功告成,把兩個損失函數疊加在一起就好了。

10

目標函數的設計學問可大了,改變a和b的比例就能造成很多區別,大家注意風格圖片的比例越高,圖像就越紋理化。

11

風格的權重變大的時候, 那圖像就變成了意大利瓷磚!

然后我們可以做什么呢?梯度下降!但注意,這里我們優化的目標不是網絡權重而是圖像本身,這樣我們就大功告成了!

當然這里說的只是風格遷移的一種,這種方法的優點是通俗易懂,而缺點是速度很慢。

還有一個方法,是借用生成網絡,直接給搞出來,這個方法更快速,更加適合工業封裝。我來給大家展示一下這個方法的實質。

12

像不像GAN的結構

哈哈,這樣我們就可以完成一幅藝術作品交給家里領導了,但是不要忘記哦, 這件事給我們的啟示絕不止這一個呀。

它給我們啟示的是,我們深層神經編碼的機制里,深度學習的蹤影,你對風格的認知,其實是和內容的認知一樣,是可以量化的,而不像某些藝術家所言,完全主觀,與數學無關。

不僅可以量化,而且這個信息是可以獨立被提取的, 這種信息不是存在于某個神經元之上,而是分布式的存在于多級神經網絡的不同尺度之間, 通過每一層神經元的統計規律表達。

雖然我們尚不知道這些猜想是否正確,他們我們人類深奧的視覺處理機制提供了一種聰明的理解方法。

?

冯仰妍破处门