【行人重识别】《In Defense of the Triplet Loss for Person Re-Identification》论文阅读

论文https://arxiv.org/abs/1703.07737
GitHubhttps://github.com/VisualComputingInstitute/triplet-reid

论文创新

  • 针对现有triplet loss缺点,提出了几种新型的triplet loss,进行了横向的实验对比
  • 对于reid模型是否需要使用pre-trained模型这一问题,进行了实验对比

相关概述

  • Deep metric learning – 深度度量学习,也就是相似度学习D
  • Classification Loss – 当目标很大时,会严重增加网络参数,而训练结束后很多参数都会被摒弃。
  • Verification Loss – 只能成对的判断两张图片的相似度,因此很难应用到目标聚类和检索上去。因为一对一对比太慢。
  • Triplet loss – 端到端,简单直接; 自带聚类属性; 特征高度嵌入,但是不好训练。

Triplet loss最早来源于Google的FaceNet,Triplet loss的想法很简单:类内距离趋小,类间距离趋大。是当前应用很广泛的一种损失函数。在FaceNet中,通过构建embedding方式,将人脸图像直接映射到欧式空间,而优化这种embedding的方法可以概括为,构建许多组三元组(Anchor,Positive,Negative),其中Anchor与Positive同label,Anchor与Negative不同label(在人脸识别里面,即就是Anchor,Positive是同一个个体,而与Negative是不同个体),通过学习优化这embedding,使得欧式空间内的Anchor与Positive 的距离比与Negative的距离要近。

Triplet loss通常能比classification得到更好的feature。还有一个优点就是Triplet loss可以卡阈值,Triplet loss训练的时候需要设置一个margin,这个margin可以控制正负样本的距离,当feature 进行normalization后,可以更加方便的卡个阈值来判断是不是同一个ID。当然Triplet loss也有缺点,就是收敛慢,而且比classification更容overfitting。Triplet loss的主要应用就是face identification、person re-identification、vehicle re-identification等。

传统的Triplet loss训练需要一个三元组,achor(a)、positive(p)、negative(n)。
Triplet loss的缺点在于随机从训练集中挑选三张图片,那么可能挑选出来的可能是很简单的样本组合,即很像的正样本和很不像的负样本。作者认为,让网络一直学习简单的样本,会限制网络的泛化能力。因此,作者提出了一种在线batch hard sample mining的改进版Triplet loss,大量实验表明,这种改进版的方法效果非常好。

Triplet loss

Triplet loss损失函数

Batch Hard Triplet Loss

batch hard triplet loss损失函数

具体做法:随机抽样P类(P个人),每个人随机地选K张图片,从而产生一个PK batch的图片即batch size=P×K。现在,对于batch中的每个样本,可以在生成triplets来计算loss时选择batch中最难的positive和negative。

Soft Margin

soft margin

之前的很多Triplet Loss都采用了截断处理,即如果Triplet三元组关系正确则Loss直接为0。 作者发现,对于Re-ID来说,有必要不断地拉近同类目标的距离。

为此,可以使用softplus函数用平滑逼近代替hinge函数。其中,数值稳定的实现通常以log1p的形式提供。softplus函数的行为与hinge相似,但它是指数衰减的,而不是硬截止,因此作者将其称为soft margin公式。


原文

实验结果

triplet loss对比实验

在作者的行人重识别实验中,Batch Hard + soft-magin的效果最好, 同时作者为了排除是triplet loss后面的三元组都是loss为0的情况,排除了该情况下batch hard triplet loss的效果依然是最好。该方法work的原因在于在每一个batch中都选择最难的三元组,这样整个训练过程中,模型学习的是困难度较中的样本。

是否需要预训练实验1
是否需要预训练实验2

TriNet表示来自pre-trained model(ResNet50),LuNet是作者自己设计的一个普通网络,从头开始训练。利用pre-trained model确实可以获得更好一点的效果,但是从头开始训练的网络也不会太差。特别的,pre-trained model往往体积较大模式固定,不如自己设计网络来的灵活。同时,pre-trained model往往有其自己的固定输入,我们如果修改其输入很可能会得到相反的效果。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值