系列文章目录
目标跟踪算法个人理解-KeepTrack篇
目标跟踪算法个人理解-GRM篇
目标跟踪算法个人理解-SeqTrack篇
目标跟踪算法个人理解-ARTrack篇
文章目录
前言
AAAI2024中稿文章,跟ARTrack一样,都开始探索如何更好的利用时序信息。都在说SOT快刷到头了,但我感觉真正符合单目标跟踪任务本质的算法研究才刚刚开始。
ODTrack简介
文章全名:ODTrack: Online Dense Temporal Token Learning for Visual Tracking
连续视频帧之间的在线上下文推理和关联对于视觉跟踪中的实例感知至关重要。然而,目前大多数表现最好的跟踪器通过离线模式持续依赖于参考帧和搜索帧之间的稀疏时间关系。因此,它们只能在每个图像对内独立地进行交互,并建立有限的时间相关性。
为了缓解上述问题,提出了一种简单、灵活和有效的视频级跟踪管道,命名为ODTrack,它以在线令牌传播的方式(online token propagation manner)密集关联视频帧的上下文关系。ODTrack接收任意长度的视频帧(实验发现3帧最好)以捕获目标实例的时空轨迹关系,并将目标的判别特征(定位信息)压缩为令牌序列,实现帧与帧的关联。
这种新的解决方案带来了以下好处:1 )压缩提纯后的令牌序列可以作为下一个视频帧中推理的prompt,从而利用过去的信息来指导未来的推理;2 )通过令牌序列的迭代传播,有效地避免了复杂的在线更新策略,从而实现了更高效的模型表示和计算。
一、Introduction
- 提出了一种新颖的视频级跟踪管道,称为ODTrack。与现有的基于稀疏时间建模的跟踪方法不同,采用令牌序列传播范式来密集关联视频帧之间的上下文关系。
- 引入了两种时间令牌传播注意力机制,将目标的判别性特征压缩到一个令牌序列中。该令牌序列作为一个提示来指导未来帧的推断,从而避免了复杂的在线更新策略。
- ODTrack在七个视觉跟踪基准上取得了最新的跟踪结果,包括LaSOT,TrackingNet,GOT10K,LaSOText,VOT2020,TNL2K和OTB100。
二、Related Work
- 传统的跟踪范式
Siamese tracking paradigm, which achieves tracking by image-pair matchin。并讨论所提方法的不同:与这些方法不同的是,ODTrack将目标跟踪重新定义为令牌序列传播任务,并旨在扩展孪生跟踪器,以自回归的方式有效地利用目标的时间信息。 - 视觉追踪中的时间建模
从MOT讲起,MOT通常涉及视频中单个目标的识别和关联,使得对轨迹信息的研究成为一种普遍的做法。然而,在单目标跟踪算法中探索时空轨迹信息利用的研究相对较少。
在SOT中,详细列出了精心设计的在线更新方法,这些方法可以认为是在探索如何利用时间线索。(STARK,TCTrack,VideoTrack,ARTrack…)
指出它们的局限性:1)优化过程复杂,涉及到专门损失函数的设计和多阶段训练策略。2)没有研究时间线索是如何在搜索框架中传播的。 - ODTrack:从令牌传播的角度引入了一种新的密集上下文传播机制,为规避复杂的优化过程和训练策略提供了一种解决方案。ODTrack其重点是通过目标运动/轨迹信息的传播来释放时间建模的潜力。
三、Approach
- Video-Level Tracking Pipeline
上图所示为新的视频级框架ODTrack的流程图。理论上,ODTrack将整个视频建模为一个连续的序列,并以自回归的方式逐帧解码目标的位置。首先,针对视频级模型的输入要求,提出了一种新颖的视频序列采样策略。随后,为了捕获视频序列中目标实例的时空轨迹信息,引入了两种简单而有效的时间令牌传播注意力机制。
-
Video Sequence Sampling Strategy
现有的大多数跟踪器通常在较短的时间间隔内采样图像对,如50、100或200帧间隔。然而,这种采样方式存在潜在的局限性,因为这些跟踪器无法捕获被跟踪对象的长期运动变化,从而限制了跟踪算法在长期场景中的鲁棒性。
为了从长时间的视频序列中获取目标实例更丰富的时空轨迹信息,ODTrack偏离了传统的短时图像对采样方法,提出了一种新的视频序列采样策略。具体来说,ODTrack建立一个较大的采样间隔,在这个间隔内随机抽取多个视频帧,形成任意长度的视频片段{ R1,R2,…,Rk,S1,S2,…,Sn }。虽然这种采样方式可能看起来很简单,但它能够近似整个视频序列的内容。这对于视频级建模至关重要。 -
Temporal Token Propagation Attention Mechanism
串联的令牌注意力机制b)和分离的令牌注意力机制c)
核心设计涉及在注意力操作中注入额外的信息,例如更多的视频序列内容和时间令牌向量,使其能够提取目标实例更丰富的时空轨迹信息。
在图( a )中,原始的注意力操作通常使用图像对作为输入,其中建模它们之间关系的过程可以表示为 f = A t t n ( [ R , S ] ) f = Attn( [ R , S ]) f=Attn([R,S])。在该范式中,跟踪器只能在每个图像对内进行独立的交互,建立有限的时间相关性。
( b )中,提出的级联令牌注意力机制将输入扩展到前述视频序列,实现了跨帧时空关系的密集建模。受语言的语境性是通过连缀形成的的启发,ODTrack同样采用串接操作为视频序列建立语境。其公式可表示为:
ODTrack为每个视频帧引入一个时态令牌 T t T_t Tt,目的是存储采样视频序列的目标轨迹信息。也就是说,将目标当前的时空轨迹信息压缩成一个令牌向量,用于传播到后续的视频帧中。
一旦目标信息被时态令牌提取,ODTrack将令牌向量以自回归的方式从第t帧传播到第( t + 1)帧,如上图所示。首先,在( t + 1)的空令牌Tempty中添加第t个时态令牌 T t T_t Tt,从而更新( t + 1)帧的内容令牌 T t + 1 T_{t + 1} Tt+1,并将其作为输入传播到后续帧。形式上,传播过程为:
在这种新的设计范式中,ODTrack可以使用时间标记作为推断下一帧的提示,利用过去的信息来指导未来的推断。此外,模型通过在线令牌传播隐式地传播目标实例的外观、定位和轨迹信息。这显著提高了视频级框架的跟踪性能。
( c )提出的分离令牌注意力机制将注意力操作分解为3个子过程:参考帧之间的自信息聚合、参考帧与搜索帧之间的交叉信息聚合以及时间令牌与视频序列之间的交叉信息聚合。这种分解在一定程度上提高了模型的计算效率,同时令牌传播与前述过程保持一致
- Prediction Head and Loss Function
对于预测头网络的设计,ODTrack采用传统的分类头和边界框回归头来达到预期的结果.
采用focal loss作为分类损失Lcls,L1 loss和GIoU loss作为回归损失。总损耗L可表示为:
三、Experiments
Training
ODTrack训练数据与过去工作对齐,使用LaSOT, GOT-10k, TrackingNet, 和COCO
将包含三个192 × 192像素的参考帧和两个384 × 384像素的搜索帧的视频序列作为模型的输入。
训练步数设置为300步。在每个历元内随机采样60000个图像对。
该模型在一台拥有两块80GB Tesla A100 GPU的服务器上进行,并设置批大小为8。
Inference
为了与训练设置保持一致,ODTrack在推理阶段将3个等间隔的参考帧合并到跟踪器中。同时,搜索帧和时间令牌向量是逐帧输入的。
Comparison with the SOTA
Ablation Study
- 令牌传播的重要性。为了研究令牌传播的影响,表( a )中进行了时间令牌是否传播的实验。w / o令牌表示没有令牌传播的视频级采样策略的实验。从第2行和第3行可以观察到,令牌传播机制的缺失导致AUC得分下降了1.2 %。这一结果表明,令牌传播在跨帧目标关联中起着至关重要的作用。
- 不同的令牌传播方法。验证所提出的两种方法的有效性。单独和级联方法都取得了显著的性能提升,其中级联方法表现出略微更好的效果。这证明了两种注意力机制的有效性。
- 搜索视频片段的长度。如表 ( b )所示,实验了搜索视频序列长度对跟踪性能的影响。当视频片段长度从2增加到3时,AUC指标提高了0.3 %。然而,序列长度的持续增加并不会带来性能的提升,这表明过长的搜索视频片段会给模型带来学习负担。因此应该选择一个合适的搜索视频片段长度。
- 采样范围。为了验证采样范围对算法性能的影响,( c )中展示了视频帧的采样范围实验。当采样范围从200扩大到1200时,在AUC指标上有明显的性能提升,说明视频级框架可以从更大的采样范围中学习目标轨迹信息。
Visualization and Limitation
在LaSOT数据集上可视化ODTrack和三个先进的跟踪器的跟踪结果。由于其能够密集传播目标的轨迹信息,在这些序列上ODTrack远胜于最新的跟踪器SeqTrack。
此外,可视化了时间令牌注意力操作的注意力图。可以观察到时间标记不断地传播并关注物体的运动轨迹信息,这有助于跟踪器准确地定位目标实例。
Rank On Paper With Code
目前(2 月份)在paper with code上无排名更新:
五、总结
个人认为现在SOT领域都在关注于如何更好的利用时序信息了(ARTrack和ODTrack),这些工作的文章读起来至少不会让人感到枯燥,不是什么引入个其他领域的新东西刷个点就没东西了得顶会文章让人感到无语。
也都在修正跟踪的范式–我称之为逐帧进行图像对比的流程。而是在尝试多个历史帧构成的视频流的输入来进行目标的预测。随之而来的问题就是如何使用多帧信息,如何不引入过多的计算负担,如何对抗历史干扰。
code
-
整体代码框架与ostrack几乎一样,第一遍调试我甚至以为我打开的是ostrack的项目代码
-
训练范式的不同:
不再是送入图片对了,而是图片集(ARTrack差不多的做法)。设置的3张模板2张搜索图像
-
ODTrack类:
新加入的东西只有# track query: save the history information of the previous frame self.track_query = None self.token_len = token_len # 1
self.track_query在前向之后进行更新以保存时间令牌:
enc_opt = feat_last[:, -self.feat_len_s:] # encoder output for the search region (B, HW, C) if self.backbone.add_cls_token: self.track_query = (x[:, :self.token_len].clone()).detach() # stop grad (B, N, C)
backbone得到模板特征后,将其与时间令牌进行注意力计算得到最终的特征:
att = torch.matmul(enc_opt, x[:, :1].transpose(1, 2)) # (B, HW, N) [8, 576, 1] opt = (enc_opt.unsqueeze(-1) * att.unsqueeze(-2)).permute((0, 3, 2, 1)).contiguous() # [8, 576, 768, 1] * [8, 576, 1, 1] --> [8, 576, 768, 1] --> [8, 1, 768, 576]
-
vit-b_ce类:
时间令牌track_query 在注意力机制前进行处理并加入到特征中:
多张模板图像,需要进行展平:
模板,搜索,时间令牌进行拼接:
-
box_head类:
中心头,略