論文Learning Spread-out Local Feature Descriptors
為什么介紹此文:引入了一種正則化手段,結合其他網絡的損失函數,尤其是最新cvpr 2018的hardnet(Working hard to know your neighbor’s margins: Local descriptor learning loss),可以達到state-of-the-art。同時本文大量總結性工作也比較好(據以參考下面第3節),所以一同拿來分享,同時參考上一篇閱讀也不錯。代碼:https://github.com/ColumbiaDVMM/Spread-out_Local_Feature_Descriptor 、 結合下一篇博客中的hardnet:https://github.com/ColumbiaDVMM/hardnet
1. 摘要
本文提出一個簡單有力的正則化技術可以顯著提高在學習特征描述子中的pairwise和triplet loss。這里就是不論是siamese還是triplet結構,輸出是feature embedding時,該正則技術都管用。本文思想就是要充分利用特征空間,作者認為好的特征描述子應該足夠“apread-out“到整個空間。就是說提取到的特征向量應該盡可能散開,可以理解是最大化類間距離,最小化類內距離。 受到均勻分布uniform distribution啟發,這里使用正則項來最大化發散特征向量。展示了基於該正則項的triplet loss遠遠優於已有的歐式距離。作為拓展,該技術還可以被用來提高圖像級別的feature embedding。
2.介紹
所以本文是以圖像特征描述子出發的,沒有涉及輸出為概率情況。尋找正確匹配的挑戰主要是圖像塊尺度、視角、光照等。因此學習到的descriptor應該:匹配塊在描述子空間應該close,而不匹配塊應該far-away。pairwise損失和triplet損失是最常用的損失。目前有許多工作例如smart sampling strategies和structured loss(L2-Net)來提升triplet loss。特別的,上一篇博客中的SNet,利用global loss來區分匹配和不匹配對距離的分布。這個方法避免了復雜采樣策略的設計並且展示了含有outliers的訓練魯棒性。
global loss的成功促使探索描述子空間的特性,我們的主要思想是好的特征描述子應該充分spread out,充分利用子空間。所以引入的這個正則項可以在沒有困難樣本挖掘的情況下優於所有的歐式距離。
3. 背景
1)pairwise loss
輸入為一對匹配或者不匹配的圖像。
用的最多的pairwise loss即為contrastive loss,即對比損失函數:
f(.)即為提取的特征向量,對比損失在lecun文章中最早提出,但是該函數容易過擬合,並且margin的選擇非常關鍵。
2)Triplet loss
輸入為a triplet of samples。常用的triplet loss為ranking loss:
理想的ranking loss為分離匹配和不匹配樣本的距離至少為margin。pairwise和triplet loss的主要不同是前者考慮匹配和非匹配圖像的絕對距離,然而triplet loss考慮匹配和不匹配對的相對距離。所以一般triplet loss比pairwise loss在local descriptor learning中有更好表現。
3)Improvements
triplet loss和pairwise loss的主要問題是隨着訓練樣本數目的增多,采樣所有樣本對、組變得不可行。而且只有相對一小部分樣本可以有效被用來訓練。正如實際觀察到的,在很少的幾個訓練周期后,許多樣本就會滿足這一限制,訓練變得沒有效率。一個可能的解決方法是移除所謂的簡易樣本並且加入新的困難樣本。然而決定哪些樣本去移除或者添加是個難點【17,19】,此外僅僅關注不滿足網絡限制的樣本太多會導致過擬合【17】。
【1】中tfeat提出一個提升版本的triplet loss,具體做法是在原損失函數中應用了困難負樣本挖掘。思想是triplet中有兩對圖像是不匹配的,通過選擇更加不匹配的那一圖像對可挖掘相對更困難的樣本。這稱為anchor swap。【8】中提出的global loss並與傳統的triplet loss結合用來解決在pairwise和triplet loss中的采樣問題。global loss並沒有考率采樣問題,而是考慮一個batch中所有匹配和非匹配樣本,並計算其距離的均值和方差。其主要思想是划分兩個均值至一個margin,並最小化方差。作者認為這個方法有兩個缺點:首先距離的分布不同的類差別可能很大,利用一個batch的樣本來估計分布可能不夠穩定。其次margin加入了額外的計算量。
結構化損失Structured loss【12,13,14,21,23】考慮所有匹配和非匹配對在一個batch中。通過小心設計loss 函數,結構化損失有能力關注困難樣本。【14】提出lifted structured similarity softmax loss。【21】中的N-pair損失通過利用一個更高效的batch結構來實現。
本文的動機是好的描述子應充分利用整個描述子空間。文中提出的正則項來促進這種soread-out 特性。這個正則項很容易與其他損失結合,實驗證明該正則項可以提高表現。
4. 方法
一種刻畫spread-out的方法是:給定一個數據集,我們說學習到的描述子是spread-out的,如果任意兩個隨機采樣的非匹配對是以很高概率近似正交的。作為一個很顯然的例子,我們注意到均勻分布uniform distribution具有這個性質。為此作者提出兩個命題,並給予了證明,這也是該正則項的數學來源。
當p1和p2模為1時,其內積就等於p1p2 = conθ。
Proposition 1.
假定是從d維空間中的單位球面上均勻采樣的兩個獨立點。每個點代表一個d維L2正則后的向量。那么
內積的概率密度為:
1)
其中分母B(a,b)為beta function。
證明: 這些d維空間中的向量都是被L2正則化后的,所以模為1,所以-1<=<=1,所以上式第二項的概率密度為0。為了求第一項的概率密度,我們可以首先計算累積分布函數CDF。因為CDF的導數即為概率密度函數PDF。這里僅考慮-1<=s<0的情況,因為0<=s<1相似。不失一般性,我們固定p1,並假定s=conθ,如圖1。而cons函數在【0,pi】之間為單調函數,所以
<=s當且僅當p2在圖1中的藍色球形。又因為p2在藍色球形中均勻隨機采樣,所以
<=s的概率等於藍色球形占整個球形的比值。d-1維球形的區域面積為:
其中S0為整個球形面積,r=1為半徑。h為藍色球形的高,可以得出:h=r+rconsθ。I()項為正則化的不完備(regularized incomplete)beta函數。因此將r、h帶入上式得:
那么S0/S即為<=s的概率:
那么有了上面的累計概率分布,就可求導得到1)式中的概率密度函數了。
如圖2,從d維空間中的單位球面均勻采樣得到的兩個點的內積的概率密度如上圖,我們可以看到維數d越高,大多數圖像對越近似於正交。基於上述觀察,你可能希望使學習到的描述子匹配這種均勻分布。有兩方面不可行,1)學習到的描述子的分布不僅取決於學習到的模型,還有圖像本身(不可控)。2)技術上難以匹配這兩個分布。相反,本文受此啟發提出一種正則化技術,The regularization encourages the inner product of two randomly sampled non-matching descriptors matches that of two points independently and uniformly sampled from the unit sphere in its mean and second moment(從均值和第二力矩均勻采樣)。
下面的命題展示了兩個均勻采樣的點,其均值和第二力矩分別為0和1/d。
Proposition 2.
假定是從d維空間中的單位球面上均勻采樣的兩個獨立點。那么:
證明:
由於對稱性,
Global orthogonal regularization(GOR)
作者提出的正則化試圖來匹配上面命題2中的均值和二階矩。定義這種正則化為GOR(Global orthogonal regularization)。那么給定N個不匹配對,采樣描述子的內積的均值為:
采樣的內積二階矩為:
那么GOR定義為:
d為描述子的維度。看起來很簡單,就是對非匹配對輸出的特征向量進行了約束!而之前的global loss也是對特征向量的約束,只不過是對所有匹配非匹配樣本!
同樣也是在一個batch中來考慮這個約束,第二項約束是一個hinge loss形式,為么呢?因為多數非匹配樣本早已滿足這個約束,沒有必要強制M2=1/d。為此作者對於第二項嘗試了不同的loss,例如l1損失表現差不多,l2損失導致一點衰減。
這個正則性可以與任何損失函數一起使用:
在本文實驗中,測試了GOR與對比損失函數、triplet loss、lifted structured similarity loss和N-pair loss一同使用的結果。
5. 實現
GOR是對於非匹配對、輸出為feature embedding下的情況使用。同時這個feature向量是經過l2正則化的,以保證模為1。
以下為結果,參數配置見論文。
看出變化還是很大的,降了大約2個點左右。
看出加了GOR之后,兩個分布更尖,方差變小。均值拉大。更易於區分。這個作用還是蠻像global loss的。
同時作者給出了feature embedding維數d=128最好,超參數alpha設為1。
源碼:https://github.com/ColumbiaDVMM/Spread-out_Local_Feature_Descriptor
附:論文思想很像上一篇SNet,都是附加一個loss,global loss是對於輸出不限制,可以是pairwise similarity和feature embedding,同時對匹配、非匹配都可以,損失類型都可以siamese或triplet。而gor loss對於輸出限制為feature embedding,同時只作用於非匹配,損失類型不限。所以可集中實現這兩個函數,做一個對比。