Learning the Model Update for Siamese Trackers学习笔记
1.模板平均的缺点
a.它对每个视频应用恒定的更新速率,尽管多种因素(如相机运动)可能导致不同的更新需求。即使在同一视频中,对象模板上所需的更新也可能在不同时间动态变化。
b.沿着模板的所有空间维度,包括通道维度,更新也是恒定的。这防止了仅更新模板的一部分,例如,这在部分遮挡的情况下是理想的。
c.跟踪器无法从漂移中恢复。部分地,这是因为它失去了对外观模板
T
0
T_0
T0的访问,而外观模板
T
0
T_0
T0是唯一毫无疑问在对象上的模板。
d.更新功能被限制为先前外观模板的非常简单的线性组合。这严重限制了更新机制的灵活性,当目标经历复杂的外观变化时,这一点很重要。考虑更复杂的组合函数有望改善结果。
2.研究背景
在目标跟踪领域,目标在一个序列中会有非常大的变化,这个变化来自于自身形状,遮挡,其他类似目标出现吗,运动模糊,光照等因素。
先有的孪生网络,一部分把第一帧的目标crop出来,用作模板,用模板和后续帧进行相似度的学习。这样的方法没有考虑目标在后续帧可能出现很大的变动,甚至和第一帧的形象相差极大,导致仍然用第一帧的目标作为模板已经不足以得到很好的相似图。
另一方面,一些工作开始探索模板更新,但很多方法都是用线性更新策略,用一个常数按照比例融合模板得到新的模板。
这种方式会导致来自第一帧的模板信息在最终得到的模板中呈现指数级下降。一旦发生了误差偏移,就无法在恢复过来。并且线性更新方式限制了获得可能还有的增益。线性更新还有一个问题,就是不能仅更新某一个位置,因为线性更新的范围是整个空间上和通道上都加值。
因此,该论文提出UpdateNet,使用三个模板输入一个小网络中,希望网络能学到最优的模板用于下一帧的预测。作者在SiamFC和DSiamRPN上加入了UpdateNet,得到了更好的性能。
3.方法
作者先介绍了线性更新策略,以及四点缺点。然后引出Learning to update
UpdateNet就是两个卷积层,在implement detail有讲,整个方法很简单。
T
i
~
\widetilde{T_i}
Ti
就是适合第i+1帧预测的模板,为了预测这个模板,输入有来自第0帧(给定帧的模板)的模板,由GT指定了。来自第i-1的最佳模板
T
~
i
−
1
\widetilde{T}_{i-1}
T
i−1,以及用第i帧的预测结果得到的模板
T
i
T_i
Ti。
左边是模板更新的示意图,我们可以看出输入有三个模板,同时还用了残差链接。来自第0帧的模板加上新的模板得到最优的模板用于下一帧的预测。
3.1 整体步骤
a.提取第一帧目标位置的包围盒的深度特征
T
0
G
T
T_0^{GT}
T0GT。
b.在通过模板更新公式求取上一帧对应的累计模板
T
~
i
−
1
\widetilde{T}_{i-1}
T
i−1,第一帧的时候累计模板被设为和第一帧一致,通过上一帧的模板,我们可以求取当前帧的预测包围盒并提取特征为
T
i
T_i
Ti。
c.通过结合第一帧的特征、上一帧的累计特征和当前帧的目标特征送入到UpdateNet,我们可以得到当前帧的累计模板用于下一帧的目标预测。
d.将更新后的模板特征与下一帧的待搜索区域进行相似计算,从而确定最后的跟踪目标。
3.2 训练UpdateNet
从上图的右边一部分我们可以看出,通过UpdateNet得到的第i帧的累计模板可用于下一帧来预测目标,而第i+1帧的的最优模板应该是其ground-truth本身,因此文中在训练阶段通过
L
2
L_2
L2损失函数对其进行优化,公式如下:
下面我将介绍生成训练数据的过程以及一种针对UpdateNet的多阶段训练过程。
3.2.1 训练样本
为了训练,从上面我们可以看出,需要四种东西,分别是KaTeX parse error: Double subscript at position 4: T_0_̲{GT},\widetilde…,由于第一个和最后一个参数是通过标签可以得到的,如何能获得符合测试时数据分布一致的另外两个模板就值得好好想想了。
对于
T
i
T_i
Ti,当然可以直接用标签获取,但是标签是准确的模板位置,在测试时,我们未必能获得准确的目标位置。如果训练过程中,
T
i
T_i
Ti采用通过标签获取一定导致在测试的时候,性能下降,毕竟训练和测试存在数据分布上的差异。
我们虽然不能通过标签获得
T
i
T_i
Ti,但是可以通过
T
~
i
−
1
\widetilde{T}_{i-1}
T
i−1得到第i帧目标的粗略位置,这个粗略位置和GT存在位置误差,恰恰就是满足测试过程数据分布的。所以关键点就来到了如何获得合理的
T
~
i
−
1
\widetilde{T}_{i-1}
T
i−1。
因此作者提出了多阶段训练,下面我们将进行介绍。
3.2.2 多阶段训练
通常一般的优化需要进行多次相同的迭代,作者认为这种方式使程序变得繁琐和低效,因此提出了多阶段训练,在第一阶段采用线性更新策略,之后各阶段采用UpdateNet进行更新。
第一阶段更新公式如下所示:
之后阶段的更新公式如下所示:
4.实验结果
VOT2018的消融研究
孪生的累积模板可视化
连续帧之间的变化率
LaSOT测试集的评估
在Trackingnet数据集上与最新技术的比较