CSTrackerV2

论文标题:One More Check: Making “Fake Background” Be Tracked Again

论文地址:http://arxiv.org/abs/2104.09441

论文源码:https://github.com/JudasDie/SOTS

CSTracker原团队的论文。设计re-check模块解决上个版本丢失轨迹的匹配。

Motivation

​ 在同一网络内,提取到用于检测和ReID任务的特征。但这些方法大多有一个相同的问题,仅仅依靠单帧输入来进行当前帧bbox的预测,而当遇到遮挡、模糊之类的模糊时,有用的视觉信息缺失,跟踪器的性能便会下降。如果一个目标,其在当前帧被误分为背景类别,那么便不会被连接到本属于的轨迹中,造成轨迹的中断或者终止。于是,作者在这篇文章中提出了一个re-check网络来存储这些没有检测到的目标,称之为“fake background”。re-check通过修进后的互相关性层(cross-correlation layer)来捕获先前轨迹和当前帧的候选框之间的关系,以此将先前的轨迹传播到当前帧来。这种前后帧信息的传播有助于恢复虚假背景框并且最终修复被破坏的轨迹段。通过将设计的重检查网络插入到CSTrack模型中


Methodoloy

​ 总体来看,输入当前帧xxx,通过backbone和neck得到特征
Ft=Ψ(x)F_{t}=\Psi(x) Ft=Ψ(x)
​ 之后FtF_{t}Ft会通过网络的head得到检测结果和外貌embedding,
[Rtde,Ftid]=Φ(Ft)[R_{t}^{de},F_{t}^{id}]=\Phi(F_{t}) [Rtde,Ftid]=Φ(Ft)
RtidR_{t}^{id}Rtid是检测结果,其中又包括前景概率Ptde∈RH×W×1P_{t}^{de}\in \mathcal {R}^{H\times W \times 1}PtdeRH×W×1和bbox的坐标Btde∈RH×W×4B_{t}^{de}\in \mathcal {R}^{H \times W \times 4}BtdeRH×W×4Ftid∈RH×W×CF_{t}^{id} \in \mathcal{R}^{H \times W\times C}FtidRH×W×C为ID embedding。

​ 检测结果 Rtde\boldsymbol{R}_{t}^{d e}Rtde通过greedy-NMS得到当前帧检测器最终的结果Dbase \boldsymbol{D}_{\text {base }}Dbase,也就是当前帧中的所有检测目标bbox集合。Dbase \boldsymbol{D}_{\text {base }}Dbase中的每一个检测结果,对应着 Ftid\boldsymbol{F}_{t}^{i d}Ftid中的一个 1×1×C1 \times 1 \times C1×1×C的embedding,即每一个bbox对应一个ID值。

​ 其中,MpM_{p}Mp代表先前的轨迹在当前帧的预测结果,输出的是分类为前景的概率。然后将MpM_{p}Mp和原来的当前帧的bbox的结果BtdeB_{t}^{de}Btde一起进行greedy-NMS。这次的NMS结果记为DtransD_{trans}DtransDtransD_{trans}DtransDbaseD_{base}Dbase通过之间的IOU进行融合,最后得到DfinalD_{final}DfinalDfinalD_{final}Dfinal和在其FtidF_{t}^{id}Ftid中对应的embedding用于数据关联。

Re-check Network

​ CSTrack通过加入互注意力机制来缓解检测任务和ReID任务之间的竞争,以极小的代价提升了JDE,所以作者采用CSTrack作为baseline。

​ re-check网络由传感器检测模块和细化模块两个主要组成部分组成。前者将之前的轨迹传播到当前帧,得到相似性特征映射MsM_{s}Ms。在第二模块中,MsM_{s}Ms通过一个倒置的瓶颈模块(IBM)进行初步处理,并与视觉特征FtF_{t}Ft相结合,过滤背景内容。然后,对增强后的特征F^\hat FF^进行多个卷积层的处理,得到最终的预测MpM_{p}Mp

​ 如上图所示,上一帧的embeddingEt−1id\boldsymbol{E}_{t-1}^{i d}Et1id被用来作为这一帧的时序信息。网络通过计算Et−1id\boldsymbol{E}_{t-1}^{i d}Et1idFtid\boldsymbol{F}_{t}^{i d}Ftid之间的相似度,将轨迹沿伸到当前帧来,也就是将上一帧的目标图像特征映射到当前帧的特征图上。作者通过实验还发现,如果一个目标在当前帧消失了,那么在相似度图中便对应着FP的反应。为了缓解这个问题,作者又将相似度图与当前帧特征Ft\boldsymbol{F}_{t}Ft进行融合,来进行微调。最终,re-check网络可以表示为:
Mp=∏(Ftid,Et−1id,Ft)M_{p}=\prod (F_{t}^{id},E_{t-1}^{id},F_{t}) Mp=(Ftid,Et1id,Ft)
Transductive Detection Module

​ 此模块的目的是通过前一帧的Et−1id={et−11,...,et−1n}\boldsymbol{E}_{t-1}^{i d}=\lbrace e_{t-1}^{1},...,e_{t-1}^{n} \rbraceEt1id={et11,...,et1n}和当前帧候选的embedding之间的相似度来预测之前轨迹在当前帧的位置。也就是将上一帧的目标图像特征映射到当前帧的特征图上。相应图mim_imi的计算方式:
mi=(et−1i∗Ftid)∣i=1nm_{i}=(e_{t-1}^{i}*F_{t}^{id})|_{i=1}^{n} mi=(et1iFtid)i=1n
mim_imi中的最大值便代表之前轨迹在当前帧的位置。nnn为上一帧embedding的个数,最终会得到nnn个维度的相应图,M={m1,...,mn}M=\lbrace m_{1},...,m_{n} \rbraceM={m1,...,mn}。将相应图转化为二元的mask模板,将高置信度的区域设置为1,其余的位置均为0,作者认为可以减少其他模糊的预测:
m^ixy={1,if∣∣x−cx∣∣<=r,∣∣y−cy∣∣<=r0,otherwise\hat m_{i}^{xy}= \begin{cases} 1,&&if ||x-c_{x}||<=r,||y-c_y||<=r \\ 0, && otherwise \end{cases} m^ixy={1,0,ifxcx<=r,ycy<=rotherwise
​ 其中cxc_xcxcyc_ycymim_{i}mi中的最大值坐标,rrr表示设置的范围。将m^i\hat m_{i}m^i和原始的mim_imi相乘,得到最终的相应图:
Ms=∑i=1n(m^i⋅mi)M_{s}=\sum_{i=1}^{n}(\hat m_{i}\cdot m_i) Ms=i=1n(m^imi)
MsM_sMs代表着当前帧每个位置上存在上一帧轨迹的概率。如果MsM_sMs中的某个位置值很大,说明此处有一个候选框可以连接到轨迹上。

Refinement Module

​ 作者观察到有一些没有被匹配的目标会在训练中带来一些假阳性,为了缓解这个问题,设计了refinement module。采用原始的特征Ft∈RH×W×CF_{t}\in R^{H\times W\times C}FtRH×W×C来对相应图进行微调。首先将概率mask放入一个反向的bottleneck模块,将MsM_sMs映射到高维空间,再将为到原来的维度,得到Ms′M_{s}^{'}Ms,然后与当前帧的特征进行融合:
F^=Ft⋅Ms′\hat F=F_{t}\cdot M_{s}^{'} F^=FtMs
​ 再继续通过几层卷积,将F^\hat FF^转换为最终的MpM_{p}Mp

LOSS

​ 相应图MpM_pMp的GT定位为多个高斯分布的组合,对于每个目标来说,
ti=exp(−(x−cix)2+(y−ciy)22σi2)t_{i}=exp(-\frac {(x-c_{i}^{x})^{2}+(y-c_{i}^{y})^{2}}{2\sigma_{i}^{2}}) ti=exp(2σi2(xcix)2+(yciy)2)
​ 其中,ci=(cix,ciy)c_{i}=(c_{i}^{x},c_{i}^{y})ci=(cix,ciy)为目标的中心点坐标,σi\sigma_{i}σi和目标大小有关,然后可以得到和目标数量相同的gt,t={t1,...,tn}t=\lbrace t_{1},...,t_{n} \rbracet={t1,...,tn}。最终t将沿着通道进行相加,得到最终的TTT.

​ 为了减少两个高斯分布之间的重叠部分的影响,σi\sigma_{i}σi的上限设为1。最终采用logistic-MSE损失监督训练:
Lg=−1n∑{(1−Mpxy)log(Mpxy),if,Txy=1(1−Txy)Mpxylog(1−Mpxy),else\mathcal {L}_{g}=-\frac {1}{n} \sum \begin{cases} (1-M_{p}^{xy})log(M_{p}^{xy}),&if ,T^{xy}=1\\ (1-T^{xy})M_{p}^{xy}log(1-M_{p}^{xy}),&else \end{cases} Lg=n1{(1Mpxy)log(Mpxy),(1Txy)Mpxylog(1Mpxy),if,Txy=1else

Fusing Basic and Transductive Detections

​ 这部分是讲解DtransD_{trans}DtransDbaseD_{base}Dbase进行融合的过程,首先需要对DtransD_{trans}Dtrans中的每一个bbox bib_{i}bi计算一个得分sss:
s=1−max(IOU(bi,Dbase))s = 1-max(IOU(b_{i},D_{base})) s=1max(IOU(bi,Dbase))
​ 得分sss越高就说明bib_{i}bi没有出现在DbaseD_{base}Dbase中产生误检,其中阈值设置为0.5,也可能是当前帧将其误分类为背景。对得分高的bbox作为基本检测的补充,

当在经过re-check网络后得出DtransD_{trans}Dtrans,是包含上一帧位置信息的bbox的相应图,余DbaseD_{base}Dbase当前帧进行IOU匹配,若得分s高于阈值,则判断为该目标在当前帧中漏检或者误检,将改目标作为下一帧检测的补充,最后得出DfinalD_{final}Dfinal.

算法的总流程:

Experiment

​ 在之前的基于中心点研究中,网络预测的是anchor的中心点a=(ax,ay)\mathbf {a}=(a_{x},a_{y})a=(ax,ay)到bbox中心点b=(bx,by)\mathbf {b}=(b_{x},b_{y})b=(bx,by)之前的归一化的偏移量,具体公式为:Δ=b−a=Sigmoid(r)\mathbf {\Delta}=\mathbf {b}-\mathbf {a}=Sigmoid(\mathbf {r})Δ=ba=Sigmoid(r)r\mathbf {r}r表示回归之的预测,Δ\mathbf {\Delta}Δ为偏移量。但是在模型中偏移量大多数大于1.

​ 然而,在下图中,绿色框的中心点在图像的外面,而由于sigmoid函数的限制,网络预测的偏移量生成的bbox很难覆盖整个目标。当目标只是部分可见时,bbox的预测也是不完全的,那么由于gt的bbox和预测的不完全的bbox差别很大,所以会被认定为假阳性样本。

​ 为了缓解这个问题,作者提出了boundaryaware regression方法(BAR)。让模型预测:
Δ=b−a=(Sigmoid(r)−0.5)×h\mathbf {\Delta}=\mathbf {b}-\mathbf {a}=(Sigmoid(\mathbf {r})-0.5)\times h Δ=ba=(Sigmoid(r)0.5)×h
​ 其中的h也是一个可学习的参数。这使得网络预测的偏移量能够大于1,使得预测的bbox覆盖得更多.

One More Check: Making “Fake Background” Be Tracked Again相关推荐

  1. CSTrackV2(SiamTracker):One More Check:Making “Fake Background” Be Tracked Again

    One More Check: Making "Fake Background" Be Tracked Again CSTracker原团队的论文,设计了re-check子网络,可 ...

  2. CSTrackV2解读

    这篇文章是CSTrack原团队的一个新工作,核心出发点是引入时间信息来修正检测器结果以保证轨迹的连续,通过利用前后帧相关性来进行运动建模完善单帧检测的结果,从而使得跟踪更加合理.该方法从实验数据上来看 ...

  3. 多目标跟踪综述、论文、数据集大汇总 Awesome Multiple object Tracking

    Awesome Multiple object Tracking(持续更新) 综述 论文 2022 2021 2020 2019 2018 2017 2016 数据集 综述 Multiple Obje ...

  4. Redis源码分析:AOF策略与时间触发任务

    时间周期性任务与AOF策略 周期性任务在分析启动流程与服务端处理的过程的时候,描述过有关时间任务的处理过程,在Redis内部事件驱动的过程中,有通过时间来进行事件的触发与处理机制,本文会先分析一下主要 ...

  5. Redis数据持久化机制AOF原理分析一---转

    http://blog.csdn.net/acceptedxukai/article/details/18136903 http://blog.csdn.net/acceptedxukai/artic ...

  6. redis源码分析(beta版本)-redis实现的概述逻辑

    redis概述 redis作为一个高性能的kv数据库,基于c语言实现,数据主要基于内存存放,所以查询效率较高,并且支持较多的数据类型有字符串.字典.列表与集合等数据结构.另外redis叶支持持久化的日 ...

  7. Redis RDB 持久化详解

    来自公众号:程序员历小冰 Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多.但是一旦进程退出,Redis 的数据就会丢失. 为了解决这个问题,Re ...

  8. 深入redis内部--初始化服务器

    初始化服务器代码如下: void initServer() {int j;signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN);setupSignalHa ...

  9. 深入剖析Redis RDB持久化机制

    本文来自@凡趣科技 pesiwang同学的投稿分享,对Redis RDB文件持久化的内部实现进行了源码分析. 本文分析源码基于 Redis 2.4.7 stable 版本.下面是其文章原文: rdb是 ...

  10. axure rp 创建弹框_如何在Axure RP 9中创建交换机

    axure rp 创建弹框 Axure is a well-known prototyping tool with a lot of history, it has been around for y ...

最新文章

  1. c语言的发展8个过程,c语言发展过程.pptx
  2. 选择将正确答案的序号填在括号里_小学四年级数学第五单元训练题,答案非常详细,见过的都保存了...
  3. 通过getGeneratedKeys获取记录的主键
  4. 原创 Reflector 8.1 反激活
  5. Unity C# Job System介绍(四) 并行化Job和故障排除(完结)
  6. 基于owncloud构建私有云储存网盘
  7. LINUX环境搭建:安装中文定制版UBUNTU 10.10
  8. oppo r11 android版本,OPPO R11手机一共有几个版本?各版本都有哪些区别?
  9. oracle 备份导出,oracle 怎么备份或导入导出表
  10. LeetCode算法入门- String to Integer (atoi)-day7
  11. flask-sqlalchemy分表解决方案
  12. 数据链路层的差错控制ARQ
  13. linux chroot_Linux中chroot命令的实用指南
  14. R语言-实用功能性语句1
  15. jquery基础研究学习【基础】
  16. coreldraw x5 选择工具快捷键_coreldraw x5快捷键大全 coreldraw快捷键分享
  17. mysql怎么设置id自动编号_MySQL中实现ID编号自动增加的方法
  18. jadx卡死解决方案
  19. the spell of the rising moon
  20. 服务器虚拟机uefi,为虚拟机启用或禁用 UEFI 安全引导

热门文章

  1. 电气防火限流式保护器及其过电流故障检测方法
  2. 方正税控计算机配置,方正计算机U盘启动优先级的BIOS设置说明_IT /计算机_信息...
  3. 软件测试周刊(第28期):越向前走,越有光明的前途。
  4. 计算机PS怎么做地图怎么改色,ps颜色快捷键,ps调整颜色模式和替换改色
  5. 微信公众号排版教程 | 你真的学会了排版么?
  6. 工程课系列-Level3-Web应用课
  7. 黑马程序员-----c语言从相识相知到renascence持续发布中第一篇
  8. Android面试题(一)
  9. 单片机是嵌入式的子类
  10. 学习嵌入式单片机需要学习哪些内容?