SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks
文章下载:https://arxiv.org/abs/1812.11703
代码地址:可参考pysot. https://github.com/STVIR/pysot
动机:以往的Siamese tracking在精度上还有较大的提升空间,他们不能利用深度网络(如Resnet-50及更深的网络)的特征。
本文:验证了其核心原因在于缺乏严格的translation invariance。做法:1)提出spatial aware sampling strategy (空间感知采样策略),成功将Resnet嵌入Siamese网络中;2)提出一个新的模型架构进行了layer-wise和depth-wise的聚合,不仅进一步提升了追踪精度也减少了模型规模。
实验:在OTB2015, VOT2018, UAV123, LaSOT, TrackingNet 五个数据集上进行了性能验证。
跟踪背景:视觉目标跟踪已经广受关注,在视觉监控、人机交互、增强现实等方面有广泛应用。但因为光影变化、遮挡、背景杂乱等问题,目标跟踪仍然是一个很有挑战性的问题。
Siamese定义:将视觉目标跟踪问题表述为通过互相关学习一个通用的相似度图,这些互相关关系来自于目标模板和搜索区域的特征表示。
历史工作:CFNet通过平均模板更新追踪模型;DSiam通过一个快速转换模块更新追踪模型;SiamRPN在孪生网络后引入RPN并将追踪问题建模为回归和分类问题;DaSiamRPN进一步引入干扰鉴别模块提升模型的鉴别能力。
提出问题:当前Siamese追踪器的性能仍然不能让人满意。
原因分析:这些Siamese追踪器都是将类AlexNet网络作为backbone,本文尝试将更深的网络(Resnet)作为backbone去训练,但性能没有提升。本文发现其核心原因在于严格translation invariance被破坏(只有AlexNet的0-padding变体满足空间不变性限制)。
本文贡献:
做法 | 意义 |
---|---|
提出空间感知采样策略 | 打破Siamese追踪器对空间不变性的限制,继而使用Resnet作为backbone |
提出逐层特征聚合结构用户互相关操作 | 帮助跟踪器从多层次学习的特征中预测相似度图。 |
提出深度可分离相关结构 | (两个分支的参数量非常不平衡)减少目标模板的参数量并稳定训练阶段 |
————————————————————————————————
Q: 什么是空间不变性?
简而言之,可以理解为:目标在搜索区域内平移后和平移前的相似性结果应保持不变。
对SiamFC的训练方式而言,若将其backbone替换为带有padding的ResNet,其就违背了空间不变性。这样训练好的网络只关注图像的中心区域,当目标出现在搜索区域的角落时,网络不能对这些位置进行有效响应。也就是下图中,训练样本中目标的位置总是在图像中央,使得训练好的网络对边界的响应为0。(在3.1节中有更具体的介绍)
————————————————————————————————
直接将backbone由AlexNet替换为ResNet,性能没有提升。因此本文先做了以下的理论分析和实验。
回顾基于孪生网络的追踪器:目标patch记为z, 搜索区域记为x,追踪器的目标是从搜索区域x中找到和目标最相似的patch,其公式可表示为:
其中b表示相似度值的偏移量。
设计追踪器时有2个隐含的约束:
1)严格的平移不变性:目标在搜索区域内平移后和平移前的相似性结果应保持不变。
2)结构对称性:如果将搜索区域图像和模板区域图像互换,相似性结果应保持不变。
理论分析:为什么更深的bockbone不能提升追踪器的性能?1. 深度网络中的padding破坏了平移不变性;2. RPN需要对称特征用于分类和回归。
实验分析:1. 将目标放置在中心,然后将目标进行3种幅度(偏移量为0,16,32)的移动;2. 用这些样本分别对更深的网络训练到收敛,可视化其特征图,见下图。
可以发现,若偏移量为0时,网络只关注图像的中心位置;增加偏移量,使得边缘区域位置也受到关注。另外,将SiamRPN+ResNet50的网络通过以上偏移试验发现,当偏移量为64像素时,追踪性能EAO的结果是最好的。
除了以上对训练样本的采样策略改进后,要将深度网络嵌入追踪器中,还需要做出以下几点改进:
1). 将conv4, conv5的stride由16,32减少至8pixels, 增加空洞卷积提升感受野,在每个block后加入一个1*1卷积减少通道数至256;
2). 将模板特征裁剪至7乘7以减少互相关的计算代价;
3). 将ResNet的学习率调整为RPN学习率的1/10,可以使得整个孪生网络端到端地训练。
为了便于理解,下图展示了SiamRPN++前馈过程中张量变换的细节:
前馈过程的流程:
Step1: 提取模板分支的特征(得到3组中间特征图);
Step2: 提取待检测分支的特征(得到3组中间特征图);
Step3: 将3组中间特征图对应地进行加权求和,得到所有框的分类分数和回归系数(共25x25x5=3125个,每个像素点对应5个框);
Step4:求得3125个框的归一化得分score;
Step5:还原框的实际位置,计算尺度+比例惩罚值,将惩罚值和score加权求和。再进行窗口惩罚,选择得分最高的框作为该帧的检测结果。
该模块的动机:聚合不同层次的特征可以有效改善识别和定位。ResNet中不同层次有丰富的意义。浅层特征聚焦于颜色,形状,但缺乏语义信息;深层特征具有丰富的语义信息,有助于在移动模糊,形变上提升追踪性能。
具体做法:将ResNet50的第3,4,5个block的特征图进行加权求和。具体公式如下:
其中权重作为可训练的参数。
该模块的动机:SiamFC中,用互相关层以滑窗方式得到不同位置的单通道响应图;
SiamRPN中用UP-Xcorr,在互相关前加了2个卷积层用于提升通道数(2k->4k),这里分类分支有接近6M参数,回归分支有12M参数,参数量巨大且不平衡。
具体做法:提出深度可分离互相关DW-XCorr,比SiamRPN少了10倍的参数。1. 模板分支和搜索分支分别通过2个不共享的卷积层得到2个具有相同通道的特征图;2. 将这2个特征图做逐通道相关操作;3. 加入一个卷积层混合不同通道的输出;4. 再加一个卷积层用于输出分类/回归结果。
意义:极大减少计算代价和内存使用。模板分支和搜索分支的参数量被平衡,更易训练。
一个有趣的小现象:同一类模板在同一通道的响应是几乎相同的。不同通道代表不同的语言信息。见下图:
Network architecture: 3个随机初始化的1x1卷积用在ResNet50的conv3, conv4, conv5的后面用于减少特征维度到256.
Optimization: 用SGD算法训练, 在8个GPU上用了12天,lr=0.001在前5个epoches,最后15个epoches中lr指数衰减从0.005到0.0005, weight decay=0.0005, momentum=0.9。训练损失是分类损失+平滑l1损失。
Backbone Architecture: 对Backbone的分析结果
Layer-wise Feature Aggregation和Depthwise Correlation: 消融结果见下表
1. OTB-2015:
2. VOT2018: 60个序列
还在VOT2018上比较了速度,在NVIDIA Titan Xp上SiamRPN++是35fps, SiamRPN++的两个变体和SiamRPN++性能相近,但速度是70fps.
3. VOT2018 Long-term: 30个长序列
4. UAV123: 123个序列,平均长为915帧
5. LaSOT: 提供了大规模高质量的稠密注释,共1400个视频
6. TrackingNet:测试集有511个视频