赞
踩
Siam R-CNN 是亚琛工业大学 & 牛津大学联合推出的,核心是通过重检测进行视觉跟踪,并构建了基于轨迹的动态规划算法,建模被跟踪对象和潜在干扰对象的完整历史。效率方面,该方法可以在 ResNet-101 上达到 4.7 FPS,在 ResNet-50 上达到 15 FPS 。
上图为 Siam RCNN 整体框架,作者设计了一个 Siamese two-stage detection network 作为跟踪器。第一阶段是 RPN,第二阶段通过将感兴趣区域 (RoI) 的特征和参考特征拼接起来,包括以第一帧的 GT 作为参考和以前一帧的检测结果作为参考的两个 redetction head。最后构建 Tracklet Dynamic Programming Algorithm (TDPA) 去跟踪所有潜在目标。
接下来按照论文结构对每一部分进行说明:
本小节主要是讲如何将 Faster RCNN 的那一套用于重检测,核心是将固定类别的 detection head 换成本文的 re-detection head。re-detection head 的输出只有两类,即候选区域是否是参考对象目标。训练时 backbone 和 RPN 的参数冻结,只有 re-detection head 参与训练。
在传统 Faster RCNN 训练中,负样本是从 RPN 得到的区域中采样得到的。但是,在许多图像中,仅有少量负样本。为了最大化 re-detection head 的判别能力,作者认为需要在难负样本(hard negative samples)上训练。并且与检测中的通用难样本不同,这里的难样本是从其他视频中检索出来的与参考目标类似的样本。
Embedding Network 最直接的方法就是从其他视频中寻找与当前对象属于同一个类别的对象作为难负样本。然而,物体的类别标签并不总是可靠,一些同类的物体很容易区分,不同类别的物体反而可能是理想的难负样本。所以,本文受到行人重识别的启发,提出利用 embedding network 的方法,将 GT Box 中的物体映射为 embedding vector。这个网络来源于 PReMVOS,用 batch-hard triplet loss 来训练,期望达到的效果是消除单个对象实例之间的歧义,例如,两个不同的人在嵌入空间中应该离得很远,而同一个人在不同帧中的向量距离应该很近。
Index Structure 接下来为近邻 queries 构建一个有效的索引结构,将其用于寻找所需要跟踪的物体在 embedding space 中的最近邻。图 3 展示了一些检索得到的难负样本。
Training Procedure 训练时在其他视频上实时检索当前视频帧的难负样本过于耗时。本文预先对训练数据的每一个 GT Box 都提取其 RoI-aligned features。在训练的每一步,随机选择一个 video 和 object,然后随机的选择一个 reference 和 target frame。在此之后,用上一节提到的 indexing structure 来检索 10000 个最近邻的 reference box,从中选择出 100 个 negative training examples。
本文所提出的 片段动态规划算法(Tracklet Dynamic Programming Algorithm)隐式地跟踪感兴趣目标和潜在干扰物,从而持续抑制干扰对象。为此,TDPA 维护一组 tracklets,即:short sequences of detections。然后利用动态规划的评分算法为模板对象在第一帧和当前帧之间选择最可能的 tracklets 序列。每个 detection 都定义为:a bounding box, a re-dection score 和 RoI-aligned features。此外,每个 detection 都是 tracklet 的组成部分。tracklet 有一个开始时间和一个结束时间,并由一组 detection 定义,从开始到结束时间的每一个时间步对应一个 detection ,也就是说,在 tracklet 中不允许有空隙。
Line 2 提取 backbone 特征
Line 3 RPN 得到感兴趣区域,为了补偿潜在的假负例影响,加入上一帧的结果;
Line 4 将 Roi 和 gt 送入 redetection head 得到第一帧的重检测结果(包括相似性得分和目标框);
Line 5-6 将当前帧结果 与上一帧结果 送入 redetection head 计算每一对检测结果的相似性得分(为了减少计算,仅把当前帧与上一帧框的归一化空间距离小于 r 时才送入 head 计算,否则相似性得分设为负无穷。如图 2,上一帧有 3 个结果,当前帧有 2 个结果,理论上两两之间应该计算 6 个相似得分,但通过框的空间距离约束,实际参与相似得分计算的只有 4 组);
Line 7-20 扩展 tracklets。遍历当前帧的检测结果 加入 tracklet 需要满足:
轨迹 是一个包含 N 个不重复 tracklets 的序列,其中 ,即后一个 tracklet 的开始帧一定比前一个 tracklet 的结束帧大。一个轨迹的总分由衡量单个轨迹质量的一元分数 unuary 和惩罚轨迹之间空间距离的位置分数 loc_score 组成。
其中 ff_score 表示 tracklet 在 t 时刻以第一帧 gt 为参考的重检测分数;
而 ff_tracklet_score 表示 以 gt 所在 tracklet 的最后一个检测结果为参考的重检测分数(因为一个 tracklet 的所有检测结果都有很高概率与这个 tracklet 的第一个检测结果相同,否则这个 tracklet 就会终止,所以 gt 所在的 tracklet 的最后一个检测结果也有很大概率是正确的);
Location score 是计算前一个 tracklet 最后一个检测结果和后一个 tracklet 的第一个检测结果的 bbox 之间的 L1 距离,是负的,作为惩罚项,越小越好。
这一节介绍如何高效找到具有最大总得分的 tracklets 序列。
定义 表示从第一个 tracklet 开始到第 a 个 tracklet 的总得分。由于一旦 tracklet 不被扩展,就会终止。因此当新的一帧到来时,只有被扩展或者新建的 tracklet 需要重新计算 score。
首先设置,是 first-frame tracklet(即包含 gt 的 tracklet),当每一个 tracklet a 被创建或需要更新时
在更新了当前帧的 后,选择最大动态规划得分的 tracklet ;如果被选中的 tracklet 在当前帧中没有检测结果,则算法会指出目标不存在。由于 benchmarks 要求每帧都输出结果,所以我们用选定的 tracklet 最近一次的检测的 box,并且将其得分置 0。
实验做的很充分,在目前主流数据集中都有结果。在 short-term 的测试中,大部分达到 SOTA 水平或者比 SOTA 稍低一些,在 long-term 的测试效果则非常好,基本吊打第二名。其中 VOT 的测试因为其自带一个重启,会与算法本身的重启冲突,所以作者专门做了一个 short-term 版本的用于 VOT 测试。
消融实验比较了 使用 hard example mining 的效果,TPDA 与直接使用每一帧最大的重检测得分 (Argmax) 的对比,和专门用于测试 VOT2018 的 short-term 版本;以及改变 backbone 和 ROI 的参数量来提速的验证。
本文最大的贡献在于将两阶段结构和重检测用于跟踪,设计了一套适合长时跟踪的算法。两阶段结构在 SPM-Tracker 已经证明了其对于鲁棒性和判别性之间有较好的平衡;而重检测这类检索的方法同样对于目标变化的适应性更强。整套算法做的非常完善,美中不足在于速度太慢。
P.S. SiamRCNN 很长一段时间都作为各类跟踪数据集的天花板,直到 CVPR2021 各类 transformer 架构的跟踪算法出现后才被超过,可以参考 Transform 与目标跟踪
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。