以下链接是个人关于fast-reid(BoT行人重识别) 所有见解,如有错误欢迎大家指出,我会第一时间纠正。有兴趣的朋友可以加微信:17575010159 相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 文末附带 \color{blue}{文末附带} 文末附带 公众号 − \color{blue}{公众号 -} 公众号− 海量资源。 \color{blue}{ 海量资源}。 海量资源。 行人重识别02-00:fast-reid(BoT)-目录-史上最新无死角讲解 本论文名为: B a g o f T r i c k s a n d A S t r o n g B a s e l i n e f o r D e e p P e r s o n R e − i d e n t i f i c a t i o n \color{red}{本论文名为: Bag of Tricks and A Strong Baseline for Deep Person Re-identification} 本论文名为:BagofTricksandAStrongBaselineforDeepPersonRe−identification
极度推荐的商业级项目: \color{red}{极度推荐的商业级项目:} 极度推荐的商业级项目:这是本人落地的行为分析项目,主要包含(1.行人检测,2.行人追踪,3.行为识别三大模块):行为分析(商用级别)00-目录-史上最新无死角讲解
Abstract该片论文主要探索了一个简单却有效的行人重识别基线。在近些年,由于深度学习的出现,让重识别达到一个很高的精度。但是目前精度最高的算法,都是通过设计复杂的网络结构,多个分支的特征进行连接,在论文中,对于训练的技巧都是简单给出。这篇论文将总结训练技巧对模型精度的影响,并且给出实验数据(在ReID中)。通过组合一些技巧,只使 global features 用模型在 Market1501 数据集上达到了 94.5% rank-1 与 85.9% mAP。我们的代码与模型发布在:https://github.com/michuanhaohao/reid-strong-baseline
1. Introduction为了进行比较,我们调研了去年在 ECCV2018 以及 CVPR2018 顶会上发表的文章。展示如Figure 1: 图解:这里是在 Market1501 以及 DukeMTMC-reID 数据集展示的是不同的 baseline,是我们的模型和其他的模型对比的结果。
在 Market1501 数据集上,只有 两个 baselines 超过了 90% rank-1 的准确率,四个 baselines 低于 80%。在 DukeMTMC-reID 数据集,所有的 baseline 都没有超过 80% rank-1 准确率或者 65% mAP。我们认为一个强大的基线对于促进研究的发展非常重要,所以我们使用一个强大技巧改进了这些基线,并且我们的代码已经被开源。 此外,我们也发现有些作品与其他艺术方法进行比较是不公平的。详细的说,改进主要来自训练技巧而不是方法本身。但是这些技巧很低调的在论文中提到,所有读者忽略了他。这会使这种方法的有效性被夸大,我们建议审稿的时候,应该也把这些考虑在内。
除了上述原因,另外在工业方面,一般企业都更加喜欢简单有效的模型,而不是多个 local features 进行连接,或者分为多个阶段。为了追求较高的精度,学术界常常结合多个局部特征或利用姿态估计或分割模型中的语义信息。这样的方式,为算法带来了很多额外的消耗。大的特征也降低了检索的速度。因此我们希望使用一些技巧去改变行人重识别模型(只使用global features),达到一个比较高的精度。论文总结如下:
1.我们调查了许多在顶级会议上发表的作品,发现其中大多数的扩展基线都很差。
2.对于学数界,我们提供了一个更加强大的 baseline,促进ReID的研究。
3.对于社区,们希望能给评论者一些参考,告诉他们哪些技巧会影响ReID模式的性能我们建 议,在比较不同方法的性能时,审阅人员需要考虑这些技巧
4.对于行业来说,我们希望提供一些有效的技巧来获得更好的机型而不需要太多的额外消耗。
幸运的是,在一些论文或开源项目中已经出现了许多有效的培训技巧。我们根据这些技巧,在多个数据集上对他们进行了评估。经过大量的实验,我们选择了 6 个技巧在这篇文章中进行介绍,其中包含了我们修改或者设计的。我们将这些技巧添加到一个广泛使用的基线中,以获得修改后的基线,在 Market1501 数据集达到了 94.5% rank-1以及 85.9% mAP。此外,我们发现不同的工作选择了不同的图片大小以及 batch 大小,作为补充,我们还探讨了它们对模型性能的影响。综上所述,本文的贡献如下:
1.针对于行人重识别,我们收集了一些训练技巧,我们设计了一个新的建构,叫做BNNeck,另外,我们在两个数据集上对这些技巧进行了评估。
2.我们提出了一个强大的 ReID baseline。其在 Market1501 数据集上达到了94.5% rank-1 与 85.9% mAP,其结果是通过 ResNet50 作为主干网络提取 g
lobal features 进行预测的,据我们所知,这是global features在ReID本人身上获得的最佳表现。
3.另外,我们评估了图像大小以及 batch size 对模型的影响。
2. Standard Baseline
我们遵循一个广泛使用的开源代码作为我们的标准基线,这些 baseline 都是使用 ResNet50 作为主干网络构建的,在训练阶段,这些方法包括了如下步骤:
1.使用 ResNet50(初始化权重来自于 ImageNet 的预训练模型),然后改变其全链接层为N。N 表示训练数据的 ID 数目。
2.我们随机采样 P 个身份ID,并且对每个ID采集 K 张,最后一个batch size B = P * K,在这篇论文中,我们设置P=16,K=4
3.我们改变每张图像的大小为 256 × 128,并且使用 0 值填充 10 个像素,然后使用随机剪切的方式,重新剪切 256 × 128 大小的图像。
4. 每张图像以 0.5 的概率值,随机进行水平反转。
5. 每幅图像都被解码为[0,1]中32位浮点原始像素值,然后我们通过减去0.485,0.456,0.406,再除以来对RGB通道进行归一化分别为0.229、0.224、0.225。
6.模型输出的ReID features f 进行预测 logits p。
7.ReID features f 被用于计算 triplet loss,logits p 用于计算交叉损失熵, triplet loss 的 margin m 设置为0.3
8.采用Adam方法对模型进行优化。初始学习率设为0.00035,在第40个epoch和第70个epoch分别降低0.1。总共有120个epoch
3. Training Tricks
这个章节主要介绍一些对ReID有影响的技巧,大多数这样的技巧可以在不改变模型架构的情况下扩展标准基线。The Fig. 2 展示了训练策略和本部分中出现的模型架构,如下 Fig. 2:
学习率的衰策略对于 ReID 模型具有较大的影响,标准的基线都是使用一个比较大,不变的常数作为初始学习率。在[2]中,为了获得更好的性能,采用了一个预热策略来引导网络。在实践中,如下图Fig. 3所示:
我们用了10个epoch线性地将学习速率从
3.5
×
1
0
−
5
3.5×10^{-5}
3.5×10−5 增加到
3.5
×
1
0
−
4
3.5×10^{-4}
3.5×10−4, 然后在训练到 40th epoch 和 70th epoch 学习率分别衰减为
3.5
×
1
0
−
5
3.5×10^{-5}
3.5×10−5 以及
3.5
×
1
0
−
6
3.5×10^{-6}
3.5×10−6。学习率
l
r
(
t
)
lr(t)
lr(t) 在 epoch
t
t
t 的计算如下:
在ReID中,这些图片经常被一些物体遮挡。为了解决这个问题,同时改善模型的泛化能力。Zhong 等人,[27]提出了一种名为随机擦除(REA)的数据增强方式。在实验中,对于在 batch 中的一张图像 I I I,它发生随机擦除的概率是 p e p_e pe, 它保持不变的概率是 1 − p e 1 - p_e 1−pe。然后 REA 在图像 I I I z中随机选择一个矩形 I e I_e Ie(大小为 W e , H e W_e,H_e We,He),然后使用随机的一个值擦代替这些像素。假设图像 I I I 以及其内的区域 I e I_e Ie 面积分别为 S = W × H S=W \times H S=W×H , S e = W e × H e S_e=W_e \times H_e Se=We×He。使用 r e = S e S r_e=\frac{S_e}{S} re=SSe 表示擦除区域的占比。例外,矩形 I e I_e Ie 的边长是 r 1 r1 r1 到 r 2 r2 r2 之间的一个随机值。为了确定一个区域,REA 随机初始化一个 point p o i n t = ( x e , y e ) point=(x_e,y_e) point=(xe,ye)。如果 x e + W e < = W x_e+W_e
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?