GeoDesc: Learning Local Descriptors by Integrating Geometry Constraints


這篇論文提出了一種新的局部描述子學習方法,有一些點值得學習,記錄下來以供參考。文章中涉及了一些3D reconstruction、structure from 的知識,不是很了解,所以理解可能有偏頗。

 

一。介紹

基於網絡學習的局部描述子在patch-based benchmark取得了很好的結果,但是在最近image-based 3D reconstruction的benchmarks上面沒有得到泛化性能的驗證。所以作者提出一種描述子學習方法,可以受益於數據生成數據采樣,以及損失函數。這三點一般也作為論文的創新之處。所提出的GeoDesc在重建任務上得到好的結果,並且提供了一個在structure-from-Motion(sfM)應用的指導。一個有效的descriptor應當同時對photometricgeometric變換保持不變性。而基於學習的descriptors雖然在patch-based benchmarks(如HPatches datasets)上取得了很好的結果,但是在image-based datasets(如ETH local feature benchmark)上,基於學習的描述子 表現劣於傳統的手工描述子。所以在實際應用場合中,基於學習的descriptors還有很大的提升空間。

而這種問題出現的原因則可能是缺乏泛化性能,即數據不充足。作者認為之前許多工作在采樣這里做了改進,但是還是限於數據來源,例如Brown數據集只有三個sets。所以很容易過擬合。為了解決這個問題,L2Net等應用了額外的正則來影響特征學習,與此同時,LIFT等文想提升數據多樣性,從reconstructions of Internet tourism data中來生成訓練數據

此外,缺乏對於實際應用例如sfM的指導,特別的,ratio criterion幾乎沒人注意或被認為不適於learned descriptors。而ratio criterion在sfM等中可以很好提升,所以該怎么應用ratio criterion呢?

在本文,提出了一套解決方案,可以利用多視角重建數據中的geometry constraints。特別的強調了數據采樣的重要性。在patch-based和image-based的情況下都取得了好的結果。貢獻如下:

  • 提出了一種batch reconstructed method模擬pair-wise的matching,來有效的在學習過程中進行采樣有用數據
  • 提出一種損失函數來減少過擬合,並通過geometry constraints來提升表現
  • 提供關於ratio cirterion的指導,面向learned descriptors的真實應用

 

二。 相關工作

現有網絡因為效率所需、數據語義信息較弱(patch攜帶語義極少)相對較淺,池化操作相對較少,由L2 pooling或者在L2Net中被移出。尺度信息體現在CS架構,旋轉不變性等也有加入。損失函數就不解釋了,pair、triplet、structured等都有。其中triplet loss表現更好,但是容易過擬合。

 

三。方法

1. 網絡結構采用L2-Net,每個卷積層后面加BN,除了最后一層。對於數據來說,討論一種實用的pipeline使得自動產生合適的數據來用於descriptor learning。很好奇如何做的這一點?

1)2D correspondence generation

類似於LIFT,我們依賴於成功的3D reconstructions來自動生成2D correspondences的真實ground truth。首先,從標准sfM中獲取sparse reconstructions,然后通過映射3D點雲來生成2D correspondences。一般而言,sfM用來過濾大多數圖像中的非匹配關系。盡管有sfM驗證,生成的對應仍然含有噪聲外點等,尤其對於Internet tourism datasets datasets(這個數據集不了解...見下圖1a)。這個數據不太容易輕易被過濾掉錯誤匹配。為了提高數據質量,在LIFT下一步計算3D Delaunay triangulation來過濾(這個方法也不了解...)。

 

2)Matching patch generation

下一步根據2D projection來裁剪roi,這種方法得到的patch大多沒有尺度和旋轉的差異,因此適於訓練。在后面實驗中,利用同樣方法來實現scale和rotation不變性。

 

2.Patch similarity 和Image similarity

定義Image similarity為對應的平均patch similarity,image similarity對於下文中data sampling很有用。

 

3. Batch construction

對於descripors學習,已有方法利用pair或triplet來作為輸入。而收斂速度和有用數據非常相關。這里的有用數據是指學習過程中產生有意義的損失。然而有效采樣這種數據一般而言是有挑戰性的,因為可組合的pair或triplet之多

因此,困難挖掘anchor swap被相繼提出,此外,有效的batch construction也用來在loss func中對比參考patch與所有batch里的samples。

受之前工作啟發,我們提出一個新奇的batch construction方法,依賴於sfM中的geometry constraints來產生有用數據。具體操作是:給定一對image,提取一個匹配集合:

N1是集合尺寸,x對為通過sfM驗證的匹配patch,一個訓練batch在N2個匹配集合中構建。

這種方法相比於L2Net和HardNet來說,並非在整個database中隨機選取。這種方法產生更加困難的樣本,對於學習更有挑戰性。如圖2d所示,該方法構造的patch在一個batch中包含許多相似的pattern。而這種訓練樣本是有好處的。同時為了效率,作者剔除了那些長得非常相似的樣本對(簡單正樣本!!!)

 

4. Loss function

由兩項組成:structured loss和geometric loss

樣本類似hardnet也是輸入只有匹配對!

1)structured loss

HardNet中基於“hardest-in-batch”策略,並且顯示了距離margin比L2Net中的對數似然更加有效。然而我們注意到將這種策略直接用到我們的自己的批量數據會產生過擬合。我們認為這是太強的約束導致的。在這種策略中,損失根據樣本中產生最大損失的樣本來計算(產生更大損失的樣本理應得到更大的關注),一個大的margin用來將非匹配對距離推離匹配對。在我們自己組建的批量數據中,已經有效的采樣了一些視覺上相似的困難樣本,這時再采用一個大的margin將是不合適的,阻塞學習。一個簡單的解決方案就是減小margin的值,然而這么做將損害性能!

為了避免上述的限制,並且更好的利用我們的batch data,我們提出如下的loss:首先計算一個match set的structured loss,給定正則的特征F1和F2,得到cosine相似度矩陣S,然后得到如下loss:

alpha屬於0-1為距離比,將不匹配對推離匹配對。最終我們計算美分match set的損失均值作為該batch的loss。

這個loss與hardnet loss有三點不同:1.采用余弦相似度而非歐式距離,計算更高效。2.利用distance ratio margin作為自適應閾值來減少過擬合而不是固定的距離margin(hardnet中設為1)。3.計算了每個損失項的均值而非最大(hardest-in-batch)來配合所提出的batch construction。

 

我的理解

關於這個損失函數,我認為對於一個batch(作者自己構建的困難匹配對)中所有的匹配樣本對來說,求得一個相似度矩陣S,那么類似於hardnet,這個矩陣的對角線為匹配對,非對角線為不匹配對。而相似度矩陣中的元素值范圍都在-1到1之間,即cos范圍。所以我們希望所有的正樣本的相似度盡可能趨近於1,負樣本的相似度盡可能趨近於-1。再者,與hardnet不同的是,上面的loss中對於每一對負樣本對都與兩個正樣本對來求損失。也就是說最終的負樣本計算了N(N-1)次,而正樣本計算了2N次。我認為這與正樣本存在更多困難樣本有關。而hardnet中正負樣本對計算次數都為N,這是不是說明正樣本多次貢獻對於優化更加有利?

對於所有正負樣本而言,一般論文中都認為負樣本組合數量太多,從而簡單負樣本也太多,從而需要挖掘困難負樣本,那么正樣本呢?隨意丟過來一對正樣本,由於在一定角度或偏移范圍內才為正樣本對,這個度我認為人眼很難把握,那么機器也需要大量樣本訓練才能區分,所以我認為好的訓練樣本一定是困難的正樣本+困難的負樣本。並且按照本文的思路,正樣本應該略側重一些?

只訓練困難樣本就夠了?不,在訓練時只訓練困難樣本容易過擬合,泛化性能降低。所以作者的margin利用了自適應設置。

下圖是我自己可視化的正負匹配樣本對的分布圖: 

                  

                                        3epoch                                                                                                           15epoch

上圖是我可視化的一個batch(128)個正負匹配對。(采用norm后的128維歐式距離度量,所以距離最小值為0,最大為1.414),a是匹配樣本,b是非匹配樣本。可以看到匹配樣本分布較為分散,簡單、一般、困難的正樣本都有,而優化了一定程度后分布變化很小,優化很困難,無法都集中在距離小的區域。而負樣本很容易優化,大多都集中在1.0以上。 所以我認為正樣本是應該多次優化。理想的分布應當是兩個正太分布均值相距很遠,而方差都比較小。

 

作者又提出了另一個loss來略提升性能:

2)Geometric loss

盡管上面的loss可以使得正對與負對區分開來。但是並未明確保證自己的類內間距足夠小。所以作者附加了一個pair-wise loss,但是直接利用會使結果惡化:a risk of positive collapse and overfitting。所以作者根據相似度的不同程度為損失函數設計了一個分段操作:

可以看到相似度大的圖像塊的閾值相對而言也大,並沒有令所有塊的相似度都大於某個固定的閾值。

此外,可知第二個loss並非主loss,所以加權0.2。loss1中的alpha取值為0.4。 match set=64, batch size=12。

 

四。 實驗

作者介紹了三個數據集。我只對HPatches略有了解...

1)HPatches benchmark

這個數據即包含了3個任務:patch verification、patch matching、patch retrieval。不同程度的幾何擾動加載形成了EASY,HARD,TOUGH三種patch groups。在驗證任務中,兩個子任務基於負對是否在同一sequence或否(SAMESEQ, DIFFSEQ)采樣來區分。在匹配任務中,兩個子任務定義為是否主要影響為視角view或光照illumination。所有任務采用mAP來判定。結果:

 

2) Heinly benchmark

不同於HPatches是在image patches上做實驗,此benchmark評估pair-wise image匹配根據不同類型的photometric或者geometric變化。說白了就是基於image而非patch!其他沒有什么。

 

3) ETH local feature benchmark

此數據關注於image-based 3D重建任務。

 

五。Practical Guidelines

Ratio criterion:對比最近鄰和次近鄰的距離,如果前者比后者小於一定的閾值ratio,則認定為是match。對於sfM任務,ratio criterion提高了整個匹配質量,RANSAC效率。對於sfM的應用有了很好的提高。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM