行人重识别(reid)近期最优最简模型的训练&测试

这一次开始实际操作reid~

这几天总计了一下2013年至今,reid发表在三大会中的情况:

去年有个爆发性的增长。
继续努力科研吧!



本篇文章代码源自:
来自于论文以及大佬&男神项目源
高阶代码源自:https://github.com/L1aoXingyu/reid_baseline 添加更多丰富的内容。
大神可以直接自行看高阶版。
萌新可以和我一起从简单开始学习。

论文简介

总的来说,就是大佬们diss了一下reid圈的现状,给出了一个更厉害的baseline,提出了一些小技巧和新的结构BNNeck,并证明了这些东西的有效性

  • 目前的很多方法都不是很厉害,很多研究的东西没有意义 ,可能有更好的baseline会促进行业发展。
  • 很多方法,比较的并不公平。可能方法没有什么提升,仅仅是因为使用了一些技巧。但是技巧的作用被低估了,导致人们认为方法的有效性很高
  • 工业界更希望拥有简单、高效的模型,而不是连接太多的局部特征。学术界的人会加入很多额外消耗,如姿态估计和分割中的语义结果,这些大特征降低了检索速度。所以更希望有一些技巧来提供模型能力—>仅用全局特征来实现高性能
  • 介绍和证明了一些技巧的有效性
    Warmup Learning Rate:网络在一开始的时候是未良好初始化的,网络并不能很好的提取特征,使用较大的学习率很容易梯度爆炸。一开始用较小的学习率,warming-up,让网络先渐渐地缓慢到达一个良好初始化的状态,再增大到预期的大的学习率,进行正常训练。
    Random Erasing Augmentation :随机擦除的数据增强手段。ReID中,图像中的人有时会被其他物体遮挡。为了解决遮挡问题并提高ReID模型的泛化能力,提出了一种新的数据增强方法,称为随机擦除增强(对于小batch图像随机概率进行擦除,选择一个擦除区域, 然后随机初始化点,进行擦除,不符合,重新选择)
    Label Smoothing 标签平滑:分类的类别由人员ID决定,因此本文将这种损失称为ID损失。然而,ReID可以被视为一次性学习任务,因为测试集的人ID没有出现在训练集中。 因此,防止ReID模型过度拟合训练集ID。 标签平滑(LS)是一种广泛使用的方法,用于防止分类任务的过度拟合。
    Last Stride :将卷积层最后一层的步长由2改为1,增大输出feature map的尺寸。增加的计算量极少,不增加训练参数,但对性能提升有明显帮助。
    –提出了一个结构,BNNeck 如下图(b)所示。BNNeck中triplet loss优化的特征仍然是原先的特征,即图中的ft。ID loss优化的则是ft经一个BN层归一化后生成的特征fi,通过归一化使得fi近似在超球面表面分布。
    Center Loss 使特征ft与该类特征的中心更为接近。
  • 补充证明不同batch size or image sizes的影响

更详细内容可以自己看论文啦~?

baseline和大佬模型
行人重识别(reid)近期最优最简模型的训练&测试_第1张图片
厉害的结果~!?

行人重识别(reid)近期最优最简模型的训练&测试_第2张图片

验证batch size 的影响: ?
我们观察到的一个小趋势是较大的批量大小有利于模型性能。
我们推断K有助于挖掘难正对,而P有助于挖掘难负对。
行人重识别(reid)近期最优最简模型的训练&测试_第3张图片

验证image size影响: ?
从目前结果上看,没啥影响。
行人重识别(reid)近期最优最简模型的训练&测试_第4张图片

代码部分?

准备工作

数据集:The Market-1501 dataset

下载地址
在清华大学用六个摄像机,开放环境收集的。
共注释了1501个人。 751人被用于训练。有750个人用于测试,总共3368个查询图像。
测试集中有19732个图像,训练集中有12936个图像。

Zip文件中的内容
行人重识别(reid)近期最优最简模型的训练&测试_第5张图片
1.“bounding_box_test”文件。此文件包含19732个用于测试的图像。共750人
如下图,前缀为 0000 表示在提取这 750 人的过程中,检测错的图(可能与query是同一个人),-1 表示检测出来其他人的图(不在这 750 人中)

行人重识别(reid)近期最优最简模型的训练&测试_第6张图片

2.“bounding_box_train”文件。此文件包含12936个用于训练的图像。共751人

3.“query”文件。它包含3368个查询图像。在“bounding_box_test”文件中执行。
为 750 人在每个摄像头中随机选择一张图像作为query,因此一个人的query最多有 6 个,共有 3,368 张图像

4.“gt_bbox”文件。它包含25259个图像,全部是手工标注的。图像对应于测试和训练集中的所有的1501个人。它用于区分“好”“垃圾”和“干扰者”。
用于判断一个query的哪些图片是好的匹配(同一个人不同摄像头的图像)和不好的匹配(同一个人同一个摄像头的图像或非同一个人的图像)

5.“gt_query”文件。对于3368个query中的每一个,都有好的和不好的相关的图像(包含相同的个体)。
它在性能评估期间使用。手工标注的bounding box,用于判断DPM检测的bounding box是不是一个好的box

命名规则
0121_c3s2_085328_02.jpg 为例
1) 0121 表示每个人的标签编号,从0001到1501;
2) c3 表示第三个摄像头(camera),共有6个摄像头;
3) s2 表示第二个录像片段(sequece2),每个摄像机都有数个录像段;
4) 085328 表示 c1s1 的第085328帧图片,视频帧率25fps;
5) 02 表示 c3s2_085328 这一帧上的第2个检测框。00 表示手工标注框
行人重识别(reid)近期最优最简模型的训练&测试_第7张图片

有任何其他问题,请通过[email protected]与作者联系。
数据集其他详情,参考:https://blog.csdn.net/ctwy291314/article/details/83544088


## 开始训练时⏲️

会生成文件 一次100M,每五个epoch生成一个,一共120epoch。

行人重识别(reid)近期最优最简模型的训练&测试_第8张图片

你可能感兴趣的:(python,reid)