Beyond triplet loss: a deep quadruplet network for person re-identification(quadruplet loss)(PDF)
Author:Weihua Chen, Xiaotang Chen, Jianguo Zhang, Kaiqi Huang CVPR2017 (Citations:818)
问题引入1:
最近,基于三元组损失的深度学习网络成为了人重识别领域的基本框架。但是,三元组损失主要关注训练集中样本的正确排序,而人重识别任务中训练集和测试集之间是没有交集的,这就导致三元组损失由训练集到测试集的泛化能力不足,因此性能低下。从图1中可以看出,三元组损失在训练集中的识别效果良好,但是当应用到包含未见类的测试集中后,其决策边界就变得模糊不清了。造成这种现状的本质原因在于由三元组损失训练得到的模型仍然会造成一个相对较大的类内变化。
解决方案:
四元组网络:
为了解决三元组损失泛化能力不强的问题,需要减小类内变化,增大类间变化。本文基于三元组损失提出了四元组排序损失,实现了更小的类内差异和更大的类间差异。四元组损失同时考虑了一下两个方面的距离:1.对于同一个目标,与之相同类别的物体间距要小于与之不同类别的物体间距(B1B3<B1A3),即anchor与正样本的距离小于anchor与负样本的距离,这点与三元组损失保持一致;2.相同类别的物体间距要小于不同类别的物体间距(C1C2<B1A3),通过该条件来进一步约束类间和类内距离,增强模型的泛化能力。
本文提出了四元组深度网络来实现上述目标函数,首先,输入由四部分组成,分别是Ref(即anchor)、Pos(正样本)、Neg(负样本1号)和Neg2(负样本2号),然后将上述图像通过两层卷积层得到想对应的特征图。接下来,将四幅特征图进行重组,Ref与Pos形成正样本对,Ref和Neg形成负样本对,Neg2与Neg形成额外的负样本对,然后将上述三个样本对送入三层卷积层和两层全连接层,每一对样本对最终产生一个二维的输出,二维中的一维表示两幅图像的非相似性。同时,由于样本对的非相似性与距离成正相关,因此,我们可以用二维输出中非相似性的一维输出来表示样本距离。
在得到样本距离后,我们需要通过损失函数进行反向传播以优化网络参数。损失函数定义如下:
其中,第一项即为相对于同一探针图像的正样本和负样本相对距离,与三元组损失保持一致,该项用于获得训练数据集中关于相同探针的正确顺序,即对正负样本的属性进行判断;第二项为新约束,在这个约束条件的帮助下,要求最小的类间距离大于最大的类内距离,而不管成对的探针是否包含相同的探针,该项用于进一步缩小类内差距,扩大类间差距,以此来提升模型的泛化性能。
问题引入2:
由于网络的输入为四元组,因此即使针对数据量很小的数据集,仍然会产生大量的四元组样本,因此需要对网络的输入四元组进行筛选。传统的方法基于余量阈值来进行难例挖掘,但是这些余量阈值都是预先定义好的。在这种情况下,过小的阈值会导致难例数量太少,由于只有难例才能对训练模型产生反馈,因此,难例数量太少会导致收敛缓慢,并导致模型容易陷入次优解。相反,过大的阈值会产生太多的难例,导致过度拟合。
解决方案:
本文提出了基于余量的在线难例挖掘策略,根据训练模型来适应性的设置余量阈值,并通过该余量阈值来筛选难例。
余量阈值将有anchor与正负样本之间的距离来统一决定,代表anchor与负样本的平均距离,代表anchor与正样本的平均距离。