解讀論文:Learning Local Image Descriptors with Deep Siamese and Triplet Convolutional Networks by Minimising Global Loss Functions
為什么要總結這么一篇舊的論文?因為里面一些方法具有總結性。
例如對於圖像塊匹配來說,我自己給出的一個划分:
- 按照網絡類型:度量學習(metric learning)和描述子學習(local image discriptor)。
- 按照網絡結構:pairwise的siamese結構、triplet的three branch結構,以及引入尺度信息的central-surround結構(此結構往往在baseline中使用進一步提升結果)。
- 按照網絡輸出:單個概率值(pairwise similarity)、特征向量(feature embedding)。
- 按照損失函數:損失函數可以是對比損失函數、交叉熵損失函數、triplet loss、hinge loss等等。此外損失函數可以帶有隱式的困難樣本挖掘,例如pn-net中的softpn等,也可以是顯示的困難挖掘等等。但是困難挖掘就一定好嗎?也不一定,可能導致過擬合是的結果變差。
而本文則是引入一個應用到mini-batch中的全局損失函數(Global Loss Functions)來提高結果,方法非常簡單,下面進入正文。
1. 摘要
為什么引入這樣一個損失函數?因為當前的siamese和triplet網絡易於陷入過擬合。所以作者提出全局損失函數來證明泛化性能的提高。同時作者驗證triplet網絡比siamese網絡產生更加精確的embedding。此外論文Improved Deep Metric Learning with Multi-class N-pair Loss Objective提到:盡管contrastive loss和triplet loss廣泛應用,但是都容易遭受收斂慢、需要昂貴的數據采樣方法來提供不平凡的pairs或triplets來加速訓練。
2. 介紹
作者介紹了當前卷積網絡的主要實現,無非就是siamese和triplet網絡及變體。注意下圖b和d。b為siamese網絡,即輸入一對匹配或者不匹配的圖像塊,輸出可以是embedding(特征向量)也可以是pairwise similarity(匹配概率值)。而d作為triplet網絡一般輸出embedding。
在b和d中作者采用全局損失函數,通過最小化屬於同一類和屬於不同類的特征的距離的方差,並最小化屬於同一類的特征的距離的均值,最大化不同類圖像塊特征的均值。就是說對於這兩類,都要最下化其方差,同時讓它們分布盡可能遠:類似下圖:
為此,作者首先利用triplet network,利用triplet損失函數+global loss。然后利用siamese network+唯一的global loss,最后利用central-surround siamese network來完成實驗。這在15年是state-of-the-art的。通過在UBC數據上發現:triplet net比siamese net有更好的分類結果(我覺得這基本毋庸置疑,三張圖同時考慮了額外信息)、triplet loss+global loss提升了單triplet loss結果、global loss來訓練central-surround siamese net達到了當時最好結果。而后,作者分析了metric learning 和local image descriptor(度量學習和描述子學習)。
3. 方法
這一節,作者看似推了一大堆公式,其實就說明了這個global loss怎么實現?其目標就是實現最小化方差、分別最大最小化均值。
首先介紹pairwise loss(包括embedding feature和similarity estimate),embedding feature的損失:
即輸出的一對特征向量,對於匹配而言距離越大損失越大,距離越小損失越小。不匹配情況反之。
然后是similarity estimate損失:
即輸出的概率值,對於匹配而言概率越大損失越小,概率越小損失越大,不匹配情況反之。
對於triplet net而言的triplet損失:
就是說對於匹配的圖像特征之間的距離要小於不匹配圖像特征的距離至少為margin:m。
很好理解,就是下圖:
下面global loss就很明確了:
作者講到siamese和triplet網絡含有大量參數,需要采樣大量樣本來訓練。然而采樣所有的圖像對不可能的,並且其中絕大多數都是簡單樣本!所以可選的方案是采樣策略。必須足夠小心,因為在困難樣本上關注太多又會導致過擬合,所以這其實很棘手。為此作者提出了這個全局損失函數。這個函數主要為了避免欠采樣(太多簡單樣本)或者過采樣(太多困難樣本)問題。所以這個損失函數就是要:1) minimise the variance of the two distributions and the mean value of the distances between matching pairs, and 2) maximise the mean value of the distances between non-matching pairs。
1)輸出是特征向量feature embedding:
t為margin,方差和均值為一個batch中匹配和非匹配樣本的特征距離的方差和均值。
2)輸出是相似概率值pairwise similarities:
同理稍微一改,方差和均值為一個batch中匹配和非匹配樣本的概率的方差和均值。
然后作者的四個實驗網絡如下:
- TNet,TLoss:triplet net+triplet loss、輸出feature embedding
- TNet,TGLoss:triplet net+triplet loss&global loss、輸出feature embedding
- SNet,GLoss:siamese net+global loss、輸出pairwise similarity estimator
- CS SNet,GLoss:central-surrond siamese net+global loss、輸出pairwise similarity estimator
注意前面兩個模型產生的是feature embedding,所以局部描述子的比較基於L2正則的距離比較。(也就是計算出特征向量后要正則一下,使得模為1!)
對於網絡結構,作者采用的是Learning to compare image patches via convolutional neural networks一文中的結構,再次強調:Finally, the output feature from both siamese networks are normalised to have unit norm。
以下是實驗一和實驗二的結果:
可以看到第二組實驗fpr95均值最小,只有8.8。這時feature embedding里最好的結果。
另外作者自己為了驗證global loss的有效性,自己隨機生成二維數據,看看分類結果:
外點明顯對b影響很大,過擬合的問題。結合了全局損失后,c好了一些,d中不受外點影響,更魯棒。
第三四組實驗結果:可以看到加上尺度信息后,直接掉了一半fpr95,也看到siamese的5.28優於上面的triplet結果。
然后是對於網絡的詳細設置,以及UBC數據的分析,這部分略過,可以在論文中找到信息。
4. 實驗與結論
從之前兩個table,我們也看到了,輸出pairwise similarity的siamese結構要優於輸出feature embedding的triplet網絡,但就siamese成對的輸入來說,在測試時比較復雜。確實是,siamese測試一對圖像得經過全連接得到一個0-1之間的概率值,而對於特征向量來說可以直接利用余弦內積得到相似度,因為這些向量都被l2 norm為1了,所以得到的也是0-1之間的概率。但是上面不能說的絕對,因為有的方法中triplet更優於siamese,這還是要看網絡結構、損失函數、優化策略等等。總結就是global loss首次運用到triplet網絡,這個損失函數作用於mini-batches,也比較好實現。
附:
利用直方圖損失來區分兩種分布:16年cvpr:Learning Deep Embeddings with Histogram Loss
思想:通過在正樣本中隨機取樣所得到的相似性比從負樣本中隨機取樣得到的相似性低的可能性。