本文主要是介绍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的影响。 |
作者给定的基准
],除以[0.229, 0.224, 0.225]来标准化RGB通道。
|
一些训练技巧
一些不用改变模型结构的技巧,基本的网络结构如下:
|
预热学习率: 学习率对模型的影响很大。标准的基准使用很大并且恒定的学习率。而预热策略能让模型有更好的表现:使用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在本文的基础上是否会有效果。 |
这篇关于Re-ID----读“ Bag of Tricks and A Strong Baseline for Deep Person Re-identification”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!