如何評價MSRA的新paper:Deep Image Analogy?

Visual Attribute Transfer through Deep Image Analogy

https://arxiv.org/abs/1705.01088

貌似在reddit上很火. https://www.reddit.com/r/MachineLearning/comments/68y8bb/r_deep_image_analogy/?st=J2HF0EM9sh=eeac60b3


很喜歡這篇文章,但是感覺各種公眾號都沒有出來吹啊 ,= =

那我來吹一下好了,先放幾個效果圖鎮樓。

先吹一波PatchMatch

我覺得是個很神奇的演算法。2009年SIGGRAPH,現在引用1000+(當然傳統的演算法和deep leanring的演算法引用不能比),最基本的c代碼100行,簡單,粗暴,效果好。

那麼patchmatch是做什麼的呢(如下圖)?簡單的來說,你有兩張圖,你想從A圖變成B圖,一個很直觀的方法就是我可以將我的原圖A變成一堆拼圖,先全部隨機散開,然後再去A圖的所有碎片「尋找」與B圖當前位置「最像」的一個目標塊,「貼」到相應位置。循環這個操作,你就得到了一張類似於B圖但是所有「拼圖」完全屬於A的圖片。(當然我這裡只是naive的介紹了一下這個演算法是怎麼工作的。這個演算法如果就這麼簡單的話得多慢啊。所以我標註了三個關鍵字。具體的細節可以去看paper。)

值得一提的是,Kaiming大佬在2012年CVPR改進了這個演算法,使得搜索過程更加快速,得到的特徵匹配度更高。

最近兩年更是有人將這種方法應用到了optical flow上,取得了不錯的效果。其實從上圖可以看到,這裡得到的flow雜訊非常多,單純的使用patchmatch得到的效果也不理想,所以這就是這些用patchmatch 做 optical flow 需要解決問題的地方了。。。

回到文章

所以這篇Deep Image Analogy感覺可以用一句話說清楚了。

這篇文章首先 使用VGG19在ImageNet上預訓練之後得到的模型提取輸入的兩張圖A和B的大量特徵 然後 使用PatchMatch演算法進行匹配(如下圖)。

不同層級VGG19得到的特徵可以看做是不同大小 Local convolution descriptor輸出的特徵,描述了當前像素點在local patch的環境下 得到的各種神奇或者不神奇特徵。 然後利用得到的這些特徵去另一幅圖中尋找最匹配的一個特徵進行匹配。 效果當然可以達到像素級別的精準程度。

同時,這篇文章為了進一步提高效果,採用了bidirectional限制。 也就是說A-&>B的image transfer task,不僅僅採用A去尋找B,也用B去尋找A,使得目標函數最小。

還有一些其他類似的細節,因為不是core contribution或者我還沒有仔細看就不細說了。。

總結就是兩個字:推薦!


推薦閱讀:

需要一個「隨機梯度下降」的詳細教程?
RNN神經網路訓練過程中weight幾乎不更新,只有bias更新?
如何評價《Tensorflow實戰》和《Tensorflow:實戰Google深度學習框架》這兩本書?
Udacity 深度學習的作業有人真運行過嗎?
深度學習系統相比較傳統的機器學習系統,針對常見的分類問題,精度究竟能有多大提升?

TAG:機器學習 | 計算機視覺 | 微軟亞洲研究院 | 深度學習DeepLearning |