Meta-Tracker: Fast and Robust Online Adaptation for Visual Object Trackers
元跟踪器:视觉对象跟踪器的快速和健壮的在线适应
摘要
本文改进了目前最先进的使用在线自适应的视觉对象跟踪器。我们的核心贡献是基于离线元学习的方法来调整用于在线自适应跟踪的初始深度网络。元学习是由深层网络的目标驱动的,深层网络能够快速适应在未来帧中对特定目标进行稳健建模。理想情况下,生成的模型将重点放在对未来帧有用的特征上,并避免过度拟合背景杂波、目标的小部分或噪声。通过在元学习期间执行少量更新迭代,得到的网络训练速度显著加快。我们在高性能跟踪方法的基础上演示了这种方法:基于检测的MDNet跟踪[1]和基于相关的CREST跟踪[2]。在标准基准测试OTB2015[3]和VOT2016[4]上的实验结果表明,我们的元学习版本的两个跟踪器都提高了速度、准确性和鲁棒性。
1 引言
视觉目标跟踪是在给定初始帧处目标边界框的图像帧序列上精确定位目标对象的任务。与其他目标识别任务(如目标分类和检测)相比,在视觉目标跟踪中,实例级识别是一个重要因素。例如,感兴趣的对象可以是人群中的某个特定人员,或者是更广泛类别中的某个特定产品(例如可乐罐)(例如汽水罐)。因此,一个精确的目标跟踪器不仅应该能够从背景杂波和其他类别的目标中识别出一般的目标,而且还应该能够在可能属于同一类别的类似干扰源中识别出特定的目标。此外,在跟踪过程中学习的模型应该是灵活的,以考虑由于视点变化、遮挡和变形而导致的目标外观变化。
应对这些挑战的一种方法是应用在线适应。跟踪过程中的目标模型,例如DCF(判别相关滤波器)或二值分类器(对象与背景),在序列的第一帧初始化,然后更新以适应后续帧中的目标外观[1,2,5,6,7,8,9,10]。随着强大的通用深度学习表示的出现,最近表现最好的跟踪器现在利用了两个领域的优点:深度学习特性和在线适应方法。也有人提出了使用深度方法训练的离线跟踪器,具有很好的效果和很高的速度,但与最先进的在线自适应跟踪器相比,精度有所下降[11,12,13],这可能是因为难以精细地识别视频中的特定实例。
结合深度学习特征和在线自适应的一种常见做法是在深度学习特征的基础上训练目标模型,并在大规模数据集上进行预训练。这些经过预先训练的特性被证明是一种强大而广泛的表示,可以识别许多通用对象,从而使目标模型的有效训练能够集中于指定的目标实例。尽管这类办法迄今为止取得了最好的成果,但仍有几个重要问题有待解决。
首先,训练的样本不容易获得。在初始帧中,我们给了目标一个边界框。在随后的帧中,跟踪器收集额外的图像,但许多图像是多余的,因为它们基本上是相同的目标和背景。此外,最近为目标外观建立深度模型的趋势[1,2]使问题变得更具挑战性,因为深度模型已知容易在小数据集上过度拟合。因此,在深入学习特征的基础上训练的目标模型有时会受到影响,因为它过于适合背景杂波、目标的小部分或特征或噪声。最近许多研究提出了解决这些问题的各种方法。一些方法包括使用大量带有攻击性正则化的正样本和负样本[1]、因子卷积[6]、空间残差模块[2]或合并上下文信息[14]。
其次,大多数最先进的跟踪器在初始训练阶段花费了大量时间[1,2,6]。尽管许多研究提出了快速训练方法[6,7],但这仍然是一个瓶颈。在目标跟踪的许多实际应用中,如监控,需要实时处理。根据应用程序的不同,落后于初始帧可能意味着整个任务失败。另一方面,未完全训练的初始目标模型可能会影响未来帧的性能,或者在最坏的情况下,会导致所有后续帧的失败。因此,在初始帧快速获得鲁棒目标模型是非常理想的。
在这项工作中,我们提出了应对这些挑战的一般性和原则性方法。受最近元学习(learning to learn)研究[15,16,17,18,19,20]的启发,我们试图学习如何获得目标模型。关键的思想是训练目标模型,使其能够在未来的框架中得到很好的推广。在文献[1,2,5,6,7,8,9,10]中,目标模型被训练成最小化当前帧上的损失函数。即使模型达到了一个最优解,也不一定意味着它在未来的帧中可以很好地工作。相反,我们建议使用来自未来帧的错误信号。在元训练阶段,我们的目标是找到一个通用的初始表示和梯度方向,使目标模型能够专注于对未来帧有用的特征。此外,这个元训练阶段有助于避免过度适应当前帧中的干扰。此外,通过在元训练期间强制执行更新迭代次数,得到的网络在初始化期间训练速度显著加快。
我们提出的方法可以应用于任何基于学习的跟踪器,只需稍加修改。我们从基于分类器的跟踪器(按检测跟踪)类别中选择了两个最先进的跟踪器MDNet[1]和基于相关的跟踪器CREST[2]。实验结果表明,我们的元学习版本的跟踪器可以很快地适应第一帧的一次迭代,同时提高准确性和鲁棒性。请注意,即使没有使用一些手工设计的训练技术、复杂的架构设计和原始跟踪器的超参数选择,也可以做到这一点。简而言之,我们提出了一种简单的方法,使非常好的跟踪器更好,而不需要太多的努力,并演示了它在两种不同的跟踪架构上的成功,表明了潜在的普遍适用性。
2 相关工作
在线跟踪器:由于计算效率和识别能力,许多在线跟踪器使用相关滤波器作为算法的后盾。从MOSSE跟踪器的早期成功[10]中,我们发现了大量的变更。[7] 利用循环矩阵使其更有效,通过解决人工边界问题进一步改进[21,22]。使用上下文信息[14,23]、短期和长期内存[24,25]和比例估计[26]等方法解决了许多难题。近年来,深度学习特征开始在相关滤波器中发挥重要作用[1,2,5,6,8,27,28]。另一方面,通过检测跟踪的方法通常学习一个分类器来提取包裹在目标对象周围的正图像块。由[9]开创的许多学习技术已经被提出,例如多实例学习[29]、结构化输出支持向量机[30]、在线提升[31]和模型集成[32]。最近,MDNet[1]具有深度特征和深度分类器,获得了更高的精度。
离线跟踪器:最近的几项研究表明,由于强大的深度学习功能,我们可以在不进行在线调整的情况下构建精确的跟踪器[11,12,13]。孪生风格的网络采取一个小目标图像块和一个大搜索图像块,直接回归目标位置[12]或通过相关层生成一个响应图[11]。为了考虑时间信息,在[34,35,36,37]中也研究了递归网络。
元学习:这是机器学习及其应用的一个新兴领域。尽管这不是一个新的概念[38,39,40,41],但最近的许多研究成果都显示出非常有希望的结果,同时也显示出了深度学习的成功。[17,42,43,44]试图用元学习深度网络取代手工编制的优化算法。[16] 把这个想法变成了一个简单的学习问题。它的目的是根据学习器在遵循元学习器的策略时对测试图像进行分类的准确性来学习最佳的更新策略。与其删除现有的优化算法,不如将重点放在最适合现有算法的学习初始化上。[19] 随着初始化,进一步学习现有优化算法的参数。与上面介绍的方法不同,也有一些研究直接预测模型参数,而不经过优化过程[37,45,46]。
图1:我们的视觉目标跟踪元训练方法:元训练对象跟踪器的计算图。对于每一次迭代,它都会根据第一帧后的损失得到梯度,而元更新程序会使用这些梯度更新跟踪器的参数。为了增加稳定性和鲁棒性,使用未来帧来计算元初始值设定项和元更新项的梯度w.r.t参数来计算最终损失。更多细节见第3节。
3 视觉目标跟踪器的元学习
在这一部分中,我们将解释视觉对象跟踪器提出的通用元训练框架。将此应用于每个跟踪器的详细信息见第4节。
3.1 动机
一个典型的跟踪场景是:在序列的初始帧中,跟踪模型适应于目标周围指定的框。采用积极的正则化和快速优化技术,使这种适应/训练能够快速完成,从而使生成的模型对目标变化和环境变化具有鲁棒性。然后,利用跟踪模型预测后续帧中的目标位置。然后将预测的目标位置和图像存储在数据库中,并根据各自的策略定期用收集到的数据更新模型。
一个关键的动机是将这些实际的跟踪场景纳入元学习过程。追踪器的最终目标是预测未来帧中的目标位置。因此,学习具有这一最终目标的跟踪器是可取的。例如,如果我们可以观察未来帧中的变化,那么我们可以构建更健壮的目标模型,并防止它们与当前目标外观或背景杂波过度拟合。我们可以退后一步,观察在视频上运行的跟踪器,看看跟踪器是否能很好地概括,找出它们分散的原因,并相应地调整适应过程。
3.2 通用的在线跟踪器
为了适用于各种跟踪器,对在线跟踪的这一公式进行了概括。考虑跟踪器中的关键操作,y^=F(x,θ)\hat{y}=F(x,\theta )y^?=F(x,θ)它接受输入x,例如目标周围的图像块或图像 I 中以假定目标为中心的裁剪图像,以及跟踪器参数θ,并产生标签的估计值y^\hat{y}y^?,例如响应图或帧中指示目标位置的信息。对于初始化,x0x_{0}x0?从具有指定y0y_{0}y0?的初始帧I0I_{0}I0?开始,我们(近似地)求解θ1(x0,y0)θ_{1}(x_{0},y_{0})θ1?(x0?,y0?)或θ1θ_{1}θ1?,对于损失,L(F(x0,θ1),y0)L(F(x_{0},θ_{1}),y_{0})L(F(x0?,θ1?),y0?),测量模型预测指定标签的程度。对于跟踪期间的更新,我们从第j-1帧获取参数θjθ_{j}θj?,并找到y^j=F(xj,θj)\hat{y}_{j}=F(x_{j},θ_{j})y^?j?=F(xj?,θj?),然后找到关于损失的θj+1θ_{j+1}θj+1?。然后,我们可以将转换y^j\hat{y}_{j}y^?j?合并到目标位置的特定估计以及时间平滑等中。我们可以在初始帧中写入用x0x_{0}x0?和y0y_{0}y0?初始化的跟踪过程,然后继续对帧I1...InI_{1}...I_{n}I1?...In?进行跟踪和更新,作为跟踪(θ1(x0,y0),I1,…In)(θ_{1}(x_{0},y_{0}),I_{1},…I_{n})(θ1?(x0?,y0?),I1?,…In?)及其输出为y^n\hat{y}_{n}y^?n?,第n帧(指示目标位置)中的标签估计值和第n帧之后的模型参数θn+1θ_{n+1}θn+1?。
3.3 元学习算法
我们的元训练方法有两个目标。一种是对序列上的跟踪器进行初始化,该序列可以通过从θ0θ_{0}θ0?开始并应用由ααα参数化的更新函数MMM的一次或极少量迭代来执行。另一个目标是得到的跟踪器在以后的帧上是准确和健壮的。
梯度下降式更新函数M由α参数化:
M(θ,▽θL;α)=θ?α⊙▽θLM\left ( \theta ,\bigtriangledown_{\theta}L;\alpha \right )=\theta -\alpha \odot \bigtriangledown _{\theta }LM(θ,▽θ?L;α)=θ?α⊙▽θ?L (1)
其中α与跟踪器参数θ[19]的大小相同,L是一个损失函数,而⊙是元素的乘积。α可以是一个标量值,可以是可学习的[20]或手动固定的[15]。我们的经验发现,在我们的设置中,每个参数的系数是最有效的。
我们的元训练算法是通过反复采样视频,进行初始化,将学习到的初始模型应用于序列稍提前的帧,然后反向传播来更新θ0θ_{0}θ0?和ααα,从而找到一个好的θ0θ_{0}θ0?和ααα。将初始模型应用于稍微领先一帧的序列有两个目标,该模型应该足够健壮,能够处理多帧到帧的变化,如果是这样,在跟踪过程中,如果不需要太多修正,也应该进行快速更新。
在对随机视频中的随机起始帧进行采样之后,我们对从θ00=θ0\theta _{0}^{0}=\theta _{0}θ00?=θ0?开始的初始化进行优化,给定转换的输入和输出对(xj,yj)(x_{j},y_{j})(xj?,yj?)。优化的一步是
该步骤可重复至预定次数T,以找到θ1(xj,yj)=θ0Tθ_{1}(x_{j},y_{j})=θ_{0}^{T}θ1?(xj?,yj?)=θ0T?。然后,我们随机抽取一个未来帧Ij+δI_{j+δ}Ij+δ?,并评估在该未来帧上的初始帧上训练的模型,得到:y^j+δ=F(xj+δ,θ1)\hat{y}_{j+δ}=F(x_{j+δ},θ_{1})y^?j+δ?=F(xj+δ?,θ1?)。
δ越大,目标对象变化越大,环境变化也越大。现在,我们可以根据未来帧和训练的跟踪器参数来计算损失。目标函数定义为
我们使用ADAM[47]梯度下降算法进行优化。注意θ0θ_{0}θ0?和ααα在一个小批量的不同片段中是固定的,但是θ01...θ0Tθ_{0}^{1}...θ_{0}^{T}θ01?...θ0T?在每集中都会发生变化。为了计算目标函数关于θ0θ_{0}θ0?和ααα的梯度,需要计算高阶梯度(梯度函数的梯度)。这种计算方法在最近的研究中得到了应用[15,48,49]。由于自动差异化软件库[50],我们可以很容易地计算出这一点。更多细节将在算法1中解释。
更新后续帧的规则。大多数在线跟踪器,包括我们元训练的两个跟踪器(第4节),定期更新目标模型,以适应跟踪过程中自己收集的新示例。我们可以简单地使用元训练的ααα来更新模型,θj=θj?1?α⊙?θj?1Lθ_{j}=θ_{j?1}?α\odot ?_{θ_{j?1}}Lθj?=θj?1??α⊙?θj?1??L(为了简洁起见,只提出了一次迭代)。然而,它经常在较长的序列或具有非常小的帧到帧变化的序列上发散。我们认为这主要是因为我们训练ααα在初始帧进行快速适应,因此ααα的值相对较大,这导致不稳定的收敛行为(在[20]中报告了类似的现象,尽管在不同的上下文中)。由于ααα与θ0θ_{0}θ0?组合时是稳定的,此我们可以将后续帧的更新规则定义为θj=θ0?α⊙?θ0Lθ_{j}=θ_{0}?α\odot ?_{θ_{0}}Lθj?=θ0??α⊙?θ0??L,如[20]所示。我们还可以将两种策略结合起来,θj=β(θj?1?α⊙?θj?1L)+(1?β)(θ0?α⊙?θ0L)θ_{j}=β(θ_{j?1}-α\odot?_{θ_{j?1}}L)+(1-β)(θ_{0}-α\odot?_{θ_{0}}L)θj?=β(θj?1??α⊙?θj?1??L)+(1?β)(θ0??α⊙?θ0??L)。虽然我们可以用这些策略来解决不稳定的收敛行为,但没有一种策略比简单地搜索单一的学习速率更好。因此,我们找到后续帧的学习率,然后使用现有的优化算法更新模型,就像在原始版本的跟踪器中那样。
4 元跟踪器
在本节中,我们将展示如何在最先进的跟踪器中实现我们提出的元学习技术。我们选择了两种不同类型的跟踪器,一种来自相关跟踪器CREST[2],另一种来自检测跟踪器MDNet[1]。
4.1 相关跟踪器的元训练
CREST典型的相关滤波目标定义如下
其中fff是相关滤波器,*是卷积运算,Φ是特征提取器,例如CNN。x是以目标为中心的裁剪图像,y(H×W)y(H×W)y(H×W)是高斯形状的响应图,其中HHH和WWW分别是高度和宽度。裁剪后的图像通常比目标物体大,这样可以提供足够的背景信息。一旦我们训练了相关滤波器,在一个新的未来帧上的目标定位就是找到具有最大响应值的坐标(h,w)(h,w)(h,w)。
式中,y^=Φ(xnew)?f\hat{y}=Φ(x_{new})*fy^?=Φ(xnew?)?f,且y^(h,w)\hat{y}(h,w)y^?(h,w)表示yyy在(h,w)(h,w)(h,w)坐标中的元素。CREST使用了相关滤波目标的变化,定义为
其中P=P=P={
(h,w)∣∣y(h,w)?y^(h,w)∣>0.1(h,w)\mid\left | y(h,w)-\hat{y}(h,w) \right |>0.1(h,w)∣∣y(h,w)?y^?(h,w)∣>0.1}。这将鼓励模型关注那些远离真实位置的部分。
通过将相关滤波器重新设计为卷积层,可以有效地将其集成到CNN框架中[2]。这使得我们可以很容易地添加新的模块,因为优化可以很好地完成标准梯度下降在端到端的方式。他们插入时空残差模块,以避免目标模型因大的外观变化而退化。他们还设计了复杂的初始化、学习速率和权重衰减正则化器,例如时空残差模块上1000倍的权重衰减参数。在没有这些钟声和哨声的情况下,我们的目标是通过提出的元学习过程来学习一个鲁棒的单层相关滤波器。将CREST跟踪器插入到所提出的元训练框架中有两个重要问题,我们将在下面的章节中介绍我们的解决方案。
元学习维度缩减。CREST使用PCA将提取的CNN特征的通道数从512个减少到64个。这不仅降低了计算量,而且有助于提高相关滤波器的鲁棒性。在初始帧处执行主成分分析,其余序列使用学习的投影矩阵。当元训练相关滤波器时,这就成了一个问题。我们试图为来自不同事件的所有目标找到相关滤波器的全局初始化。然而,主成分分析会改变每个序列的基,这使得在每次变化的投影特征空间中无法获得全局初始化。我们建议学习减少特征的维数。在CREST中,我们可以在特征提取之后插入1x1卷积层,该层的权值也可以在元学习过程中与相关滤波器一起进行元学习和联合训练。因此,元训练框架中的θ0θ_{0}θ0?分别由θ0dθ_{0_{d}}θ0d??和θ0fθ_{0_{f}}θ0f??、降维参数和相关滤波器组成。
规范大小初始化。相关滤波器的大小取决于目标形状和大小。为了元训练相关滤波器θ0fθ_{0_{f}}θ0f??的固定大小初始化,我们应该将所有对象调整到相同大小和相同长宽比。然而,它引入了目标的失真,并且已知会降低识别性能[51,52]。为了充分利用相关滤波器的能力,我们提出使用标准尺寸初始化,并将其大小和长宽比作为训练数据集中对象的平均值。在标准尺寸初始化的基础上,我们将其扭曲为每个跟踪事件的目标对象所对应的特定尺寸,即:θ^0f=Warp(θ0f)\hat{θ}_{0_{f}}=Warp(θ_{0_{f}})θ^0f??=Warp(θ0f??)。我们使用可微双线性采样方法[53]通过梯度一直到θ0fθ_{0_{f}}θ0f??。
综上所述,在我们提出的CREST元训练框架中,F(xj,θ)F(x_{j},θ)F(xj?,θ)现在从输入帧IjI_{j}Ij?中获取一个裁剪图像xjx_{j}xj?,通过CNN特征提取器,然后进行降维(与权重θ0dθ_{0_{d}}θ0d??的1x1卷积)。然后,对相关滤波器θ0fθ_{0_{f}}θ0f??进行翘曲,最后应用翘曲的相关滤波器θ^0f\hat{θ}_{0_{f}}θ^0f??生成响应图y^j\hat{y}_{j}y^?j?(图2a)。
4.2 检测跟踪器跟踪的元训练
MDNet。MDNet是基于一个由几个卷积层和完全连接层组成的二值CNN分类器。离线阶段采用多域训练技术对分类器进行预训练。在初始帧处,它随机初始化最后一个完全连接的层,并用大量的正样本和负样本训练大约30次迭代(图2b)。后续帧中的目标位置由得分最高的正样本块的矩形框输出的平均值确定。它在跟踪过程中采集正负样本,并定期更新分类器。多域预训练是实现鲁棒性的一个关键因素,他们采用了一种具有攻击性的dropout正则化器和不同层次的学习速率,以进一步避免对当前目标外观的过度拟合。在没有这些技术(多域训练和正则化)的情况下,我们的目标是仅依靠所提出的元学习过程来获得鲁棒且快速的自适应分类器。
元训练。它也可以很容易地插入到提出的元学习框架中。F(xj;θ)F(x_{j};θ)F(xj?;θ)取输入帧IjI_{j}Ij?(yj∈y_{j}∈yj?∈{
0,10,10,1}N是相应的标签)中的xjx_{j}xj?∈RN×D作为输入图像块,其中D是块的大小,N是块的数目。然后,目标块通过CNN分类器,损失函数L是一个简单的交叉熵损失 ?∑K=1Nyjklog(Fk(xj;θ))-\sum_{K=1}^{N}y_{j}^{k}log(F^{k}(x_{j};\theta ))?∑K=1N?yjk?log(Fk(xj?;θ))。
标签洗牌。虽然大规模的视频检测数据集包含丰富的视频对象变化,但与其他静止图像数据集相比,目标和类别的数量有限。这可能会导致一个深度CNN分类器记住数据集中的所有对象实例,并将新看到的对象分类为背景。为了避免这个问题,我们采用了[18]中建议的标签洗牌技巧。每次我们运行一个跟踪集时,我们都会对标签进行洗牌,这意味着有时正样本的标签变为0而不是1,负样本的标签变为1而不是0。这个技巧鼓励分类器通过查看当前的训练示例,而不是记住特定的目标外观,来学习如何区分目标对象和背景。
5 实验
实验部分有兴趣的可以自行查阅。
6 总结和今后的工作
本文提出了一种利用元学习改进基于深度网络的在线跟踪器的方法。我们通过改进两个最先进的跟踪器(CREST和MDNet)来证明这一点。在元训练阶段,我们学习如何根据来自未来帧的错误信号来获得鲁棒的初始目标模型。实验结果表明,两种跟踪器在速度、精度和鲁棒性方面都有改进。所提出的技术是通用的,因此其他跟踪器也可以从中受益。
在目标跟踪算法中,除了本文重点研究的目标外观建模外,还有许多其他的重要因素。例如,何时或多久更新一次模型[56],如何管理数据库[6],以及如何定义搜索空间。这些考虑有时比目标外观建模更重要。在未来的工作中,我们建议将这些作为学习和元学习的一部分来处理。