fast-reid中的sbs

1.引言

fast-reid中提供了不同的baselines,使用不同的backbone和不同的策略。以数据库Market1501为例:

提供了四种baselines,其中mgn在2018年提出,bagtricks(BoT)在2019年提出,AGW在2020年1月提出,sbs在2020年6月fast-reid中提出的。在此着重介绍SBS。作者在Githup中给出的关于SBS的内容如下:

SBS在BoT基础上又结合了其他的许多tricks。其中Bag of Freebies(BoF)是指只改变策略或增加训练成本来提高目标检测器的精度还不会增加推理成本的一些方法;Bag of Specials(BoS)是指稍微增加推理成本但极大提高目标检测精度的一些插件模块和后处理方法。

2.BoF

1.Circle loss

特征学习有两种基本范式,使用类标签和使用正负样本对标签进行学习。使用类标签时,一般需要用分类损失函数(比如 softmax + cross entropy)优化样本和权重向量之间的相似度;使用样本对标签时,通常用度量损失函数(比如 triplet 损失)来优化样本之间的相似度。

但两者本质都是最大化类内相似度,最小化类间相似度。它们有着相似的优化模式:将sp和sn组成相似度对来优化。这导致sp和sn的惩罚力度严格相等且收敛状态不明确。Circle loss把 (s_n - s_p) 泛化为 (α_ns_n − α_ps_p),从而允许 s_n 和 s_p 能以各自不同的步调学习。公式如下:

2.Freeze backbone training

为重新训练一个分类网络以满足任务要求,使用从任务中收集的数据对ImageNet预训练的模型进行微调。通常我们添加一个收集网络的分类器并随机初始化分类器参数。为了更好地初始化分类器的参数,我们在训练开始时只训练分类器参数,并且冻结网络参数,不进行更新(2k次迭代)。经过2k次迭代后,将释放网络参数进行端到端训练。

3.Cutout data augmentation & Auto Augmentation

都属于数据增强方法。Cutout data augmentation:随机选取图像的一矩形区域,使用零值擦除该矩形区域内的像素。 Auto Augmentation:基于自动技术来实现有效的数据增强,以提高特征表示的鲁棒性。该算法采用自动搜索算法来寻找平移、旋转和剪切等图像处理函数的融合策略。

4.Cosine annealing learning rate decay

在fastreid目录下的solver中的lr_scheduler.py中,实现了多间隔调整学习率 MultiStepLR(学习率调整的间隔并不是相等的)和余弦退火函数调整学习率 CosineAnnealingLR。而CosineAnnealingLR是指学习率呈余弦函数衰减。

5.Soft margin triplet loss
trilpet loss最先是在2015年的 FaceNet: A Unified Embedding for Face Recognition and Clustering 论文中提出的,可以学到较好的人脸的embedding。公式是:


其核心思想是类内距离趋小,类间距离趋大。在FaceNet中,通过构建embedding方式,将人脸图像直接映射到欧式空间。而triplet loss就是构建许多组三元组(Anchor,Positive,Negative),通过学习优化embedding,使得欧式空间内的Anchor与Positive 的距离比与Negative的距离要近。

在fast-reid中实现的triplet loss是基于在2017年的In Defense of Triplet Loss for person Re-Identification论文中所改进的triplet loss。改进点在fast-reid的代码中主要是两点。

改进点1:针对triplet loss 的缺点,即随机从训练集中挑选三张图片,挑选出来的可能是很简单的样本组合(很像的正样本和很不像的负样本)。而让网络一直学习简单的样本,会限制网络的泛化能力。在其基础上,提出batch hard sample mining,其核心思想是:每个训练的batch中随机选取P个行人id,每个id取K张照片。对于batch中的每一张图片a,挑选一个最难的正样本和一个最难的负样本和a组成一个三元组。定义和a为相同ID的图片集为A,剩下不同ID的图片图片集为B,则公式为:

改进点2:Triplet Loss采用了截断处理,即如果Triplet三元组关系正确则Loss直接为0。 论文作者发现对于Re-ID来说,有必要不断地拉近同类目标的距离。故使用softplus函数用平滑逼近代替hinge函数。softplus函数的行为与hinge相似,但它是指数衰减的,而不是硬截止,作者将其称为soft margin公式。公式如下:

3.BoS

1.Non-loacl block
感受野:每一层输出的特征图上的像素点在原始图像上映射的区域大小。Non-local是指感受野可以很大,而不是一个局部领域。non-local block利用两个点的相似性对每个位置的特征做加权。公式:

上面的公式中,输入是x,输出是y,i和j分别代表输入的某个空间位置,x_i是一个向量,维数跟x的channel数一样,f是一个计算任意两点相似关系的函数,g是一个映射函数,将一个点映射成一个向量,可以看成是计算一个点的特征。即为了计算输出层的一个点,需要将输入的每个点都考虑一遍,而且考虑的方式很像attention:输出的某个点在原图上的attention,而mask则是相似性给出。下图可更直观的理解:

2.GemPooling

公式:

3.结果和总结

结合不同的tricks,可以得到以下的结果:

因为SBS是基于Bag-of-Tricks的,在此在简单提一下Bag-of-Tricks。它与2019年提出,论文中提出6个tricks,分别是warmup learning rate、Random Erasing、Label Smoothing(与交叉熵有关,防止过拟合)、Last Stride(backbone中最后一个降采样操作)、BNNeck和center loss。论文中的总loss是cross entropy loss+triplet loss+a*center loss(a取了0.0005)。该论文核心是BNNeck。

cross entropy loss主要优化余弦距离,triplet loss主要优化欧氏距离,在同时优化特征向量时,他们的目标不一致,可能出现一个loss下降,另一个loss震荡甚至增加。BNNeck就是为解决该问题而被提出的。解决方法就是在特征层或者分类层增加一个BN层。更加直观的可以看图(ID loss即为cross entropy loss):

这样做的优点是使得两个loss都更易收敛,且正则化使同一个人的特征更加紧密。

结论:对于数据集Market-1501,训练模型时加载sbs_R101.yml文件可以得到目前最好的效果。

参考文献:
1.不可能打工.【行人重识别】《In Defense of the Triplet Loss for Person Re-Identification》论文阅读.https://www.jianshu.com/p/96579f524039.2020.10.19
2.Gapeng.Non-local neural networks.https://zhuanlan.zhihu.com/p/33345791.
2020.10.19
3.fast-reid的论文以及代码
4.臧辉.详解ReID的各部分组成及Trick——FastReID中的baseline配置.https://blog.csdn.net/qq_34919792/article/details/108509081.2020.10.19

fast-reid中的sbs相关推荐

  1. Fast RCNN 中的 Hard Negative Mining

     Fast RCNN 中将与 groud truth 的 IoU 在 [0.1, 0.5) 之间标记为负例, [0, 0.1) 的 example 用于 hard negative mining. ...

  2. ReID中PCB模型输出维度_小白入门系列—— ReID(三):进阶:学习分块局部特征

    本次带来的是计算机视觉中比较热门的重点的一块,行人重识别(也叫Person ReID),车辆重识别和行人重识别类似,有很多的共同之处,所以以下统称该任务为ReID. CSDN: https://blo ...

  3. ReID中PCB模型输出维度_搞定PCB信号完整性,只需9步!都可以学会

    信号完整性(Signal Inte grity, SI)是指信号在信号线上的质量,即信号在电路中以正确的时序和电压作出响应的能力.如果电路中信号能够以要求的时序.持续时间和电压幅度到达接收器,则可确定 ...

  4. 车辆重识别(Re-ID)中的mAP和Rank-k评测指标

    1. mAP(mean Average precision) mAP(mean Average precision,平均精度均值)是目标检测和多标签图像分类等任务中常用的评测指标,因为这类任务中的标签 ...

  5. unity随机方向的代码_ECCV 2020 目前用于车辆重识别(vehicle reID)中最大的合成车辆数据集(代码开源)...

    论文题目: Simulating Content Consistent Vehicle Datasets with Attribute Descent 论文地址: https://arxiv.org/ ...

  6. 图像局部特征(三)--FAST角点检测子

    Features From Accelerated Segment Test 1. FAST算法原理 博客中已经介绍了很多图像特征检测算子,我们可以用LoG或者DoG检测图像中的Blobs(斑点检测) ...

  7. 【CV】高被引行人重识别(Person Re-ID)综述论文

    论文名称:Deep Learning for Person Re-IDentification: A Survey and Outlook 论文下载:https://arxiv.org/abs/200 ...

  8. IJCV 2022 | 逆转特征让Re-ID模型从88.54%降至0.15%

    来源:PaperWeekly 本文约2000字,建议阅读5分钟 本文加入了很多新的 related works讨论,加入了多尺度Query攻击 / 黑盒攻击 / 防御三个不同角度的实验. 其实这篇文章 ...

  9. opengl深度缓冲获得的深度图精度太低_深度学习行人重识别ReID最新综述与展望...

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 arXiv 新出论文 Deep Learning for Person Re-identific ...

最新文章

  1. 三、openstack安装之Glance篇
  2. 运维企业专题(11)RHCS高可用集群下MySql数据库与共享磁盘(单点写入、多点写入)的设置
  3. Waymo自动驾驶汽车扎堆冲进死胡同,一天多达50辆,附近居民蚌埠住了
  4. 叮,您有一份ML.NET 速查手册请查收!
  5. uni-app微信小程序登录;uni-app微信登录小程序;uni-app微信登录app;
  6. [html] HTML5中的article和section有什么区别?
  7. 原来嵌套个网页的技术是这样的
  8. duration java_Java Duration类| toHours()方法与示例
  9. py2exe打包python_Python打包-py2exe使用
  10. 《操作系统》学习辅导
  11. 自搭Ngrok实现内网穿透centos6
  12. 微信小程序公测了!教你第一时间注册微信小程序
  13. robotframework浏览器滚动条_自动化工具Robotframework的使用
  14. 怎样用计算机制作思维导图,一篇文章告诉你如何绘制并运用思维导图!
  15. java list对象转json_java中List对象转换为JSON对象
  16. [工具][转载] ExtractData 1.08更新
  17. 百度地图+城市联动实现实时触发查询地址
  18. 【开源】云开发,一个功能相对齐全的校园社区论坛类小程序源码,表白墙小程序
  19. Overland Conveyor Belt Analyst 15.0.19.zip
  20. matlab结构数组增加域,如何用matlab创建结构数组

热门文章

  1. 8千多英语语法练习题ACCESS\EXCEL数据库
  2. [硫化铂]treecnt
  3. ProGet 22.0 Enterprise Crack by Xacker
  4. Java中带返回值的线程池Future
  5. 1个人做自媒体,就选这4个领域,变现容易,操作简单
  6. 美团网创始人王兴专访:我现在的事业十分和谐
  7. SQLiteManager 序列号 破解
  8. Deep Learning Chapter01:机器学习中线性代数
  9. 密码学1024大作业
  10. Java:自动类型转换和强制类型转换的规则