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


作者:羅浩.ZJU
鏈接:https://www.zhihu.com/question/62486208/answer/199117070
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

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

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等論文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM