人工智能

【行人重识别】《In Defense of the Triple

2019-12-16  本文已影响0人  不可能打工

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

论文创新

相关概述

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往往有其自己的固定输入,我们如果修改其输入很可能会得到相反的效果。

上一篇下一篇

猜你喜欢

热点阅读