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

相关文章
相关标签/搜索