1. 程式人生 > >【論文筆記4】深入理解行人重識別網路的Loss

【論文筆記4】深入理解行人重識別網路的Loss

打完天池比賽後,可能由於長時間的持續輸出,精神上有些疲憊感,於是選擇去幹一些不是很費腦力的活兒,比如繼續充充電,看些論文補充一些理論知識。這兩天看了幾篇羅老師部落格裡總結的Person Re-Identification這塊的論文,包括羅老師自己發的兩篇論文。幾篇論文中都用到了Triplet Loss,或在Triplet Loss上提出了改進。之前學習人臉識別這塊的時候就已經接觸到了Triplet Loss,當時看了些部落格,覺得思想蠻簡單的。這次認真看完這幾篇論文後,才發現Triple Loss真的是一個非常牛的Trick,包括後面的改進,都是深度神經網路在人臉識別、行人重識別問題上實現State of the art的效果的基礎,羅老師同曠視團隊提出的AlignedReID更是首次超越人類在Person ReID問題中的識別水平。

一、Triplet Loss的提出——《Deep Feature Learning with Relative Distance Comparison for Person Re-identification》

要理解Triplet Loss首先得讀這篇論文,而且得非常非常認真的讀。這篇文章首次提出Triplet Loss,並且論文的第四部分給出了非常詳細的數學推導。我邊看世界盃邊讀這篇論文,一共讀了三遍,第二天早上讀了第四遍後才去看了對它進行改進的論文與部落格。

Triplet Loss的思想精髓如下圖所示,通過選擇三張圖片構成一個三元組,即Anchor、Negative、Positive,通過Triplet Loss的學習後使得Positive元和Anchor元之間的距離最小,而和Negative之間距離最大。其中Anchor為訓練資料集中隨機選取的一個樣本,Positive為和Anchor屬於同一類的樣本,而Negative則為和Anchor不同類的樣本。T

ReID問題要使用Triplet Loss的原因:

(1)Triplet Loss可以非常好地解決類間相似、類內差異的問題,即不同ID的圖片內容上很相似,而相同ID的圖片又因為光照、場景變化、人體姿態多樣化的原因導致內容差異很大。

(2)Person ReID的問題圖片資料集很小,通過構造三元組可以生成遠多於圖片數量的triplets,因此訓練的時候可以加入更多的限制,可以有效地緩解過擬合。

文章第三部分講了Triplet Loss的損失為:

其中Fw是將網路等效成一個引數為W的函式對映,O是訓練及圖片,O^1和O^2是同ID的圖片,O^1和O^3是不同ID的圖片。C的作用防止簡單的triplets造成loss太小,給一個下界。

文章第三部分還介紹了網路結構,這個網路結構極其簡單,conv1+max pooling1+conv2+max pooling2+fc,ReLU啟用函式。需要注意的是在第二層卷積後會有一個對特徵進行歸一化的操作,目的是使得loss計算的triplet 距離不易超過C,使得訓練過程中加入更多的triplet constraint,因為不超過C的tripet loss是沒有梯度的,因此只有難到一定程度的triplets才能貢獻梯度。

文章的第四部分是最重要的,一定要仔細讀,它給出了triplet loss梯度求解過程的詳細數學推導,並詳細給出了為什麼要從Triplet-based的梯度下降演算法改進成Image-based的梯度下降演算法,並給出在基於mini-batch的Image-based梯度下降演算法,即現在非常流行的Triplet Loss演算法(說實話這部分推導的過程我還是沒有完全讀懂,只知道最後的結果)。完全隨機選擇triplets有三個問題:第一,triplets太多了,而儲存空間有限;第二,不是所有triplets都有用,有些簡單的triplets由於margin C的存在根本不產生梯度或者不夠難的triplets梯度太小;第三,一張圖片可能出現在多個triplets中,導致梯度複用,效率低。文章便考慮每一次迭代的batch中只選擇固定數量ID的圖片隨機生成triplets,比如總共有100個ID的人,每次迭代只選擇20個類別的圖片參與隨機生成triplets。這一方法使得在一個數量較少mini-batch中也可以保證引入了足夠多的triplets限制,簡單地說就是難樣本的比例增多了。文章給出的最終梯度下降演算法的虛擬碼如下:

二、TriHard Loss——《In Defense of the Triplet Loss for Person Re-Identification》

重新回顧Triplet Loss,它可以寫成如下形式:

其中a是anchor,p是和anchor相同ID的圖片,n是和anchor不同ID的圖片。每一次迭代的batch中只選擇固定數量ID的圖片隨機生成triplets,比如總共有100個ID的人,每次迭代只選擇20個類別的圖片參與隨機生成triplets。注意是隨機生成triplets。只能說這種方法相較於在整個資料集上完全隨機生成的triplet可以提高難triplets的比例,增加更多的限制。但是,有可能難triplets的比例依然不高每一次迭代過程的有效Loss還是很少,訓練收斂速度慢,效率低。

本論文作者認為,讓網路一直學習簡單的樣本會限制網路的泛化能力,因此在triplet loss中引入了hard sample mining的思想,即在一個mini-batch中選擇最難的相同ID圖片和最難得不同ID的圖片生成triplet,即與anchor距離最大的相同ID的樣本和與anchor距離最小的不同ID樣本。可以寫成如下形式:

論文結果顯示TriHard Loss相對於傳統的Triplet Loss大部分情況下還是進步很明顯的

三、Quadruplet Loss——《Beyond triplet loss: a deep quadruplet network for person re-identification》

本論文提出的Quadruplet Loss相較於Triplet Loss考慮了正負樣本之間的絕對距離,形式如下:

其中a為anchor,p為positive,n1,n2分別是兩個negative樣本。第一項與Triplet Loss一樣關注同類影象,第二項則關注不同類影象。有了第二項的限制,內間距離應該比內類距離大。

四、Margin Sample Mining Loss——《Margin Sample Mining Loss: A Deep Learning Based Method for Person Re-identification》

首先,忽略Quadruplet Loss中α,β,寫成更通用的形式:

再引入TriHard中的hard sample mining的思想:

MSML損失只挑選出最難的一個正樣本對和最難的一個負樣本對計算損失。所以MSML是比TriHard更難的一種難樣本取樣,此外括號中第一項可以看作是正樣本對距離的上界,第二項可以看作是負樣本對的下界。MSML是為了把正負樣本對的邊界給推開,因此命名為邊界樣本挖掘損失。MSML只用了兩對樣本對計算損失,看上去浪費了很多訓練資料。但是這兩對樣本對是根據整個batch的結果挑選出來了,所以batch中的其他圖片也間接影響了最終的損失。並且隨著訓練週期的增加,幾乎所有的資料都會參與損失的計算。總的概括,MSML是同時兼顧相對距離和絕對距離並引入了難樣本取樣思想的度量學習方法。 

實驗證明MSML還是取得了非常大的提升的:

五、關係

最後一起來看以下幾種Loss之間的關係:

六、引用

-------------------------------------------

Youzhi Gu, master student

Foresight Control Center

College of Control Science & Engineering

Zhejiang University

Email: [email protected]