本文基于DCF进行改进,摘要中提到,基于DCF的跟踪器无法受益于端到端的训练。
理解出错之处望不吝指正。 主要包括一下三方面: 1. 将CF重构为一个卷积层,这样使其受益于端到端的训练; 2. 在时空上(spatiotemporal)使用剩余学习(residual learning)学习目标的外观变换; 3. 本文提出的模型CREST在多个数据集上验证均可达到很好的效果。
模型的整体架构如上图所示,在跟踪第T帧时,将第T帧和第1帧送入特征提取层,得到特征图后,将第T帧特征图送入Base层(重构的DCF)和Spatial层,第1帧特征图送入Temporal层,将三个层的输出融合后得到响应图。
DCF实际是优化以下函数: 传统的损失函数形式如下: 作者将DCF重构为一个卷积层,损失函数设置如下: 这样就可以用梯度下降去计算权重,而不是通过计算封闭解。
作者提到,只使用一个卷积层来重构DCF得不到效果很好的响应图,但是又不想堆叠很多的卷积层(会带来梯度消失)。作者通过添加两个剩余层(我的理解:学习差异性)来解决这个问题,即:Spatial和Temporal。这样,响应图的计算就可为以下三部分: 这样,计算响应图的流程则如下:
首先介绍Spatial层。 在我的理解下,这一部分实际上就是用于学习Base层的输出和真实输出的偏差(相当于微调),也就是用Spatial层的输出去改进Base层的输出。
Temporal层的作用是,防止当前的跟踪结果和初始帧的跟踪目标偏差较大。本层旨在学习Base层的输出和第一帧跟踪目标的差异性(防止跟丢?)。
跟踪过程实际上和传统的DCF没啥区别。
特征提取部分使用VGG网络;Base、Spatial和Temporal层使用高斯函数初始化;尺度处理和以往的模型都一样,获取不同尺度的search patch,再resize到相同尺寸;每一帧的跟踪结果作为训练数据放到样本库中,每隔T帧对模型进行更新。