引子:有段子手言,地球上的人一半在用Pokemon Go追皮卡丘的時候,剩下的一半在用Prisma修圖!這款由俄羅斯創業團隊研發的圖片處理app,從研發到上線僅幾個月就用戶量驚人,更讓人驚訝的是,團隊僅僅只有四個人。這真的可能嗎?
如果你是因為標題黨而進來,謝謝并希望你離開的時候能獲得你想要的干貨;如果你已經猜到了答案,也謝謝你愿意進來驗證你的猜測。
沒錯,火遍朋友圈的修圖工具Prisma的背后就是最近流行的四個字:深度學習。啊對,就是一個深度神經網絡模型,很深很深的網絡模型,大概有19層那么深。(咦這個確實好深啊,貌似那個下圍棋的alphago也就13層~)
不是說干貨么,這就完了?當然不行。那咱能直接跑一個模型玩玩嗎?貌似也不太行。跑這樣一個神經網絡模型,需要你的計算機有一顆強大的心臟(最好有個GPU啥的),然后,你需要安裝一堆lua,torch,caffe,cuda之類的玩意兒。你以為prisma和別的app一樣,是靠你那小手機就能搞出這么炫酷的樣式嗎?非也,它的背后必須有一個強大的云服務器。不信你斷網,再拿prisma試試。
所以,prisma是把你的圖片壓縮好后,用網絡傳送到了他家服務器,然后處理結束再傳給了你。
嗯這還不是特別干的干貨,下面才進入正題。也許你會覺得有點枯燥,不過希望我盡量能講的通俗,你盡量能收點干貨,而那些繁瑣的數學公式和略晦澀的術語我會跳過。
下文主要參考自論文:A Neural Algorithm of Artistic Style(by Leon A. Gatys, Alexander S. Ecker, and Matthias Bethge)
在深度神經網絡的家族里,處理圖片最給力的模型叫卷積神經網絡(Convolutional Neural Network,簡稱CNN)。CNN的每一層結構和一般的NN不太一樣,它的每一層就像一個過濾器,分層次的處理輸入圖像。每經過一層,就會更抽象一些,術語上來說是對上一層的特征提取。所以,每一層都可以看作為一個特征映射(feature maps)。
當CNN被用來訓練識別物體(object recognition)時,研究者構造了一種網絡結構,它可以使物體信息逐層更明顯地提取出來,也就是說,這種網絡結構關心的是圖片內容(content)。每一層的feature maps都可以用來重構圖片,較深層次(high-level)的重構,如下圖第二排d,e,更多的捕捉內容而忽略像素,而較淺的,如下圖第二排a,b,c,僅僅是像素的復制。因此,研究者多采用較深的網絡結構來做內容重構(content representation)。
而CNN模型也同樣可以用來做風格重現(style representations)。這時,研究者使用一種原創設計的特征空間(feature space)來提取圖片的紋理信息(texture information)。feature space會加在每一層過濾層之上,它包含的是不同過濾層處理后的feature maps之間的相關性。這樣處理后得到的僅是圖片的紋理而不是整體布局(global arrangement)。如上圖第一排所示。同樣的,較深的網絡層可以更好的提取紋理而忽略內容。
論文研究者的發現是:content representations和style representations是可以分離的!且重新組合后可以成為一張全新的圖片,它具備名畫(artwork)的風格和我們自己的照片的內容。這就是prisma提供給我們的修圖效果。同時,內容重現和風格重現在重構過程中是可以權衡的(trade-off)。所以,prisma也具備了百分比設置功能,即多大程度保留內容。
而其實這項技術在2015年8月左右就已經在github上公布了,搜索deepdream可以找到。而如今它真的成為了一款流行市場的互聯網產品,歷時將近一年。這從技術開發到面向市場的速率也非常驚人。再看自動駕駛技術,糅合人工智能,AR/VR等技術,雖然如今還事故頻頻,但相信將來也會技驚四座。
以上用一句話概括就是,深度學習實現了藝術內容和藝術風格的分離與重構。雖然這還談不上創造力,但也算art and science的完美結合!這不愧說—— Data scientist is the sexist job of 21st century.
———— END ————
參考鏈接:
https://github.com/jcjohnson/neural-style