triplet loss 在深度學習中主要應用在什麼地方?有什麼明顯的優點?

做者:羅浩.ZJU
連接:https://www.zhihu.com/question/62486208/answer/199117070
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

反對工業界softmax解決一切的說法ide

Triplet loss一般是在個體級別的細粒度識別上使用,傳統的分類是花鳥狗的大類別的識別,可是有些需求是要精確到個體級別,好比精確到哪一個人的人臉識別,因此triplet loss的最主要應用也就是face identification,person re-identification,vehicle re-identification的各類identification識別問題上性能

  • 固然你能夠把每一個人當作一個類別來進行分類訓練,可是每每最後會形成softmax的維數遠大於feature的維數,想一想resnet50 global ap出來一個2048的feature對應到一個幾萬,幾十萬的分類softmax就可怕。
  • 另一個結論就是triplet loss一般能比classification獲得更好的feature,我我的測試triplet loss至少比classification高10個點。
  • 還有一個優勢就是triplet loss 能夠卡閾值,triplet loss訓練的時候要設置一個margin,這個margin能夠控制正負樣本的距離,當feature 進行normalization以後,能夠更加方便的卡個閾值來判斷是否是同一個ID

固然triplet loss也有缺點,就是收斂慢,並且比classification更容易overfitting(此條待考究,而且即便過擬合了也比classification性能要好),此外須要對輸入的數據按照label進行特別的排列,很是重要的一點是沒有triplet loss的API,新手小白可能連十行代碼都不到的triplet loss都寫不出來,因此deep learning不僅是調庫調參而已測試

如今triplet loss已經有不少改進版本了,能夠搜索improved triplet loss, in defense of triplet loss,beyond triplet loss等論文orm

相關文章
相關標籤/搜索