SPLT(Skimming-Perusal Tracking)算法详解

‘Skimming-Perusal’ Tracking: A Framework for Real-Time and Robust Long-term Tracking
论文链接:论文链接
论文代码:代码链接

1、SPLT算法简介

1.1 short-term tracking和long-term tracking的区别

  对于这两者而言,主要存在2个不同之处:

  • 即视频帧的总数不同。前者的测试视频的长度一般都比较短,整个视频帧总共几十帧或者几百帧;而后者的测试视频的长度一般都比较长,整个视频帧总共几千帧。
  • 即两者的输出内容不同。前者仅仅需要在视频的每一帧中输出对应的BB即可;而后者不仅仅需要输出每一帧中目标的BB信息,同时需要提供出待跟踪目标的状态,存在或者缺失
1.2 SPLT简介

  SPLT是一个long-term跟踪算法。整个算法是基于一个skimming模块和一个 perusal模块,perusal模块包含一个高效的BB回归器-其用来生成一系列的目标候选框;和一个目标验证器-其用来根据自信度得分选择出一个最优的候选框。skimming模块的作用是根据得分去判断目标在当前帧中的存在情况,然后根据这个信息灵活的选择使用局部搜索还是全局搜索策略。

2、SPLT算法整体框架

在这里插入图片描述
  上图展示了整个SPLT跟踪算法的整体框架。框图的上方表示的是Perusal模块,框图下方表示的是Skimming模块。通过观察上图我们可以发现,Perusal模块中包含着一个SiameseRPN-即所谓的BB回归器和一个Verifier,前者通过匹配策略在原图中寻找到多个可能的候选区域,然后将这些候选区域送到后面的Verifier模块中做Feature Embedding-即将目标图片和候选的目标嵌入到同一个空间中,接着使用Cosine Similarity来获得一个最优的候选框。后者在前者的基础上根据候选框的Confidence Score来切换成不同的搜索策略,当该Confidence Score>threshold时,采用Local Search策略来在下一帧中寻找目标-即在一个小的搜索区域中寻找目标;当Confidence Score<threshold时,采用Global Serach策略来在下一帧中寻找目标-即在一个大的区域中寻找目标。

3、SPLT算法实现步骤

  通过理解上面的算法整体框架,你可能已经明白整个算法啦,这里我详细的整理一下整个算法的实现步骤,具体的实现步骤如下所示:

  • 步骤1-根据数据集中提供的BB信息在视频第一帧中裁剪出待跟踪的目标;
  • 步骤2-选择一个合适的搜索区域,并将其和第一帧中目标的BB同时输入到SiameseRPN网络中;
  • 步骤3-使用SiamRPN中的RPN网络来在搜索区域中获得多个候选的目标框,即图中的Candidate Proposal;
  • 步骤4-对候选的目标框和第一帧的目标框通过Feature Embedding嵌入到同一个空间之中;
  • 步骤5-使用Cosine Similarity来寻找出最可能包含待跟踪目标的边界框,即图中的红色BB;
  • 步骤6-根据选择的BB的Confidence Score来进行搜索区域的切换操作,即当该Confidence Score>threshold时,采用Local Search策略来在下一帧中寻找目标-即在一个小的搜索区域中寻找目标;当Confidence Score<threshold时,采用Global Serach策略来在下一帧中寻找目标-即在一个大的区域中寻找目标;
  • 步骤7-在视频中的下一帧中重复执行上面的操作,直到视频的最后一帧。

4、SPLT算法细节详解

4.1 Perusal模块详解

  SPLT的Perusal模块由一个预训练好的SiameseRPN模型和一个预训练好的verification模型组成。前者的作用是从搜索区域中寻找到一个候选的BB,后者的作用是对这些候选的BB进行验证并选择出最优的一个BB。

4.1.1 SiameseRPN网络

在这里插入图片描述
  上图展示了SiameseRPN网络的整体框架。这个算法使用一个Feature Extraction分别获取Search Region和Target Template的特征表示;然后使用Feature Fusion将不同的Feature Map进行融合;接着将融合之后的特征送入RPN网络中进行目标检测;接着使用NMS对检测的结果进行去重处理;最终输出相应的检测框,即目标所在的具体位置信息。

4.1.2 Verification网络

在这里插入图片描述
  整个验证网络的作用是通过将不同的BB映射到同一个距离空间中,然后计算其Cos相似度,最后选择出最优的BB。使用 triplet loss来确保整个算法的判别能力。

4.2 Skimming模块详解

  该模块的主要作用是根据选择的BB的Confidence Score值来进行全局和局部搜索区域的快速切换操作。当我能确定当前的BB是我要找的目标的时候,我就可以在一个很好的搜索区域范围内快速的在下一帧中找到目标;当我不能确定当前的BB是我要找的目标的时候,我就需要在一个大的区域中寻找目标,免的我丢失目标。从而在提升准确率的同时提升算法的运行速度。
在这里插入图片描述
  上图展示的是Skimming模块的网络架构。整个网络的作用是为了学习一个函数 p = g ( Z , X ) p=g(\mathcal{Z}, \mathcal{X}) p=g(Z,X)来表示待跟踪的目标是否出现在该区域中,即一个简单的二分类问题。整个网络首先将Target Template和Search Region同时输入到一个Feature Extraction中来获取特征表示;然后将目标的Feature Map扩展为1024x4x4的维度并做点乘操作;接着通过一个全局最大池化层来降维之后将不同的Feature Map连接起来构成一个Vector;最后将这个Vector送入到一个Fc+Sigmoid的网络层中输出相应的结果,即当前的搜索区域中是否目标的问题。
在这里插入图片描述
  上图展示了Skimming模块的有效性。该图的横坐标表示的是视频的第XXX帧,纵轴表示的是寻找目标所花费的时间,其中红色的曲线表示使用了Skimming模块,而蓝色的曲线表示没有使用Skimming模块。通过观察我们可以发现,该模块在保证寻找到目标的同时提高了跟踪算法的速度。

4.3 论文实现细节
4.3.1 网络架构和训练数据集
  • regression和skimming模型使用了类似的网络架构,作者使用MobileNet-V1作为这两个模块的特征检测器;
  • 使用平均池化层来将模板的特征空间下采样到1x1大小
  • Siamese网络的两个分支不做权重共享
  • 使用ResNet50作为Verification网络的基准;
  • 模板图像和候选区域的大小被裁剪为127x127,搜索区域的大小被裁剪为300x300
  • 使用ImageNet的权重来对上面的网络进行初始化操作,并在ImageNet DET和VID数据集上面执行微调操作。
4.3.2 训练数据集预处理
  • 对于回归网络而言,为了提高该模块的通用性,我们使用了ImageNet DET和VID数据集,并加入了一些数据增强操作,包括水平翻转和随机擦除等
  • 对于验证网络而言,为了加速网络的收敛速度并提升网络的判别性能,作者做了如下的操作:(1)随机的从训练数据集中选择一个视频,选择其初始的目标块作为anchor;(2)随机的在视频中选择一帧作为正样本;(3)随机的从属于不同目标类的视频中选择一帧作为负样本。
4.3.3 训练策略
  • 使用SGD分别对regression、verification、skimming网络进行端到端训练,momentum=0.9;
  • regression和skimming网络的batch_size=32,而verification网络的batch_size=64;
  • regression和skimming网络的训练次数为500000次迭代,在20个epoch中使用了相同的学习率lr=1 e − 3 e^{-3} e3,对于verification网络,作者训练了70次epoch,初始的lr=1 e − 2 e^{-2} e2,每20次减小0.1。
4.3.4 网络测试速度

SPLT算法在Inter i7 CPU (32G RAM)和a NVIDIA GTX1080Ti上面取得了25.7fps

5、SPLT算法结果分析

在这里插入图片描述
  上图展示了SPLT算法在VOT2018LT数据集上面的效果展示,SPLT获得了最优的结果,在MBMD算法的基础上获得了0.006的提升。除此之外,和MBMD算法相比,SPLT获得了更快的跟踪速度。
在这里插入图片描述
  上图展示了SPLT算法中不同模块的作用,通过上图我们可以知道SPLT算法中提出的每一个模块都对算法的性能做出了一定的贡献。
在这里插入图片描述
  上图展示了不同的验证网络可以获得的性能,通过上表观察可以发现ResNet50可以获得最好的验证性能。
在这里插入图片描述
  上图展示了SPLT算法和其它算法的性能比较,包括一些short-term跟踪算法,通过上表我们可以发现SPLT获得了较好的结果,同时也说明了long-term跟踪器还有很大的优化空间,和性能最好的short-term跟踪器相比,还有较大的差距。

6、个人总结

  整个SPLT算法的思路比较简单,很多人其实都可以想到。尽管整个算法的性能得到了一部分提升,但是整个算法速度和基于siamese网络的相比却有了很大的差距,性能上并没有得到极大的提升。不过作为long-term跟踪领域中的一些工作,本文还是有一些借鉴意义的,因为long-term跟踪具有更广阔的研究价值,和现实场景中的情况更加接近。除此之外,long-term跟踪和short-term跟踪之间还是存在着较大的性能差距,还需要提出一些新的有效的算法来提升它的性能。

参考资料

[1] 原始论文

注意事项

[1] 如果您对AI、自动驾驶、AR、ChatGPT等技术感兴趣,欢迎关注我的微信公众号“AI产品汇”,有问题可以在公众号中私聊我!
[2] 该博客是本人原创博客,如果您对该博客感兴趣,想要转载该博客,请与我联系(qq邮箱:1575262785@qq.com),我会在第一时间回复大家,谢谢大家的关注.
[3] 由于个人能力有限,该博客可能存在很多的问题,希望大家能够提出改进意见。
[4] 如果您在阅读本博客时遇到不理解的地方,希望您可以联系我,我会及时的回复您,和您交流想法和意见,谢谢。
[5] 本文测试的图片可以通过关注微信公众号AI产品汇之后向我索取!
[6] 本人业余时间承接各种本科毕设设计和各种小项目,包括图像处理(数据挖掘、机器学习、深度学习等)、matlab仿真、python算法及仿真等,有需要的请加QQ:1575262785详聊,备注“项目”!!!

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值