Siamese Network (应用篇2) :孪生网络用于图像块匹配 CVPR2015
參考論文:Zagoruyko S, Komodakis N. Learning to compare image patches via convolutional neural networks[J]. computer vision and pattern recognition, 2015: 4353-4361.
會議水平:CVPR2015
1. 摘要 及 目的
作者研究了如何從圖像數據中直接學習到一個普適性的相似度函數用于圖像匹配。匹配問題是是很多計算機視覺應用問題的基礎。作者考慮到圖像會發生大規模的形貌尺度等變化,所以直接訓練了一個CNN模型進行參數擬合。特別的,作者研究了很多的神經網絡框架,主要探索了那些網絡結構更勝任圖像匹配問題。同時,作者也進行了大量的數據測試,結果證明,采用孿生網絡進行圖像匹配具有非常大的優勢。
2.方法 及 細節
圖1. 縮略圖。作者的目標在于學習一個通用的相似性測度函數,并應用于圖像匹配中。為了編碼這樣一個函數,作者大量探索了卷積神經網絡結構。
為了研究不同網絡結構的速度與時間的考量,作者研究了當下最普遍的雙通道卷積網絡、孿生卷積網絡、偽孿生網絡。
圖2. 作者研究的三種基本的網絡框架。左邊是雙通道卷積網絡;右邊是孿生卷積網絡和偽孿生卷積網絡(孿生與偽孿生之間的區別在于孿生網絡共享權重,非孿生網絡不共享權重)。青色代表Conv+ReLU,,紫色代表Maxpooling,黃色代表全連接層(ReLU函數也存在于全連接層后)。
2.1 2-Channel是什么?有什么好處?
2-channel是把圖像對合并成一張圖像雙通道。對于灰度圖像這種方法可以理解,但是對于RGB圖像,該方法是否可行?原理在哪里還需要有更加明確的解釋。
和孿生結構相比,2-channel方法明顯靈活性更大,同時也很容易去訓練。但是,通常來講,訓練階段2-channel結構更浪費時間,因為他需要將標準圖像塊與所有的候選圖像塊進行組合,原則上,這是很浪費時間的。
這樣算法的最后一層直接是全連接層,輸出神經元個數直接為1,直接表示兩張圖片的相似度。直接用雙通道圖片進行訓練會比較快,比較方便,當然CNN,如果輸入的是雙通道圖片,也就是相當于網絡的輸入的是2個feature?map,經過第一層的卷積后網,兩張圖片的像素就進行了相關的加權組合并映射,這也就是說,用2-channel的方法,經過了第一次的卷積后,兩張輸入圖片就不分你我了。而Siamese網絡是到了最后全連接的時候,兩張圖片的相關神經元才聯系在一起,這就是2-channel 與Siamese給我感覺最大的區別。這個作者后面通過試驗,驗證了從第一層開始,就把兩張圖片關聯在一起的好處,作者的原話:This?is?something?that?indicates?that?it?is?important?to?jointly?use?information?from?both?
patches?right?from?the?first?layer?of?the?network.
2.2 作者采用的策略
1. 作者采用了補充材料【1】中提及到的技術,具體為利用small+ReLU代替更大的卷積層,也可以直接理解為加深網絡深度而不是拓寬網絡寬度。
2. 目標-環境雙流網絡結構。
圖 3. 目標-環境雙流網絡架構。實際上作者采用的依舊是孿生網絡架構來處理,需要共享權重。實際上可以理解為多分辨率對圖像匹配效果的影響。
這個創新點,需要對上面的網絡結構稍作修改。假設我們輸入的是大小為64*64的一張圖片,那么Central-surround?two-stream?network的意思就是把圖片64*64的圖片,處理成兩張32*32圖片,然后再輸入網絡,那么這兩張32*32的圖片是怎么計算得到的?這就是Central-surround方法,也就是第一張圖片是通過以圖片中心,進行裁剪出32*32的圖片,也就淺藍色區域的圖片。其實這個就像多尺度一樣,在圖片處理領域經常采用多分辨率、多尺度,比如什么sift、還有什么高斯金字塔什么的,總之作者說了,多分辨率可以提高兩張圖片的match效果
3. 空間金字塔網
圖 4. 空間金字塔策略應用到孿生網絡。
空間金字塔池化采樣:這個又稱之為SPP(Spatial?pyramid?pooling)池化,這個又什么用呢?這個跟上面的有點類似,這個其實就類似于多圖片多尺度處理,我們知道現有的卷積神經網絡中,輸入層的圖片的大小一般都是固定的,這也是我之前所理解的一個神經網絡。直到知道SPP,感覺視覺又開闊了許多,菜鳥又長見識了。我們知道現在的很多算法中,講到的訓練數據圖片的大小,都是什么32*32,96*96,227*227等大小,也就是說訓練數據必須歸一化到同樣的大小,那么假設我的訓練數據是各種各樣的圖片大小呢?我是否一定要把它裁剪成全部一樣大小的圖片才可以進入卷積神經網絡訓練呢?這就是SPP算法所要解決的問題,訓練數據圖片不需要歸一化,而且江湖傳說,效果比傳統的方法的效果還好。
4. 數據增強、
To combat overfitting we augment training data by flipping both patches in pairs horizontally and vertically and rotating to 90, 180, 270 degrees.為了防止出現過擬合,作者也進行了數據增強,具體為水平和垂直翻轉,旋轉圖像對90度,180度,270度。
2.3 損失函數
w指神經網絡中的權重。o是指第i個訓練樣本的神經網絡輸出。yi∈{-1?or +1}是樣本的標簽,-1是指負樣本對/非匹配對,+1是指正樣本對/匹配對。
作者使用了一個較大的學習率1.0 with 動量 0.9.權重衰減仍使用了0.0005. 批訓練的尺寸為128. 權重采用了隨機初始化的方式。
如果輸入的是一個負樣本,那么損失函數就會增加,必須要降低網絡的輸出o。這就滿足了輸入一個負樣本對,網絡輸出也很小,即相似度分數較低。
如果輸入的是一個正樣本,損失函數會隨著o的增加而降低。這就滿足了輸入一個正樣本對,網絡輸出很大,即相似度分數很高。
3. 結論
此圖此表毫無疑問在支持作者的觀點2-channel就是好。通過對比iii和iv確實在同等實驗條件下2ch確實取得了明顯的優勢。這個是從實驗中觀測到的。具體為什么?作者也沒有講,初步感覺可能是卷積過程中,兩幅圖鄉發生了偶聯?幾個卷積下來,判別性的信息更加豐富了?但是這種方法是不是可以應用到3D塊匹配的學習中,我還是保留態度的,需要實際測試一下。(在做iii和iv實驗對比過程中,其實結構也并不是完全一致的,有學者也提出了類似的疑問,第二個全連接層2-ch使用了256個神經元,但是Siamese就是用了512個神經元。在排除參數沒有訓練穩定情況下,出現這種情況確實讓人驚訝)
此外,關于獲得的特征圖如何做相關處理?作者并沒有采用相關函數計算相關系數的形式,直接采用了全連接層(只含有一個神經元),可謂簡單粗暴啊!
?
4. 補充材料
【1】同樣數目的神經元,加深網絡深度模型性能要優于拓寬網絡深度: K. Simonyan and A. Zisserman. Very deep convolutional networks for large-scale image recognition. CoRR, abs/1409.1556, 2014. 3
【2】空間金字塔池化研究多尺度圖像查詢:He K, Zhang X, Ren S, et al. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(9): 1904-1916.
總結
以上是生活随笔為你收集整理的Siamese Network (应用篇2) :孪生网络用于图像块匹配 CVPR2015的全部內容,希望文章能夠幫你解決所遇到的問題。