来源:arXiv:2103.15436v1, CVPR2021
这是一篇基于transformer的单目标跟踪的工作。单目标跟踪器,像SiamFC、SiamRPN, SiamRPN++等,本质上是利用模板特征在候选区域中进行搜索查找的过程,该搜索采用的是显式的correlation 操作。 作者认为这种线性匹配方式会损失语义信息,因此作者提出了使用Transformer结构刻画模板与候选区域的相关性,从而更快更好的进行单目标的跟踪。
整个TransT的结构如下所示:
其基本流程是:
- 分别对模板和候选区域进行context 的wrap。具体而言,对于模板框,以2倍的side边长crop patch并resize到128x128尺寸,对于候选区域,以前一时刻目标中心点为中心,以4倍的side为边长crop对应的patch并resize到256x256。
-
利用共享的孪生网络结构提取template和candidate的特征,将每个位置上的特征长度变换为256。
3.将template vectors和search vectors送入多层的Feature Fusion中,Feature Fusion包含一个Ego-Context Augment(ECA)和一个Cross-feature augment(CFA)模块。两部分的内部结构如下图所示:
我们对比一下Transformer结构:
可以发现不同点:a. ECA和encoder layer相比少了FNN和Add&Norm结构;b. ECA+CFA 就是decoder layer;c. Transformer中多层的encoder layer的输出作为每一层decoder layer的部分输入,但是在这里是每一层的‘encoder layer’的输出作为一层decoder layer的输入,‘encoder layer’表示没有FFN和归一化层的结构。d. 在Feature Fusion 层中template vectors 和 search vectors互相作为query和key,进行信息的融合。 - 将多层的Feature Fusion layer的输出,以search vectors对应的embedding作为query,对应的template vectors对应的embedding作为key和value送入CFA中进一步刻画当前搜索区域的每个位置上对应template vectors相似度的embedding, 进而在每个embedding上进行位置的前背景分类和box的回归。
训练
- 损失函数
正负样本选择模块:search 区域中目标gt box内的像素位置都是正样本,其他的都是负样本。 所有的样本都进行前背景分类任务,而只有正样本进行回归任务。 分类损失采用的二值交叉熵损失,为了平衡正负样本的不均衡性,对负样本的损失值除以系数16。 回归损失同时使用了损失和GIOU损失。 - 训练数据
使用了COCO, TrackingNet, LaSOT和GOT-10k数据集,对于COCO这类用于检测的数据集,通过增广获得image pairs。 数据集还采用了平移、抖动,旋转等常用的数据增广方法以扩充数据集。 - 训练设置
backbone是ImageNet上与训练的ResNet-50, 这里的ResNet50有修改,输出stage4阶段的结果,并且将stage4中下采样的步长改为1同时使用stride=2的空洞卷积增大感受野。其他部分使用Xavier初始化,训练采用AdamW优化器,学习率分别为1e-5和1e-4. batchsize=38, 1000次迭代为一个epoch,训练1000个epoch,第500次epoch进行学习率衰减。 -
推理过程
在推理时对于search获得的confidence使用汉宁窗进行加权,然后选择最大score的位置预测的框作为跟踪框。
实验结论
- 后处理,即汉宁窗权重对性能影响还是挺明显的,尤其是LaSOT数据集。
- 模型中的dual transformer结构相对于简单的transformer结构性能更好,简单的transformer是指以template 送入encoder,以search vectors构建decoder,其他的不变。
- CFA和correlation的对比。 CFA模块本身就是template 和 search vectors的特征融合,和correlation的作用是相同的。因此对比了不同特征相容方法的性能。不适用CFA时其内部的FFN结构还是存在的,只是将cross-attention替换成了correlation操作。(这部分有点不确定,说明的不是很清楚,按文中所说是进替换了最后的CFA模块为depth-wise correlation, 那其他的CFA是否替换呢?是否还保留多层的结构呢?是否还是dual操作呢?)
结论:不使用attention模块后,tracker的定位能力大大减弱,进而需要依赖更强的后处理。
结论
使用transformer结构更好的融合了template和candidate特征的相关性,进而获得更好的跟踪结果。跟踪速度能达到实时的要求。