【论文笔记4】深入理解行人重识别网络的Loss

时间:2024-04-10 20:19:50

打完天池比赛后,可能由于长时间的持续输出,精神上有些疲惫感,于是选择去干一些不是很费脑力的活儿,比如继续充充电,看些论文补充一些理论知识。这两天看了几篇罗老师博客里总结的Person Re-Identification这块的论文,包括罗老师自己发的两篇论文。几篇论文中都用到了Triplet Loss,或在Triplet Loss上提出了改进。之前学习人脸识别这块的时候就已经接触到了Triplet Loss,当时看了些博客,觉得思想蛮简单的。这次认真看完这几篇论文后,才发现Triple Loss真的是一个非常牛的Trick,包括后面的改进,都是深度神经网络在人脸识别、行人重识别问题上实现State of the art的效果的基础,罗老师同旷视团队提出的AlignedReID更是首次超越人类在Person ReID问题中的识别水平。

一、Triplet Loss的提出——《Deep Feature Learning with Relative Distance Comparison for Person Re-identification》

要理解Triplet Loss首先得读这篇论文,而且得非常非常认真的读。这篇文章首次提出Triplet Loss,并且论文的第四部分给出了非常详细的数学推导。我边看世界杯边读这篇论文,一共读了三遍,第二天早上读了第四遍后才去看了对它进行改进的论文与博客。

Triplet Loss的思想精髓如下图所示,通过选择三张图片构成一个三元组,即Anchor、Negative、Positive,通过Triplet Loss的学习后使得Positive元和Anchor元之间的距离最小,而和Negative之间距离最大。其中Anchor为训练数据集中随机选取的一个样本,Positive为和Anchor属于同一类的样本,而Negative则为和Anchor不同类的样本。T

【论文笔记4】深入理解行人重识别网络的Loss

ReID问题要使用Triplet Loss的原因:

(1)Triplet Loss可以非常好地解决类间相似、类内差异的问题,即不同ID的图片内容上很相似,而相同ID的图片又因为光照、场景变化、人体姿态多样化的原因导致内容差异很大。

(2)Person ReID的问题图片数据集很小,通过构造三元组可以生成远多于图片数量的triplets,因此训练的时候可以加入更多的限制,可以有效地缓解过拟合。

文章第三部分讲了Triplet Loss的损失为:

【论文笔记4】深入理解行人重识别网络的Loss

其中Fw是将网络等效成一个参数为W的函数映射,O是训练及图片,O^1和O^2是同ID的图片,O^1和O^3是不同ID的图片。C的作用防止简单的triplets造成loss太小,给一个下界。

文章第三部分还介绍了网络结构,这个网络结构极其简单,conv1+max pooling1+conv2+max pooling2+fc,ReLU**函数。需要注意的是在第二层卷积后会有一个对特征进行归一化的操作,目的是使得loss计算的triplet 距离不易超过C,使得训练过程中加入更多的triplet constraint,因为不超过C的tripet loss是没有梯度的,因此只有难到一定程度的triplets才能贡献梯度。

【论文笔记4】深入理解行人重识别网络的Loss

文章的第四部分是最重要的,一定要仔细读,它给出了triplet loss梯度求解过程的详细数学推导,并详细给出了为什么要从Triplet-based的梯度下降算法改进成Image-based的梯度下降算法,并给出在基于mini-batch的Image-based梯度下降算法,即现在非常流行的Triplet Loss算法(说实话这部分推导的过程我还是没有完全读懂,只知道最后的结果)。完全随机选择triplets有三个问题:第一,triplets太多了,而存储空间有限;第二,不是所有triplets都有用,有些简单的triplets由于margin C的存在根本不产生梯度或者不够难的triplets梯度太小;第三,一张图片可能出现在多个triplets中,导致梯度复用,效率低。文章便考虑每一次迭代的batch中只选择固定数量ID的图片随机生成triplets,比如总共有100个ID的人,每次迭代只选择20个类别的图片参与随机生成triplets。这一方法使得在一个数量较少mini-batch中也可以保证引入了足够多的triplets限制,简单地说就是难样本的比例增多了。文章给出的最终梯度下降算法的伪代码如下:

【论文笔记4】深入理解行人重识别网络的Loss

二、TriHard Loss——《In Defense of the Triplet Loss for Person Re-Identification》

重新回顾Triplet Loss,它可以写成如下形式:

【论文笔记4】深入理解行人重识别网络的Loss

其中a是anchor,p是和anchor相同ID的图片,n是和anchor不同ID的图片。每一次迭代的batch中只选择固定数量ID的图片随机生成triplets,比如总共有100个ID的人,每次迭代只选择20个类别的图片参与随机生成triplets。注意是随机生成triplets。只能说这种方法相较于在整个数据集上完全随机生成的triplet可以提高难triplets的比例,增加更多的限制。但是,有可能难triplets的比例依然不高每一次迭代过程的有效Loss还是很少,训练收敛速度慢,效率低。

本论文作者认为,让网络一直学习简单的样本会限制网络的泛化能力,因此在triplet loss中引入了hard sample mining的思想,即在一个mini-batch中选择最难的相同ID图片和最难得不同ID的图片生成triplet,即与anchor距离最大的相同ID的样本和与anchor距离最小的不同ID样本。可以写成如下形式:

【论文笔记4】深入理解行人重识别网络的Loss

论文结果显示TriHard Loss相对于传统的Triplet Loss大部分情况下还是进步很明显的

三、Quadruplet Loss——《Beyond triplet loss: a deep quadruplet network for person re-identification》

本论文提出的Quadruplet Loss相较于Triplet Loss考虑了正负样本之间的绝对距离,形式如下:

【论文笔记4】深入理解行人重识别网络的Loss

其中a为anchor,p为positive,n1,n2分别是两个negative样本。第一项与Triplet Loss一样关注同类图像,第二项则关注不同类图像。有了第二项的限制,内间距离应该比内类距离大。

四、Margin Sample Mining Loss——《Margin Sample Mining Loss: A Deep Learning Based Method for Person Re-identification》

这篇是罗老师的论文,罗老师也写了一篇博客来介绍Margin Sample Mining Loss(MSML),详情请戳:https://blog.csdn.net/qq_21190081/article/details/78467394。在此提炼一下MSML的思想:

首先,忽略Quadruplet Loss中α,β,写成更通用的形式:

【论文笔记4】深入理解行人重识别网络的Loss

再引入TriHard中的hard sample mining的思想:

【论文笔记4】深入理解行人重识别网络的Loss

MSML损失只挑选出最难的一个正样本对和最难的一个负样本对计算损失。所以MSML是比TriHard更难的一种难样本采样,此外括号中第一项可以看作是正样本对距离的上界,第二项可以看作是负样本对的下界。MSML是为了把正负样本对的边界给推开,因此命名为边界样本挖掘损失。MSML只用了两对样本对计算损失,看上去浪费了很多训练数据。但是这两对样本对是根据整个batch的结果挑选出来了,所以batch中的其他图片也间接影响了最终的损失。并且随着训练周期的增加,几乎所有的数据都会参与损失的计算。总的概括,MSML是同时兼顾相对距离和绝对距离并引入了难样本采样思想的度量学习方法。 

实验证明MSML还是取得了非常大的提升的:

【论文笔记4】深入理解行人重识别网络的Loss

五、关系

最后一起来看以下几种Loss之间的关系:

【论文笔记4】深入理解行人重识别网络的Loss

六、引用

罗老师的博客:https://blog.csdn.net/qq_21190081

 

-------------------------------------------

Youzhi Gu, master student

Foresight Control Center

College of Control Science & Engineering

Zhejiang University

Email: [email protected]