【Person Re-ID】In Defense of the Triplet Loss for Person Re-Identification

paper下載地址:https://arxiv.org/abs/1703.07737

code下載地址:https://github.com/VisualComputingInstitute/triplet-reid

Introduction

本文主要是針對triplet loss做的改進:triplet loss最重要的步驟就是hard-mining,而在選擇hard-example過程中存在幾個問題:

  1. 耗時且無法明確定義什麼是“good”hard triplets
  2. 選擇太難的example會導致訓練不穩定
  3. 當訓練數據很大時,無法覆蓋足夠多的triplets

Learning Metric Embeddings

這一節主要介紹集中metric learning方法

Large Margin Nearest Neighbor loss

其中,Lpull 爲拉近屬於同一類的樣本,Lpush 爲拉遠不同類的樣本。由於是採用最近鄰,因此同一類中可能存在多個clusters

Triplet loss

Triplet loss是人臉識別與認證中最常用的loss,其形式爲

其中Da,pDa,n 分別表示anchor與positive和negative之間的距離。triplet loss能夠保證給定一個anchor,屬於同一類的樣本之間的距離要小於不同類樣本之間的距離。帶來的弊端是,當訓練樣本數量非常大時,幾乎是不可能訓出來的,因爲大量的easy sample覆蓋了semi-hard example。

而在標準的triplet loss實現當中,經常是一個三元組輸入到網絡中,假設batchsize=3B,則最終產生B個triplets。但這種組合最多可能達到6B24B ,因此存在大量的浪費。

Batch Hard Triplet loss

改進之一是在一個batch裏面隨機選取P類,每類隨機選取K張圖片,並且按照類別順序排好,然後對每個sample,選取最難的同一類的正例(距離最大的)和最難的不同類的負例(距離最小的)組成一個triplet來計算loss,最終產生PK個有效的loss。

Batch All Triplet loss

另外一種改進是將一個batch中所有的positive pairs都考慮進來,最終產生PK(PKK)(K1) 個triplets。

但是這種改進考慮了一個batch裏面的所有anchor-positive pair,因此是非常耗時的。而當訓練到後期時,由於許多樣例已經被正確分類,導致很多“冗餘”,從而覆蓋了很“寶貴”的hard exam。

Lifted Embedding loss

這種形式的loss是將positive pair之外所有的負例均會考慮,然後優化Loss的平滑邊界。

可想而知,這個loss的計算也是非常耗時的。

作者對這個loss的推廣是

這個loss不僅考慮了所有的負例,屬於同一類的所有的anchor-positive pair也會考慮。

Distance Measure

在本文中,作者的所有的度量方式均爲未平方的都是距離,即|ab|2 .

Soft-margin

在hinge loss function中,[m+D]+ 能夠避免修正“已經正確”的triplets,也即hard cut-off。但作者使用softplus function ln(1+exp(D))) 這種更加平滑的hinge loss,目的是使“已經正確”的triplets更加接近,從而不受超參數margin的影響,作者稱之爲soft-margin

Experiments

作者的實驗分爲兩部分:一,評估各種不同變種triplet loss的性能;二,選擇性能好的變種triplet loss在person-ReID任務中進行實驗。第二部分中使用了pretrained model 和 trained from scrach。

Training

pritrained model :作者將已經在imageNet上訓練好的resnet-50的最後一層換爲兩個全連接層,第一個全連接層有1024個輸出,後面接BN和ReLU,第二個全連接層有128個輸出,作者稱之爲TriNet

Trained from Scratch :作者稱之爲LuNet。

  1. 沒有Hard Mining的 Ltri 往往模型效果不好,如果加上簡單的offline hard-mining(OHM),則效果很不穩定,有時候很好有時候完全崩掉
  2. Batch Hard形式的 LBH 整體表現好於 Batch All形式的 LBA 。作者猜測,訓練後期很多三元組loss都是0,然後平均處理時會把僅剩的有用的信息給稀釋掉。爲了證明該猜想,作者計算平均loss時只考慮那些不爲0的,用 LBA ≠0表示,發現效果確實會變好。
  3. 在作者的Re-ID實驗中,Batch Hard + soft-margin的效果最好,但是不能保證在其他任務中這種組合依然是最好的,這需要更多的實驗驗證。

  1. 在Market-1501數據集上,pritrained model 獲得了rank-1=84.92%的好成績,經過re-ranking之後,更是達到了86.67%。而trained from scrach比pretrained要低2%~3%。但是pretrained model要受限於base model的輸入大小,如果修改其輸入很可能會得到相反的效果,如下表。trained from scrach則沒有任何限制,因此trained from scrach通用性更強。

參考

【1】http://blog.csdn.net/shuzfan/article/details/70069822#experiments

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章