MatchNet: Unifying Feature and Metric Learning for Patch-Based Matching
CVPR 2015
本來都寫到一半了,突然筆記本死機了,淚崩!好吧,重新寫!本文提出了一種聯合的學習patch表示的一個深度網絡 和 魯棒的特征比較的網絡結構。與傳統的像SIFT特征點利用歐氏距離進行距離計算的方式不同,本文是利用全連接層,通過學習到的距離度量來表示兩個描述符的相似性。
本文的貢獻點如下:
1. 提出了一個新的利用深度網絡架構基於patch的匹配來明顯的改善了效果;
2. 利用更少的描述符,得到了比state-of-the-art更好的結果;
3. 實驗研究了該系統的各個成分的有效作用,表明,MatchNet改善了手工設計 和 學習到的描述符加上對比函數;
4. 最后,作者 release 了訓練的 MatchNet模型。
首先來看本文的網絡架構:
主要有如下幾個成分:
A. Feature Network.
主要用於提取輸入patch的特征,主要根據AlexNet改變而來,有些許變化。主要的卷積和pool層的兩段分別有 preprocess layer 和 bottlebeck layer,各自起到歸一化數據和降維,防止過擬合的作用。
B: Metric Network.
主要用於feature Comparison,3層fc 加上 softmax。
C: 在訓練階段,特征網絡用作“雙塔”,共享參數。雙塔的輸出串聯在一起作為度量網絡的輸入。The entire network is trained on labeled patch-pairs generated from the sampler to minimize the cross-entropy loss. 在預測的時候,這兩個子網絡A 和 B 方便的用在 two-stage pipeline. 如下圖所示:
MatchNet 的具體參數如下表所示,注意Bottleneck 和 FC 中參數的選擇。
接下來看看“網絡的訓練和測試”,即:
特征和度量網絡聯合的訓練,利用隨機梯度下降的方法,可以最小化下面的交叉熵損失函數:
其中,yi 是輸入pair xi 的0/1標簽。1代表匹配。帶箭頭的 yi 和 1-yi 分別表示 softmax activations,是在FC3 上的兩個點v0(xi) 和 v1(xi)計算得來的。計算公式如下:
上面公式中,帶箭頭的 yi 用來表示公式1中預測標簽為1的概率。
由於數據正負樣本的不平衡性,會導致實驗精度的降低,本文采用采樣的訓練方法,在一個batchsize中,選擇一半正樣本,一半負樣本進行訓練。分別將patch輸入給特征塔 和 度量網絡,單獨的進行訓練,分為兩個階段進行。首先,對所有的patch進行特征編碼,然后,我們將feature進行成對處理,輸入給度量矩陣然后得到其scores。
算法總結:
實驗結果貼圖:
我的感受:
看完這篇文章,總體來說,有點懵逼!奇怪的是,作者竟然講的津津有味!還記得開篇,作者說這文章的主要貢獻點是提出了一種訓練網絡提取feature 和 度量feature之間的相似性。Well,提取feature主要體現在“雙峰”上,哦,我錯了,是“雙塔”。這個無可厚非,到了全連接層,就是要得到的feature了。那么,度量feature之間的相似性,體現在哪里呢?哦,對,體現在最后最后的 全連接層上。那么,與傳統方法的不同在於,本文的度量方式,並非簡單的歐氏距離,而是學出來的。
怎么體現學出來的呢???
先從兩張圖像中提patch,將兩種patch分別采樣,輸給兩個提取特征的網絡,然后將pool4 的輸出降維(通過Bottleneck layer),將“雙塔”的輸出串聯起來,輸入到 fc 層,兩層fc之后,輸入給softmax,此時輸出 0 或者 1,分別代表匹配或者不匹配,然后將此結果輸出到 交叉熵計算loss,通過這樣的方式,完成整個網絡的訓練,只是此處,提取特征的網絡層 和 度量網絡 是單獨訓練的,“雙塔”的參數也是共享的。
講到這里,也許就是這個文章的主要內容了。Ok,該怎么借鑒,就看自己的了。
附一張美照,哈哈,明天實驗室整體出動去happy,玩真人 CS 和 燒烤,突然感覺好開心啊。。哈哈。。。