Learning to Compare Image Patches via Convolutional Neural Networks

Paper : Learning to Compare Image Patches via Convolutional Neural Networks
Code :

摘要

個人認爲,本文在孿生神經網絡上沒什麼改進點,值得閱讀的點是對雙通道、孿生神經網絡和僞孿生神經網絡之間實驗效果的比較,但是文章中所提到的在Image Patch Comparison 中引入CNN和SPP Net 感覺不算創新。使用CNN代替傳統的人爲設計的特徵提取方法,例如SIFT或是HOG或是DAISY之類的在2015年基本上都用濫了。

三種網絡結構

首先不考慮圖像塊的大小是任意大小,先假定是固定大小64*64,文中列出了3種神經網絡的結構:孿生神經網絡,僞孿生神經網絡,雙通道神經網絡。對於三種神經網絡,我們將分支的輸出連接起來,使用FC層直接輸出預測值。孿生與僞孿生兩個分支具有相同的層結構,區別在於是否共享每一層的參數,而雙通道網絡將兩灰度圖輸入看作是一張雙通道輸入的圖。三種神經網絡的參數量由小到大。

在這裏插入圖片描述

三種子網絡結構

文中主要使用了三種網絡結構構成孿生/僞孿生/雙通道的子網絡

  • Deep Network:處理計算機視覺的常規深度卷積神經網絡
  • SPP Network:詳情見blog,處理任意尺寸的輸入
    在這裏插入圖片描述
  • Central-surround two-stream network:包含以下兩個獨立的數據流,中心和背景,支持對輸入在不同的分辨率下對數據進行處理,Central-surround two-stream network與孿生神經網絡之間的結合如下所示
    • 中心高分辨率數據流:對 64*64 的輸入圖片進行中心裁剪到 32*32
    • 背景低分辨率數據流:對 64*64 的輸入圖片進行降採樣
    • 中心-背景雙數據流網絡更強調位於中心的像素信息,而且多分辨率信息有助於改善圖片匹配的表現
      在這裏插入圖片描述

訓練

損失函數如下所示

minwλ2w2+max(0,1yioinet) \min_w \frac{\lambda}{2}||w||_2 + \sum \max(0,1-y_io_i^{net})

其中 oineto_i^{net} 表示網絡的輸出,是一個標量,yiy_i 是ground truth label,yi=1y_i = -1 表示不匹配,yi=+1y_i = +1 表示匹配。

數據增廣方法包括水平翻轉,豎直翻轉,旋轉90°、180°、270°

測試

在這裏插入圖片描述
其中的 l2l_2 是指在測試時,不適用FC層輸出預測結果,而是將兩分支提取出的特徵向量使用 l2l_2 損失函數衡量,根據實驗數據可以得到以下幾點結論

  • 基於雙通道的網絡進行圖像塊匹配顯著優於其他,這說明在網絡的第一層就將兩個圖像的信息進行聯合處理很重要
  • 2-channel 2-stream 的網絡效果最優,這說明多分辨率對圖像匹配的表現有顯著提升
  • 儘管網絡沒有使用 l2l_2 進行損失優化,但是測試時使用 l2l_2 依舊可以得到較好的結果

作者在 Mikolajczyk 數據集上進行的任意尺寸輸入的性能測試,結果如下

在這裏插入圖片描述
可以發現,SPP Net 的引入對錶現有一個比較大的提升

總結

個人感覺這篇文章乾貨比較少,通過實驗觀察到的幾個結論沒有進一步的討論。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章