虽然不常用,但相关滤波器可以通过旋转、遮挡和其他干扰来跟踪复杂的物体,其速度是目前最先进技术的20倍以上。最古老和最简单的相关滤波器使用简单的模板,通常在应用于跟踪时失败。更现代的方法,如ASEF和UMACE表现更好,但它们的培训需求不适合跟踪。视觉跟踪需要从一帧中训练出鲁棒滤波器,并随着目标物体外观的变化而动态调整。
本文提出了一种新型的相关滤波器——最小输出平方和(Minimum Output Sum of Squared Error, MOSSE)滤波器,该滤波器在使用单帧初始化时产生稳定的相关滤波器。基于MOSSE滤波器的跟踪器在每秒运行669帧时,对光线、比例、姿态和非刚性变形的变化具有鲁棒性。遮挡是根据峰旁瓣比检测到的,这使跟踪器暂停和恢复它离开的地方,当对象重新出现
注:本文包含额外的数字和内容,这些数字和内容被排除在CVPR 2010中,以满足长度要求。
本文提出一种新型的相关滤波器,Minimum Output Sum of Squared Error(MOSSE):输出的平方差误差最小滤波器,在初始化时只使用一个单独的帧就可以产生稳定的相关滤波器,一个基于MOSSE的跟踪器对光线、比例、姿态和非刚性变化具有鲁棒性。遮挡是根据(peak-to-sidelobe ratio)峰旁瓣比检测到的,这使得跟踪器能够在对象重新出现时暂停并恢复到停止的位置。(峰旁瓣比是啥后面再看)
视觉跟踪在视频处理中有许多实际应用。当目标在视频的一帧中被定位时,在随后的帧中跟踪该目标通常是有用的。成功跟踪目标的每一帧都提供了更多关于目标身份和活动的信息。因为跟踪比检测更容易,跟踪算法比在每帧上运行一个对象检测器可以使用更少的计算资源。
近年来,视觉跟踪受到了广泛关注。许多鲁棒跟踪策略已经被提出,容忍目标外观的变化,并通过复杂的运动跟踪目标。最近的例子包括:增量视觉跟踪(IVT)[17],鲁棒碎片跟踪(FragTrack)[1],基于图的鉴别学习(GBDL)[19]和多实例学习(MILTrack)[2]。这些技巧虽然有效,但并不简单;它们通常包括复杂的外观模型和/或优化算法,因此很难跟上许多现代相机产生的每秒25到30帧的速度(见表1)。
在本文中,我们研究了一种更简单的跟踪策略。采用自适应相关滤波器对目标外观进行建模,通过卷积实现跟踪。创建滤波器的简单方法,比如从图像中裁剪模板,会产生目标的强烈峰值,但也会错误地响应背景。因此,他们不是特别健壮的变化的目标外观和失败的挑战跟踪问题。本文介绍的平均合成精确滤波器(ASEF)、无约束最小平均相关能(UMACE)和最小输出平方和误差(MOSSE)滤波器对外观变化具有更强的鲁棒性,并能更好地区分目标和背景。如图2所示,结果是一个更强的峰值,这意味着更少的漂移和更少的丢失轨迹。传统上,ASEF和UMACE滤波器是离线训练的,用于目标检测或目标识别。在这项研究中,我们修改了这些技术,以在线训练和自适应庄园的视觉跟踪。结果是跟踪与状态的艺术表现,保留了很大程度上的速度和简单的基础上的相关性方法。
尽管方法很简单,但基于改进的ASEF、UMACE或MOSSE滤波器的跟踪在旋转、尺度、光照和部分遮挡的变化下表现良好(见图1)。峰旁瓣比(PSR),衡量相关峰值的强度,可用于检测遮挡或跟踪失败,停止在线更新,并在物体以相似外观重新出现时重新获取轨迹。更一般地说,这些高级相关滤波器的性能与前面提到的更复杂的跟踪器一致;然而,基于滤波器的方法的速度超过20倍,每秒可以处理669帧(见表1)。
本文的其余部分组织如下。第2节回顾了相关的相关滤波技术。第3节介绍MOSSE滤波器,以及如何使用它来创建一个健壮的基于滤波器的跟踪器。第4节介绍了[17]的7个视频序列的实验结果。最后,第5节将回顾本文的主要发现。
目标在某一帧被定位时,对随后的帧对该目标的定位是有作用的。跟踪比检测容易,跟踪算法比在每一帧上运行一个对象检测器容易。有些跟踪策略比如......包含了复杂的外观模型或优化算法,因此很难跟得上现在每秒25-30帧的速度。
本文研究了一种更为简单的算法,采用自适应相关滤波器进行建模,通过卷积实现跟踪。简单的方法,比如我直接从图像中裁剪目标的一部分当作对象来跟踪,确实会保存下对象的很多特征,但是背景信息也会被错误的保存下来,ASEF、UMACE和本文介绍的MOSSE对变化具有更强的鲁棒性,更能区分目标和背景。前俩是离线的,MOSSE是在线的。速度达到之前的20倍。
峰旁瓣比(PSR):衡量相关峰值的强度,可用于检测遮挡或跟踪失败,然后停止在线更新,并在物体以相似外观重新出现时重新获取轨迹。
在20世纪80年代和90年代,相关滤波器的许多变种,包括合成判别函数(SDF)[7,6]、最小方差合成判别函数(MVSDF)[9]、最小平均相关能(MACE)[11]、最优权衡滤波器(OTF)[16]和最小平方误差合成判别函数(MSESDF)[10]。这些滤波器训练的目标对象的例子具有不同的外观和强制硬约束,这样滤波器将始终产生相同高度的峰值。最相关的是MACE,它产生尖锐的峰值和高psr。
在[12]中,我们发现基于SDF的滤波器(如MACE)的硬约束会导致失真容忍问题。解决方案是消除硬约束,而不是要求滤波器产生高平均相关响应。这种被称为最大平均相关高度(MACH)的新型“无约束”相关滤波器导致了一种名为UMACE的MACE变体。
一种名为ASEF[3]的新型相关滤波器引入了一种针对特定任务的调整滤波器的方法。以前的方法只指定一个峰值,而ASEF指定每个训练图像的整个相关输出。ASEF在眼睛定位[3]和行人检测[4]上都表现良好。不幸的是,在这两项研究中,ASEF都需要大量的训练图像,这使得它在视觉跟踪中速度太慢。本文通过引入一种适用于视觉跟踪的正则化ASEF,减少了对数据的需求。
基于滤波器的跟踪器使用在示例图像上训练的滤波器来建模对象的外观。目标的初始选择基于以第一帧目标为中心的小跟踪窗口。从这一点开始,跟踪和过滤训练一起工作。通过下一帧搜索窗口上的相关滤波器跟踪目标;相关输出中最大值对应的位置表示目标的新位置。然后根据新位置执行在线更新。
为了创建快速跟踪器,相关性是在傅里叶域计算快速傅里叶变换(FFT)[15]。首先计算输入图像的二维傅里叶变换,滤波器的二维傅里叶变换:。卷积定理表明相关性在傅里叶域中变成了一种线性乘法。使用符号显式表示元素级的乘法,∗表示复合共轭,相关性的形式如下:
利用反FFT将相关输出转换回空间域。该过程的瓶颈在于计算正反fft,使得整个过程的上限时间为O(P log P),其中P为跟踪窗口中的像素个数。
在本节中,我们讨论基于滤波器的跟踪器的组成部分。第3.1节讨论了对跟踪窗口进行的预处理。第3.2节介绍了MOSSE滤波器,这是一种改进的方法,从少量图像构建稳定的相关滤波器。第3.3节展示了如何使用正则化来产生更稳定的UMACE和ASEF滤波器。第3.4节讨论了用于在线更新滤波器的简单策略。
目标的初始选择基于第一帧中以目标为中心的小窗口,目标的跟踪和过滤器的训练是一起进行的,目标通过在在下一帧搜索窗口中 correlating the filter来进行跟踪,输出中最大值的位置即是目标的新位置,以此类推。
相关性是在傅里叶域计算快速傅里叶变换(FFT)。首先计算输入图像的FFT,然后,计算滤波器的FFT,在傅里叶域中用线性乘法就可以表示他们的相关性,然后利用反FFT将输出变回到空间域。
G就是输出的相关性,F就是输入图像,H*就是他想要找的滤波器。在输入帧中找到与滤波器相关性最大的即为要跟踪的目标。
FFT卷积算法的一个问题是图像和滤波器映射到一个环面的拓扑结构。换句话说,它连接了图像的左边缘到右边缘,顶部到底部。
在卷积过程中,图像在环面空间中旋转,而不是像在空间域中那样平移。人为地连接图像的边界会引入一种影响相关输出的伪影。
通过执行[3]中概述的预处理步骤,可以减少这种影响。首先,像素值转换使用日志函数,这有助于低对比度照明情况。像素值被归一化为平均值0.0和范数1.0。最后,将图像乘以余弦窗,使边缘附近的像素值逐渐减少到零。这也有一个好处,它把重点放在靠近目标中心的地方
人为的连接上下,左右边界会对原来的信息造成影响,预处理的作用就是减少边缘的影响,把关注的重心放在靠近目标中心的地方。
MOSSE是一种算法,用于从较少的训练图像中产生类ASEF的滤波器。首先,它需要一组训练图像fi和训练输出gi。一般来说,gi可以是任何形状。在这种情况下,gi是由真实值生成的,这样它在训练图像fi中有一个以目标为中心的紧凑(σ = 2.0) 2D高斯形峰值。训练是在傅里叶域进行的,以利用简单的元素之间的输入和输出的关系。在上一节中,我们将大写变量Fi 、Gi和滤波器H定义为它们的小写对应变量的傅里叶变换。按元素执行除法。
为了找到一个将训练输入映射到期望训练输出的滤波器,MOSSE找到一个滤波器H,使卷积的实际输出和期望输出之间的平方和误差最小。最小化问题的形式如下:
对输出最小化平方和误差(SSE)的想法并不是新的。实际上,式3中的优化问题与[10]和[12]中的优化问题几乎是相同的。不同的是,在这些工作中,它假设目标总是小心地以fi为中心,输出(gi)对整个训练集是固定的,而定制每个gi是ASEF和MOSSE背后的基本思想。在跟踪问题中,目标不总是居中的,在目标跟踪中峰值会跟随目标运动。在更一般的情况下,gi可以有任何形状。例如,在[4]中,fi包含多个目标,gi有多个对应的峰值。
解决这个优化问题并不是特别困难,但确实需要一些小心,因为被优化的函数是一个复变量的实值函数。首先,H的每个元素(由ω和ν索引)都可以独立求解,因为傅里叶域中的所有操作都是按元素执行的。这涉及到把函数写成和的形式。然后,部分W.R.T. 设为零,同时把当作自变量[13]。
完整的推导过程见附录A。公式5中的术语有一个有趣的解释。分子是输入和期望输出之间的相关性,分母是输入的能谱。
由式5,我们可以很容易地证明UMACE是MOSSE的一个特例。UMACE被定义为H * = D−1m *,其中m是一个向量,包含平均的中心裁剪训练图像的FFT, D是一个对角矩阵,包含训练图像的平均频谱[18]。因为D是一个对角线矩阵,与它的逆矩阵的乘法本质上执行了元素的除法。当用当前的表示法重写时,UMACE的形式如下:
但是,UMACE要求目标以Fi为中心。再入可以使用相关性进行。如果我们将gi定义为一个克罗内克delta(在目标中心的峰值为1,在其他地方为0),这将本质上使目标重新中心并计算一个UMACE滤波器。这种方法和传统方法的不同之处在于,在这里我们种植然后转化,而传统方法是翻译然后转化。
为了证明MOSSE产生比ASEF更好的滤波器,进行了一个实验,改变用于训练滤波器的图像数量。滤波器通过对视频第一帧的跟踪窗口应用随机小仿射扰动来初始化。第二帧的PSR被用来衡量滤波器的质量。图3显示,当在少量图像窗口上训练时,MOSSE产生更好的滤波器。原因将在下一节中讨论。
1.需要一组训练图像fi和对应的输出gi,gi是Ground truth,训练在傅里叶域里进行。
2.重点就是找到一个合适的滤波器,使他能够跟踪目标。作者找到的就是使输出的误差平方和最小(Minimum Output Sum of Squared Error)。
3.滤波器H的每个元素可以独立求解,因为傅里叶域中的所有操作都是按元素执行的。所以我们可以把函数写成和,ω和ν就是滤波器元素的索引,将公式的偏导等于0即可求出滤波器。详细过程在这:
然后我们在从整体来看就是:
其实要做的就是求出这个滤波器H,然他能根据输入图像输出更好的响应位置信息。
ASEF采用了一种略有不同的方法来最小化相关变换中的误差。事实证明,当只有一个训练图像Fi和一个输出图像Gi时,存在一个产生零误差的滤波器。这个过滤器被称为精确滤波器,可以通过求解方程1找到:
一个精确的滤波器训练一个图像几乎总是过拟合的图像。当应用于新图像时,该滤波器通常会失败。平均是用来产生一个更一般的滤波器。平均的动机来自Bootstrap Aggregation[5],其中弱分类器的输出可以平均产生一个强得多的分类器。经过一些处理,ASEF滤波器的方程可以显示为:
如果只使用一张图像进行训练,MOSSE和ASEF都会产生精确的滤波器(过拟合)。
ASEF滤波器在少量图像上训练时是不稳定的,因为当训练图像中的频率包含很少的能量(或分母接近于零)时,方程8中的元素除法变得不稳定。对大量精确滤波器进行平均可以弥补这一问题,并产生鲁棒的ASEF滤波器。因为MOSSE的分母是更多图像上能量的总和,它很少产生小的数字,因此更稳定。
另外,正则化可以用于校正低能量频率和产生更稳定的ASEF滤波器。这是通过给能谱中的每个元素添加一个小值来实现的。被取代,为正则化参数。
正则化类似于来自OTF理论的结果,通常与UMACE滤波器一起使用。这一结果表明,将背景噪声的能谱与训练图像的能谱相结合,可以得到一个噪声容忍能力较好的滤波器[16]。这里我们添加了白噪声
图4显示了调整的效果。通过适当的正则化,所有的滤波器都产生了良好的峰值,并且应该足够稳定,以产生良好的轨迹。
平均的思想,正则化防止数据太少时过拟合。
方程8和5描述了在初始化期间如何构造滤波器。利用随机仿射变换构造训练集,生成初始帧中跟踪窗口的8个小扰动(fi)。训练输出(gi)也产生,其峰值对应于目标中心。
在跟踪过程中,目标通常可以通过改变其旋转、比例、姿态,通过在不同的光照条件下移动,甚至通过进行非刚性变形来改变外观。因此,滤波器需要快速适应以跟踪对象。运行平均值用于此目的。例如,从第i帧学习到的ASEF滤波器计算为:
和从第i帧学习到的MOSSEF滤波器计算为:
其中η为学习率。这给最近的帧增加了更多的权重,让以前帧的效果随着时间指数衰减。在实践中,我们发现η = 0.125允许滤波器快速适应外观变化,同时仍然保持一个健壮的滤波器。
我们训练mosse,就要通过一些输入fi和输出gi,对于初始化第一帧,它本身就是fi,为了防止过拟合,作者利用随机仿射生成了8个扰动fi,gi由高斯函数给出防止过拟合,然后依次采用10,11,12的更新策略来进行更新,mosse的。由式子可以看出,更新的滤波器是由当前帧和上一帧共同决定的。
如前所述,峰强度的简单测量称为峰旁瓣比(PSR)。为了计算PSR,将相关输出g分为峰值和副瓣,其中峰值是最大值,副瓣是峰值周围除11 × 11窗口外的其余像素。然后将PSR定义为,其中gmax为峰值,µsl和σsl为副瓣的均值和标准差。
根据我们的经验,正常跟踪条件下UMACE、ASEF和MOSSE的PSR通常在20.0到60.0之间,这表明峰值非常强。我们已经发现当PSR下降到7.0左右时,这是一个对象被遮挡或跟踪失败的迹象。对于Naive实现,PSR范围在3.0到10.0之间,对于预测轨迹质量没有帮助。
最初,我们创建了一个基于MOSSE的实时跟踪系统,并在网络摄像头的实时视频上进行评估。实时反馈可以很容易地测试跟踪器配置的小变化,并对各种目标和跟踪条件下的跟踪器性能进行定性分析。这些测试为跟踪器的操作提供了有价值的见解,并帮助产生本文中提出的快速和健壮的跟踪器。
可以从http://www.cs.toronto.edu/∼dross/ivt/免费下载的7个常用测试视频进行了更有针对性的评价。测试视频都是灰度的,包括具有挑战性的灯光变化、姿势和外观。在所有的视频中,摄像机本身都在移动,这增加了目标的不稳定运动。这七个序列包括两个车辆跟踪场景(car4, car11),两个玩具跟踪场景(鱼,sylv),和三个人脸跟踪场景(davidin300, dudek,和trellis70)。
本节评估UMACE、ASEF和MOSSE滤波器的跟踪质量。与简单滤波器相比,简单滤波器是基于在线更新的平均预处理跟踪窗口。跟踪输出被手工标记为良好跟踪、偏离中心的跟踪或丢失的跟踪(见图5)
定性地说,所有的滤镜,包括简单滤波器,都能够在测试集中发现的所有尺度、旋转和照明变化的范围内,以很小的漂移跟踪物体。大多数漂移和故障发生在目标经历大的面外旋转时。有关davidin300序列的示例,请参见图6。滤波器倾向于跟踪目标中心的一个点,随着目标的旋转,该点向目标边界移动,跟踪器最终处于跟踪窗口被背景覆盖的状态。滤波器适应这个半背景窗口,当目标旋转回一个正面姿态,滤波器有时会转移到一个新的位置,或者他们可能会失去目标和跟踪背景。
这些结果表明,先进的相关滤波器比朴素方法跟踪目标的时间更长。尖锐的峰值也有好处,PSR是一个很好的跟踪质量预测器,而PSR不是特别为朴素滤波器提供信息。对于高级滤波器,漂移和故障总是与较低的psr有关。如图7所示,这表明MOSSE PSR可以定位该视频中最具挑战性的部分。
对于基于滤波器的跟踪器,很难断言任何一种滤波器类型明显优于另一种类型。在7个视频序列中的4个,相关滤波器表现完美。在davidin300上,所有的滤镜在同一平面外旋转过程中从脸部中心漂移到眼睛,在sylv中,滤镜在该序列中相同困难的部分漂移。这两个序列表明滤波器类型的选择不是特别重要,因为滤波器以完全相同的方式失败。
只有在dudek序列上,三个滤波器之间有显著的差异。虽然MOSSE完美地完成了这一序列,但UMACE和ASEF在具有挑战性的视频部分出现了问题。即使在第3节中提出的证据表明MOSSE可能是这项任务的最佳滤波器,一个视频序列上的单个失败不足以支持一个强有力的主张;还需要更多的研究。
为了评估算法维护轨迹的能力,我们将我们的输出与IVT[17]和MILTrack[2]作者发布的视频进行了比较(参见第4.1节)。这些视频还包含了健壮在线外观模型(漫游)[8],在线Ada-Boost (OAB)[14]和FragTrack[1]的样本结果。我们考虑过下载其他算法的代码,但我们选择研究作者自己的视频,这些视频代表了这些算法的最佳性能,这也缓解了我们未能正确实现或调整这些算法的争论。在这些比较中,我们的方法能够与那些算法保持相同或更好的轨迹。本着这种精神,我们还将我们的结果发布在我们的网站/Y ouTube (http://youtube.com/users/bolme2008),以便其他人进行相同的比较。图8描述了视频中的格式和注释。
在[17]中,IVT[17]和ROAM[8]在图5的四个序列上进行比较。其中,davidin300和dudek序列成功完成。sylv在620帧附近IVT失败,trellis70在330帧附近IVT失败。在发布的视频序列中,漫游跟踪器表现完美;然而,sylv和trellis70的视频在IVT失败后不久就停止了,目前尚不清楚“漫游”是否成功完成了这些序列。这两种跟踪器的一个特点是基于滤波器的跟踪器所缺乏的,即它们估计目标的规模和方向,从而提供更多的目标在空间中的位置信息。
在[2]中,在davidin300和sylv序列上比较MILTrack[2]、OAB[14]和FragTrack[1]。所有的追踪器都显示出显著的漂移,OAB和FragTrack在davidin300上失败。这些追踪器的漂移与使用过滤器看到的非常不同。在这些视频中,跟踪窗口在目标上来回移动。当滤镜漂移时,当目标姿态发生变化时,它们往往会偏离中心,然后锁定在一个新的中心点上。
在一台2.4Ghz酷睿2双核MacBook Pro的单处理器上进行了测试。本文中测试的跟踪器是使用PyVision库、OpenCV和SciPy.1用Python编写的当使用64 × 64跟踪窗口时,最初的Python实现平均每秒大约250个跟踪更新。为了更好地测试跟踪器的运行时性能,代码中一些较慢的部分被用C重新实现,其中包括更好的内存管理和更有效地计算耗时任务,如规范化、fft和PSRs。这些优化的结果是帧率中值为每秒669次更新,如图9所示。
基于滤波器的跟踪计算复杂度为O(P log P),其中P为滤波器中的像素个数。这来自于相关操作和在线更新期间使用的fft。跟踪初始化的一次代价为O(N P log P),其中N是用于初始化第一个滤波器的仿射扰动的数量。虽然这比在线更新慢很多倍,但初始化仍然比实时更新快,每秒66.32次更新。
本文表明,视觉跟踪问题,传统的解决方法是使用重权重分类器,复杂的外观模型和随机搜索技术,可以取代高效和更简单的MOSSE相关滤波器。其结果是一个易于实现的算法,可以同样准确,而且速度快得多。
在本文中,保持跟踪器简单,以评估滤波器的跟踪能力和适应困难的跟踪场景。有许多简单的方法可以改进这个跟踪器。例如,如果目标的外观是相对稳定的,漂移可以通过基于初始帧偶尔重新进入滤波器来缓解。跟踪器还可以扩展到估计规模和旋转的变化,通过过滤的对数变换跟踪窗口后更新。