『論文筆記』基於度量學習的行人重識別方法中損失函數總結!

基於度量學習的行人重識別方法中損失函數總結!

一、對比損失(Contrasive loss)

  • 對比損失(Contrasive loss)用於訓練孿生網絡(Siamese network)[3,4,5][3,4,5]。孿生網絡的輸入爲一對(兩張)圖片 IaI_aIbI_b,這兩張圖片可以爲同一行人,也可以爲不同行人。 每一對訓練圖片都有一個標籤 yy, 其中 y=1y = 1 表示兩張圖片屬於同一個行人(正樣本對),反之 y=0y = 0 表示它們屬於不同行人(負樣本對)。之後, 對比損失函數寫作:

Lc=ydIa,Ib2+(1y)max(αdIa,Ib,0)2(1) L_{c}=y d_{I_{a}, I_{b}}^{2}+(1-y)\max (\alpha-d_{I_{a}, I_{b}}, 0)^{2}\tag{1}

  • 其中:α\alpha 是根據實際需求設置的訓練閾值參數,dIa,Ibd_{I_{a}, I_{b}} 代表兩個樣本對應的特徵的歐氏距離。

二、三元組損失(Triplet loss)

  • 三元組損失[6,7,8,9][6,7,8,9] 是一種被廣泛應用的度量學習損失,之後的大量度量學習方法也是基於三元組損失演變而來。顧名思義,三元組損失需要三張輸入圖片。和對比損失不同,一個輸入的三元組(Triplet) 包括一對正樣本對和一對負樣本對。三張圖片分別命名爲固定圖片 (Anchor)a(Anchor) a,正樣本圖片 (Positive)p(Positive) p 和負樣本圖片 (Negative)n(Negative) n。 圖片 aa 和圖片 pp 爲一對正樣本對,圖片 aa 和圖片 nn 爲一對負樣本對。 則三元組損失表示爲:

Lt=max(da,pda,n+ margin ,0)(2)L_{t}= \max (d_{a, p}-d_{a, n}+\text { margin }, 0)\tag{2}

  • 其中: margin \text { margin } 是根據實際需求設置的訓練閾值參數,da,p,da,nd_{a, p},d_{a, n} 代表兩個樣本對應的特徵的歐氏距離。
  • triplet loss的目標是:①. 兩個具有同樣標籤的樣本,它們在新的編碼空間裏距離很近。②. 兩個具有不同標籤的樣本,它們在新的編碼空間裏距離很遠。進一步,我們希望兩個positive examples和一個negative example中,negative examplepositive example的距離,大於positive examples之間的距離,或者大於某一個閾值: margin \text { margin }

Triplet loss\text {Triplet loss} 理解:

  • 優化的目的就是使 loss 在訓練迭代中下降的越小越好,也就是要使得 AnchorPositive 越接近越好,AnchorNegative 越遠越好。基於上面這些,分析一下 margin 值的取值。
  • 首先:當margin值越小時,loss 也就較容易的趨近於 0,於是AnchorPositive都不需要拉的太近,AnchorNegative不需要拉的太遠,就能使得loss很快的趨近於0。這樣訓練得到的結果,不能夠很好的區分相似的圖像。
  • 其次:當margin越大時,就需要使得網絡參數要拼命地拉近Anchor、Positive之間的距離,拉遠Anchor、Negative之間的距離。如果margin值設置的太大,很可能最後loss保持一個較大的值,難以趨近於0 。
  • 因此,設置一個合理的margin值很關鍵,這是衡量相似度的重要指標。簡而言之,margin值設置的越小,loss很容易趨近於0 ,但很難區分相似的圖像。margin值設置的越大,loss值較難趨近於0,甚至導致網絡不收斂,但可以較有把握的區分較爲相似的圖像。

三、改進三元組損失(Improved triplet loss)

  • 文獻 [2][2] 認爲公式 (2)(2) 只考慮正負樣本對之間的相對距離,而並沒有考慮正樣本對之間的絕對距離(存在下圖的情況,可能最後優化結束,正樣本對的絕對距離仍然很大!),爲此提出改進三元組損失(Improved triplet loss):

Lit=da,p+max(da,pda,n+margin,0)(3)L_{i} t=d_{a, p}+ \max (d_{a, p}-d_{a, n}+\text{margin}, 0)\tag{3}

  • 其中:margin\text{margin} 是根據實際需求設置的訓練閾值參數,da,p,da,nd_{a, p},d_{a, n} 代表兩個樣本對應的特徵的歐氏距離。公式 (8)(8) 添加 da,pd_{a, p} 項,保證網絡不僅能夠在特徵空間把正負樣本推開,也能保證正樣本對之間的距離很近。

四、難樣本採樣三元組損失(Triplet loss with batch hard mining, TriHard loss)

  • 難樣採樣三元組損失(TriHard損失)是三元組損失的改進版。傳統的三元組隨機從訓練數據中抽樣三張圖片,這樣的做法雖然比較簡單,但是抽樣出來的大部分都是簡單易區分的樣本對。如果大量訓練的樣本對都是簡單的樣本對,那麼這是不利於網絡學習到更好的表徵。大量論文發現用更難的樣本去訓練網絡能夠提高網絡的泛化能力,而採樣難樣本對的方法很多。有學者提出了一種基於訓練批量(Batch)的在線難樣本採樣方法——TriHard Loss
  • TriHard\text {TriHard} 損失的核心思想是:對於每一個訓練batch,隨機挑選P個ID的行人,每個行人隨機挑選K張不同的圖片,即一個batch含有 P×K 張圖片。之後對於batch中的每一張圖片a ,我們可以挑選一個最難的正樣本和一個最難的負樣本a組成一個三元組。
  • 首先我們定義 aa 和爲相同ID的圖片集爲 A\mathbf A,剩下不同ID的圖片圖片集爲 B\mathbf B,則TriHard損失表示爲:

Lth=1P×Kabatchmax(maxpAda,pminnBda,n+α,0)(4) L_{t h}=\frac{1}{P \times K} \sum_{a \in b a t c h}\max\left(\max _{p \in \mathbf A} d_{a, p}-\min _{n \in \mathbf B} d_{a, n}+\alpha,0\right) \tag{4}

  • 其中:α\alpha 是人爲設定的閾值參數,TriHard損失會計算 aabatch中的每一張圖片在特徵空間的歐式距離,然後選出與 aa 距離最遠(最不像)的正樣本 pp 和距離最近(最像)的負樣本 nn 來計算三元組損失。 通常TriHard損失效果比傳統的三元組損失要好。

五、四元組損失(Quadruplet loss)

  • 四元組損失[10][10] 是三元組損失的另一個改進版本。顧名思義,四元組(Quadruplet) 需要四張輸入圖片,和三元組不同的是多了一張負樣本圖片。即四張圖片爲固定圖片 aa, 正樣本圖片 pp, 負樣本圖片 n1n_1 和負樣本圖片 n2n_2。其中 n1n_1n2n_2 是兩張不同行人ID的圖片。則四元組損失表示爲:

Lq=max(da,pda,n1+α,0)+max(da,pdn1,n2+β,0)(5)L_{q}=\max (d_{a, p}-d_{a, n_1}+\alpha, 0)+\max (d_{a, p}-d_{n_1, n_2}+\beta, 0)\tag{5}

  • 其中:da,p,da,n1,dn1,n2d_{a, p},d_{a, n_1},d_{n_1, n_2} 代表兩個樣本對應的特徵的歐氏距離,α,β\alpha,\beta 是手動設置的正常數,通常設置 α\alpha 小於 β\beta,前一項稱爲強推動, 後一項稱爲弱推動。其中前一項和三元組損失一樣,只考慮正負樣本間的相對距離,共享了固定圖片 aa。因此在推開負樣本對 aan1n_1 的同時,也會直接影響 aa 的特徵,造成正樣本對 aapp 的距離不好控制。改進三元組損失通過直接約束 aapp 之間的距離來解決這個問題。而四元組通過引入第二項弱推動實現,添加的第二項中負樣本對和正樣本對不共享ID, 所以考慮的是正負樣本間的絕對距離,在推開負樣本對的同時不會太過直接影響 aa 的特徵。因此,四元組損失通常能讓模型學習到更好的表徵。
  • 以上度量學習方法樣本示例如上圖所示,這些方法在計算度量損失時,樣本對都是從訓練集中隨機挑選。隨機挑選樣本對的方法可能經常挑選出一些容易識別的樣本對組成訓練批量(Batch),使得網絡泛化能力受限。爲此, 部分學者提出了難樣本採樣(Hard sample mining) 的方法,來挑選出難樣本對訓練網絡。常用的思路是挑選出一個訓練Batch 中特徵向量距離比較大(非常不像) 的正樣本對和特徵向量距離比較小(非常像) 的負樣本對來訓練網絡。難樣本採樣技術可以明顯改進度量學習方法的性能,加快網絡的收斂,並且可以很方便地在原有度量學習方法上進行擴展,是目前廣泛採用的一種技術。

參考文獻

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