Re-ID----读“ Bag of Tricks and A Strong Baseline for Deep Person Re-identification”

贡献

(1)提供了Re-ID训练的一些标准技巧。

(2)仅仅使用全局特征就得到了很高的准确率。

(3)设计了新的neck structure——BNNeck。

(4)评估了图片大小和batch大小对Re_ID的影响。

 

作者给定的基准

 

  1. 使用的网络RestNet50。
  2. 使用imagenet上的预训练参数,并且把预训练模型的FC层维度改为ID数。
  3. 选用P个人的K张图片作为batch(P×K)。
  4. 改变图片像素大小到256×128, (?)把十个像素值置零然后分撒到图像中。
  5. 每张图片有0.5的机率翻转。
  6. 把图片的像素值映射到[0,1]之间的32为浮点数,通过减去[g 0.485, 0.456, 0.406

],除以[0.229, 0.224, 0.225]来标准化RGB通道。

  1. 模型输出特征及预测的概率。
  2. 特征用来计算三元组损失,概率用来计算交叉熵。三元组损失的margin是0.3。
  3. 使用Adam优化函数,最初的学习率被设置为0.00035,之后在第40epoch和第120epoch  的时候减小0.1。总共有120个epoch。

 

一些训练技巧

一些不用改变模型结构的技巧,基本的网络结构如下:

 

 

预热学习率

学习率对模型的影响很大。标准的基准使用很大并且恒定的学习率。而预热策略能让模型有更好的表现:使用10个epoch来线性地增加学习率,之后在第40和70epoch的时候减少。(具体的函数和图像如下图)

     

 

随机擦出增长

人物有时候会被物体挡住。为了解决这个问题,提高模型的泛化能力,提出了一种新 的数据增长方法——随机擦除增长(REA)。具体来说:一张图片被改变的机率是,不 改变的机率是。然后,被擦出的区域记做:,它的大小是。而被擦除部 分和整体的大小的比记做(在被限定的范围内是随机的)。为了决定独一无二的 区域,初始化一个点P(只要从这个点发展的区域在图片内,否则重新再选)。

示例如下:

 

 

标签顺滑

IDE是行人重识别的标准。它的最后一层输出的是预测的概率。而交叉熵的算法如下:

,即这是我们所说的ID损失。

防止行人重识别模型的过拟合十分重要,LS(标签顺滑)就可以解决预防问题。它改变了交叉熵的q的函数映射:

被设置为0.1。这样可以使模型不太过切合训练集,提高了模型的表现。

最后一步

更高的分辨率可以丰富特点的粒度。一篇文章,去掉了网络中spatial downsampling 的操作,进而增加了特点的大小。为了方便把该操作记做stride。ResNet50 的最后一步为2,如果输入的图片是256×128,则输出的大小为8×4。但是如果 把步长改为1(从2),就可以得到16×8的大小。这个操作只是小小地增加 了计算的花费,但是不会增加任何参数。但是,更高的分辨率带来的是意义重大的提升。

BNNeck:

大多数工作是把ID损失和三元组损失结合在一起训练模型,两个损失同时约束同一个特征空间。但是,这两个损失的目标在嵌入空间不一样。ID损失构造了几个超平面来把嵌入空间分割成不同的子空间。在这种情况下,余弦距离比欧式距离更适合来计算优化函数的损失在推理阶段。另一方面,三元组损失使类内更加紧密,类间更加分离(在欧式距离上)。因为三元组损失不能提供类间优化约束,致使类间距离有时候比类内距离更小。二者结合的办法可以使模型学习更多不同的空间。但是,ID损失是余弦距离,三元组损失是欧式距离。如果我们同时用它们来优化特征向量,目标可能不一致。则在训练阶段,可能出现的现象就是,一个损失在减小,而另一个损失可能不变或者增大。

为了克服上述问题,作者设计了一个叫做BNNeck的结构:

 

即只是在特征层之后,在FC层之前增加了一个标准化层。BN层之前的特征记做,之后的记做。在训练阶段两者分别用来计算三元组损失和ID损失。标准化平衡了的每个维度。特征高斯分布在,超空间的表面上。这种融合使ID损失更容易融合。此外,BNNeck减少了ID损失在上的约束,意味者同时ID损失更少的约束使三元组损失更容易融合。第三,标准化使同一个人的特征分布更加紧密。

因为超空间几乎是关于坐标原点对称的。BNNeck去除了FC分类器的偏置,进而使超平面通过坐标轴原点。(使用Kaiming初始化FC层)

在训练阶段,使用来做行人重识别,余弦函数比欧式距离表现更好。实验表明大的三元组边界可以使模型表现得更好。

 

中心损失:

三元组损失的算法:

其中的操作数分别是正对间的距离,负对间的距离,三元组损失的边界,[]+代表取非负。但是三元组损失的算法只考虑了,正负之间的距离而忽略了它们的绝对距离,它是随意地被两个人决定的,在整个过程中很难保证正对间的距离一定小于负对间的距离。

中心损失同时计算每个类的中心深度特征,并且惩罚中心特征和相应类之间的特征,弥补了三元组损失的不足,中心损失的算法计算如下:

(y代表标签,c代表类的深度中心特征)

公式有效地描述了类内的变化。最小中心距离增加了类内的紧凑度。作者的模型计算损失如下:

(其中是权重)

 

 

实验结果

罗浩,在Market1501和DukeMTMC上评估了模型,rank1和mAP用度量评估来报告。为了防止过拟合甚至还用了交叉域来展示实验结果。

每个技巧的影响

 

                 

这些技巧和在其他的文章里报告的一样,BNNeck比其它技巧更加多的提高了模型的表现。最后,这些技巧在Market1501上的表现是94.5%rank1, 85.9%mAP;在Duke上是86.4%rank1和76.4%mAP。此外,如此的提升只是增加了BN层而并没有增加训练时间。

分析BNNeck:

这个部分评估BNNeck前后两个不同特征(用欧式距离和余弦距离度量)。作者观察到,在BNNeck之前的特征上,余弦距离度量比欧式距离更好。ID损失可以约束,被几个超平面清晰地划分。余弦距离可以度量两个特征向量的角度,所以余弦距离可以比欧式距离更好地度量。然而,更近三元组损失,同时被ID损失约束。两种度量在的表现上相同。

总之,BNNeck提升了模型的表现,选择余弦度量在推理阶段。

 

每个技巧的影响

为更多地探索有效性,使用交叉域看结果:

        

总的来看,预热策略,标签顺滑,BNNeck都显著地增加了模型在交叉域的表现。改变步长和中心损失对表现没有很大的影响。然而,REA在交叉域甚至还对模型有害(可能是由于过拟合)。

 

和世界先进水平的对比

 

罗浩的模型世界先进水平进行了对比。所有的问题被分成了不同的种类。金字塔在两个模型上有惊人的表现。然而,它链接本地21个不同规模的特点。如果只用全局特征,它有94.5%的rank1和85.9%mAP在Market1501. BFE和本文有相似的表现,但是它结合了两个分支的特征。只用全局,本文打败了AWTL。k-reciprocal reranking方法增加了表现,使本文达到了94.1%和89.1%的mAP在两个数据集上。这是这两个数据集上所达到的最大结果。

 

补充实验

                                                 

观察之前的工作,在不同的batch大小和图片大小。

                       

batch的大小对结果的影响

移除了中心损失以便观察结果。没有观察到明显的影响,一个轻微的趋势是大的batch表现更好。每个人的张数有利于正对,人的个数有利于负对。

图片大小的影响

                                   

没有使用中心损失,P=16,K=4,四个模型在数据集上的表现很相似。初步结论是图片大小并没有太多影响。

总结和展望

和人脸识别达到的水平还有一定距离。将来的工作如用L2标准化。此外,世界先进水平的如,PCB, MGN还有AlignedReID在本文的基础上是否会有效果。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值