目前火熱的Deep Learning會滅絕傳統的SIFT/ SURF的特徵提取的演算法嗎?

籠統上看,深度學習的識別率/匹配率是絕對比傳統的匹配演算法如SIFT要高,但是深度神經網路識別率的提高建立在需求大量訓練樣本的基礎上,在一些沒有訓練樣本的應用(image stithing/stereo mathing)仍然無法很方便的使用deep neural network來識別和匹配(目前來看)。所以未來的深度學習會侵蝕現在SIFT/SURF演算法試用的這一塊應用嗎?未來還有SIFT/SURF這種固定特徵提取演算法的生存空間嗎?


就SIFT、SURF等視覺圖像特徵提取方法本身來說,它們應該會在實用中逐漸被深度網路所替代。但是,這些特徵提取方法的研究過程和思路是非常有用的,其它領域的特徵提取的研究方法和思路也是一樣。因為這些方法具有較強的可解釋性,它們可以對我們設計機器學習方法解決此類問題提供啟發和類比。

有部分人認為(也有部分人反對)現有的卷積神經網路與這些特徵提取方法有一定類似性,因為每個濾波權重實際上是一個線性的識別模式,與這些特徵提取過程的邊界與梯度檢測類似。同時,池化(Pooling)的作用是統籌一個區域的信息,這與這些特徵提取後進行的特徵整合(如直方圖等)類似。通過實驗我們也發現卷積網路開始幾層實際上確實是在做邊緣和梯度檢測。不過事實上卷積網路發明的時候,還沒有這些特徵提取方法。

不過,深度學習的數據需求量大對於視覺來說是個偽命題。許多研究成果已經表明深度學習訓練得到的模型具有很強的遷移能力,因此在大數據集上訓練完成的模型只要拿過來在小數據集上用就可以,不需要完全重新訓練。這種方式在小數據集上的結果往往也比傳統方法好。


提供一些參考文獻,與本問題相關,不過不盡相同,希望有所幫助。

[1] J. Zbontar and Y. LeCun. Computing the stereo matching cost with a convolutional neural network. CVPR 2015.

使用卷積網路做短 baseline 圖像立體視覺問題。

[2] X. Han, T. Leung, Y. Jia, R. Sukthankar, and A. C. Berg. MatchNet: Unifying feature and metric learning for patch-based matching. CVPR 2015.

[3] S. Zagoruyko and N. Komodakis. Learning to compare image patches via convolutional neural networks. CVPR 2015.

以上兩篇文章類似,使用卷積網路做圖像局部特徵的提取。在比較兩個 patch 的相似度時使用的是一個分類網路。分類網路是用 Softmax Loss 訓練的。

[4] E. Simo-Serra, E. Trulls, L. Ferraz, I. Kokkinos, P. Fua, and F. Moreno-Noguer. Discriminative learning of deep convolutional feature point descriptors. ICCV 2015.

使用卷積網路提取圖像局部特徵,得到的 patch 描述之間的距離可以直接用歐式距離度量。可以在各種應用中直接替代 SIFT 等特徵。網路是用 Contrastive Loss 訓練的,

[5] Z. Liu, Z. Li, J. Zhang and L. Liu. Euclidean and hamming embedding for image patch description with convolutional networks. CVPR Workshops 2016.

提出了一種名為 DELFT (Deeply Learned Feature Transform) 的特徵代替 SIFT 等其他 patch 描述方法。也可以得到以 Hamming 距離度量的二值特徵代替 ORB 等。網路訓練使用的是比 Contrastive Loss 更好的 Triple Loss。

[6] Kwang Moo Yi, Eduard Trulls, Vincent Lepetit, Pascal Fua. LIFT: Learned Invariant Feature Transform. Accepted to ECCV 2016 (spotlight). arXiv:1603.09114

提出了一種基於神經網路的方法,解決了從 detection, orientation estimation 到 feature description 整個流水線的問題。(感謝另一位匿名答主指出這一文獻)


不容否認的是,Deep Learning 正在不斷侵蝕傳統方法的領地。在分類問題上自然不必說了。而哪怕是題主說的 image stitching/stereo matching 這類問題,也有越來越多的人開始使用 Deep Learning 的方法。

碰巧昨天剛看了arXiv上一篇文章,Magic Leap的研究人員上個月發上去的。鏈接: https://arxiv.org/abs/1606.03798 就是用深度網路去做圖像之間的Homography estimation (跟題主說的image stitching很類似)。之前最通用的辦法是提取特徵點,然後用RANSAC去匹配。通常情況下,RANSAC的效果都是不錯的,但是當第一步的特徵點不準確時,還是會出現問題。文章的想法就是要採取一種 end to end 的模式,讓網路自行去決定產生這些基本特徵,避免人為選取特徵點的誤差。而題主所說的"沒有訓練樣本"的問題其實是不存在的。訓練樣本可以人為生成。比如此文中,作者生成隨機的homography參數,作用到已有的自然圖片上,從而可以生成無限數量的訓練數據。

不過就像有回答所說,SIFT/SURF 之類的方法想法非常有用,可以對深度網路的設計有啟發。個人也絕不希望這些方法/思路的消亡,相信也絕對不會。

==============

小廣告

了解更多歐洲科技動態,敬請關注科技蜘蛛 - 知乎專欄 和同名公眾號。


深度學習是一種自學習的特徵表達方法,比SIFT這種依靠先驗知識設計的feature不知道的表達效果高到哪裡去。早在13年大家都發現神經網路的最後一層的local特徵和SIFT性質差不多,但是表達能力強太多。SIFT能做的事情CNN都能做,表達效果也強,那深度學習取代SIFT是遲早的事情(或者說已經發生的事情)。順便破解下MYTH:

深度神經網路識別率的提高建立在需求大量訓練樣本的基礎

拿pre-train好的模型直接用就可以了,何須大量訓練樣本。

在一些沒有訓練樣本的應用(image stithing/stereo mathing)仍然無法很方便的使用deep neural network來識別和匹配(目前來看)。

你把卷積層的activation提取出來不就是可以拿來做stitching的local feature了嗎?(感覺是一個可以探索的方向)

未來還有SIFT/SURF這種固定特徵提取演算法的生存空間嗎?

除非是嵌入式這種計算資源極端受限的情況……但是現在大家都在試著implement CNN FPGA甚至ASIC了


No free lunch theorem for machine learning:

The 「No Free Lunch」 theorem states that there is no one model that works best for every problem. The assumptions of a great model for one problem may not hold for another problem, so it is common in machine learning to try multiple models and find one that works best for a particular problem. This is especially true in supervised learning;

有的時候feature engineering還是需要的,儘管DNN在大部分情況下都很好。


Domain-Size Pooling DSP-SIFT 14年的工作,應該可以歸類為handcrafted feature。所以應該還沒有被滅絕掉


總體趨勢是通過Deep Neural Network學習得到的feature會取代SIFT/SURF等手動設計的特徵。雖然目前學習得到的特徵在特徵檢索、分類等任務上都有提高,但對於核心的匹配問題在實際數據上的提高並不十分明顯,甚至在不同的數據上得到的評測結果頁不甚一致。

去年10月ECCV 2016 舉辦了一個local feature設計的Workshop,參見:

Local Features: State of the art, open problems and performance evaluation

正如與會的幾位feature學習和設計的大牛所指出的,在核心的匹配問題上,CNN學習得到的特徵目前並沒有取得突破性的進展。在Oxford 大學的VGG組提供的Hpatch數據集上,我們可以看到rootsiftpca取得了最好的匹配效果。下圖節選自會議提供的評測報告:

這也給特徵設計留下了一些思考:

現在流行的feature學習的siamese或者triplet等結構是否缺失了某一部分?

雖然CNN可以挖掘patch裡面包含的信息並建立對於複雜幾何和光照變化的不變性,但是這種學習到的不變性是否過度依賴於數據而無法有效泛化到真實匹配場景中的所遇到的影像之間的複雜變化呢?


不會吧,實驗室現在接的項目是thermal image,發現反而用deep learning的效果不好。


LIFT.

已經做出來了。


關於樓主的問題,我想說一個題外話,怎麼構建他的金字塔結構······我個人主頁也有問的這一個問題,希望樓主能解答疑惑····THANK YOU!


訓練樣本足夠多的話,CNN相關於考慮了所有可能的特徵情況,效果自然比SIFT要好了。


推薦閱讀:

目前主流的attention方法都有哪些?
CNN為什麼能使用在NLP?
學習神經網路,需要哪些前導知識?
基於深度學習的單目圖像深度估計有哪些比較好的參考資料(書籍、博客、論文.....)?求大神指點。
Google 人工智慧引擎 TensorFlow 開源會帶來哪些影響?

TAG:圖像處理 | 特徵提取 | 深度學習DeepLearning |