Paper : Visual Object Tracking using Adaptive Correlation Filters
Code :

摘要

视觉跟踪任务需要在一帧的画面上训练鲁棒的滤波器,并随着目标对象的形变动态适应。作者提出了提供了一种新型的相关滤波器——平方误差最小输出和滤波器(MOSSE),其可以在初始帧上产生稳定的相关滤波器,并随着光照、尺度、非刚性形变等变化进行动态适应,同时能够达到每秒669帧的速度。是否产生遮挡是根据PSR指数进行判断,跟踪器在对象消失时暂停检测并停止相关滤波器的参数变化,并在对象再次出现重新开始检测和动态调整。

相关操作和基于滤波器的目标追踪

互相关(Cross-correlation) 对于一维连续信号来说定义如下

(fg)(τ)=+f(t)g(t+τ)dt (f*g)(\tau) = \int _{-\infty}^{+\infty} f^*(t)g(t+\tau) dt

其中,ff^* 表示共轭,对于一维离散信号定义如下

(fg)[n]=+f[m]g[m+n] (f*g)[n] = \sum _{-\infty}^{+\infty} f^*[m]g[m+n]

二维互相关运算具有相近的结构,下图是对于二维离散的矩阵进行互相关的运算

Visual Object Tracking using Adaptive Correlation Filters
对比以下是卷积运算

Visual Object Tracking using Adaptive Correlation Filters
可以看出,卷积运算是将卷积核旋转180°后进行互相关运算(滑动窗口运算),其中互相关运算具有明确物理意义,它可以反应两个信号之间的相似程度,而卷积运算不行。

基于滤波器的目标追踪则是将目标的信息存储到滤波器中,将每一帧的图片输入到滤波器,滤波器输出一个分数图表示不同位置的窗口图像与目标的相关性,峰值对应的窗口位置就是该帧目标的定位框。

Visual Object Tracking using Adaptive Correlation Filters
一种简单的方法就是直接将目标的灰度图进行裁剪,当作滤波器的核,也就是上例中的Naive filter,这种方法的缺点在于得到的分数图中,受背景的干扰太大。如果每帧的filter 都是前一帧得到的定位框的裁剪,那么追踪过程中错误会发生累积,而且也没有用到之前的结果。

基于相关滤波器的物体追踪

为了加速使用相关滤波器的速度,需要在频域上进行操作来加速计算。相关操作不支持时域卷积频域相乘的特性,需要先将相关运算转化为卷积运算,假设使用 \otimes 表示相关运算,* 表示卷积运算,那么有

f(n)h(n)=f(n)h(n) f(n)\otimes h(n) = f(n) * h(-n)

对两边进行FFT变换,使用 F\mathfrak{F} 表示FFT,使用 gg 表示相关滤波器的输出

F(g)=F(f(n)h(n))=F(f(n)h(n))=F(f)F(h) \mathfrak{F}(g) = \mathfrak{F}(f(n)\otimes h(n)) = \mathfrak{F}(f(n) * h(-n)) = \mathfrak{F}(f)\odot \mathfrak{F}^*(h)

其中 F(h)\mathfrak{F}^*(h) 表示对 F(h)\mathfrak{F}(h) 求共轭。使用 FFT 和 invFFT 可以将计算相关滤波器的时间加速到 O(PlogP)O(P\log P)

在使用 FFT 进行计算时,我们对图片使用循环图像法进行边界填充,对于滑动窗口类型的运算,都会有较强的边界效应,因此对图像进行如下预处理

  • 使用 log 操作来应对低对比度场景
  • 对 log 后的像素值进行均值为0,方差为1的归一化
  • 原图像乘上 cosine 窗口来降低边缘的像素值到0

那么,在若干帧上寻找最优的滤波器 hh 可以表示为如下的形式,,ff 表示当前帧,gg 表示滤波器的输出
minHiFiHGi2 \min_{H^*} \sum_i|F_i \odot H^* - G_i|^2

MOSSE的解为

H=iGiFiiFiFi H^* = \frac{\sum_i G_i\odot F_i^*}{\sum_i F_i\odot F_i^*}

相关滤波器 hh 的值初始化方法如下

  • 对原始目标进行随机仿射变换
  • 在随机仿射的 fif_i 上解方程得到 hh

随着目标追踪过程的进行,我们需要根据物体的新的形态更新 gg

Hi=AiBiAi=ηGiFi+(1η)Ai1Bi=ηFiFi+(1η)Bi1 \\ H_i^* = \frac{A_i}{B_i} \\ A_i = \eta G_i\odot F_i^* + (1-\eta) A_{i-1} \\ B_i = \eta F_i\odot F_i^* + (1-\eta) B_{i-1}

当目标被遮挡时,我们应当暂停追踪,我们使用 gg 的PSR值评估是否发生遮挡。设 gmaxg_{\max} 表示输出的最大值,μsidelobe,σsidelobe\mu_{\text{sidelobe}},\sigma_{\text{sidelobe}} 表示除了峰值点之外的点的平均值,标准差。

总结

这篇文章的主要贡献是将相关滤波器引入到追踪中,不仅具有较好的追踪表现而且运算速度较快,并通过将目标信息保存到滤波器中每次进行更新进行自适应的调整,初步展示了相关滤波器的威力。之后的若干篇追踪都用到了相关滤波器。

相关文章: