Abstract
问题:
传统的双流跟踪框架对目标提取的特征不够具体。
特征提取和关系建模是分开进行的,导致算法在区分目标和背景方面的能力有限。
两流、两阶段框架容易受到性能-速度困境的影响。
解决:
提出一种新的单流跟踪框架,OSTrack通过桥接具有双向信息流的模板搜索图像来统一特征学习和关系建模。
提出了一种基于单流框架中计算的强相似先验的网络内候选早期消除模块。
双流/单流
双流框架:
①Track-by-detection:检测流+关联流
②光流:光流流+特征流
③Anchor-free&re-ID:Anchor-free+re-ID
单流框架:单个模型同时检测和目标关联
本文创新点
①结合特征提取和关系建模,提出一种单流、单阶段跟踪框架。
②利用早期获得的目标与搜索区域各部分之间的相似性得分的先验性,提出了一种网络内早期候选消除模块,以减少推理时间。
Introduction
根据特征融合模块的计算量,通常采用两种不同的双流策略
双流两阶段轻关系跟踪框架:
举例:
孪生网络(Siamese networks)跟踪器
判别式(discriminative)跟踪器
过程:
①通过 CNN 主干网分别提取具有相同的结构和参数的模板和搜索区域特征
②采用单个算子,如互相关或判别相关滤波器融合特征用于状态估计
缺点:
效率高,但简单的线性运算导致判别信息丢失,效果差
无信息交互
双流两阶段重关系跟踪框架:
举例:
TransT:堆叠自注意力和交叉注意力层以进行迭代特征融合
STARK:将预先提取的模板和搜索区域特征连接输入自注意力层
缺点:
解决非线性交互造成的信息丢失问题(Transformer),但大量参数和使用迭代细化,效率低。
单流一阶段跟踪框架:
核心思想:
将模板和搜索区域连接,并将它们送到堆叠的自关注层中(Vision Transformer, ViT),生成的搜索区域特征直接用于目标分类和回归,而无需进一步匹配。
stacked self-attention layers:
堆叠多个自注意力层,每个自注意力层对输入序列处理,将输出传给下一个自注意力层。
模板会指导搜索区域的特征提取(让它更加关注目标),而搜索区域的信息也会反过来调整模板特征的表示。
优点:
在性能和速度之间取得了很好的平衡
单流框架提供了目标与搜索区域(即候选区域)的相似性的强先验
如图所示,该模型即使在早期阶段也可以识别背景区域,促使网络内早期候选淘汰模块放入提出。
Method
模型流程:
①输入图像对,包括目标初始框和搜索区域图像
# x:骨干网络的输出特征
# aux_dict:辅助字典,包含中间层特征或注意力权重
x, aux_dict = self.backbone(z=template, x=search,
ce_template_mask=ce_template_mask,
ce_keep_rate=ce_keep_rate,
return_last_attn=return_last_attn, )
# 跳转到 vit_ce.py---191 x Tensor:(4,320,768)
②将输入的图像送入ViT backbone预处理,切分图像块,将图像展平为一维向量
x = self.patch_embed(x)
z = self.patch_embed(z)
③线性投影到高维
def forward(self, x):
x = self.proj(x)
if self.flatten:
x = x.flatten(2).transpose(1, 2)
x = self.norm(x)
return x
④模型为每个包括图块特征和搜索区域的图块特征添加位置嵌入,特征包含图块嵌入和位置编码
# 展平完加token
if self.add_cls_token:
cls_tokens = self.cls_token.expand(B, -1, -1)
cls_tokens = cls_tokens + self.cls_pos_embed
# 加位置编码
z += self.pos_embed_z
x += self.pos_embed_x
⑤将图像嵌入连接并馈送到Transformer编码器层中,以进行联合特征提取和关系建模;
# 拼接
x = combine_tokens(z, x, mode=self.cat_mode)
if self.add_cls_token:
x = torch.cat([cls_tokens, x], dim=1)
模型可以包含多个编码器层,每个层都可能包含一个早期淘汰模块
# 前向
for i, blk in enumerate(self.blocks):
x = blk(x) # vit 12个layer层