Visual Object Tracking using Adaptive Correlation Filters

Paper : Visual Object Tracking using Adaptive Correlation Filters
Code :

摘要

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

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

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

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

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

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

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

在这里插入图片描述
对比以下是卷积运算

在这里插入图片描述
可以看出,卷积运算是将卷积核旋转180°后进行互相关运算(滑动窗口运算),其中互相关运算具有明确物理意义,它可以反应两个信号之间的相似程度,而卷积运算不行。

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

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

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

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

f ( n ) ⊗ h ( n ) = f ( n ) ∗ h ( − n ) f(n)\otimes h(n) = f(n) * h(-n) f(n)h(n)=f(n)h(n)

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

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(g)=F(f(n)h(n))=F(f(n)h(n))=F(f)F(h)

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

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

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

那么,在若干帧上寻找最优的滤波器 h h h 可以表示为如下的形式, f f f 表示当前帧, g g g 表示滤波器的输出
min ⁡ H ∗ ∑ i ∣ F i ⊙ H ∗ − G i ∣ 2 \min_{H^*} \sum_i|F_i \odot H^* - G_i|^2 HminiFiHGi2

MOSSE的解为

H ∗ = ∑ i G i ⊙ F i ∗ ∑ i F i ⊙ F i ∗ H^* = \frac{\sum_i G_i\odot F_i^*}{\sum_i F_i\odot F_i^*} H=iFiFiiGiFi

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

  • 对原始目标进行随机仿射变换
  • 在随机仿射的 f i f_i fi 上解方程得到 h h h

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

H i ∗ = A i B i A i = η G i ⊙ F i ∗ + ( 1 − η ) A i − 1 B i = η F i ⊙ F i ∗ + ( 1 − η ) B i − 1 \\ 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} Hi=BiAiAi=ηGiFi+(1η)Ai1Bi=ηFiFi+(1η)Bi1

当目标被遮挡时,我们应当暂停追踪,我们使用 g g g 的PSR值评估是否发生遮挡。设 g max ⁡ g_{\max} gmax 表示输出的最大值, μ sidelobe , σ sidelobe \mu_{\text{sidelobe}},\sigma_{\text{sidelobe}} μsidelobe,σsidelobe 表示除了峰值点之外的点的平均值,标准差。
P S R = g max ⁡ − μ sidelobe σ sidelobe PSR = \frac{g_{\max}-\mu_{\textrm{sidelobe}}}{\sigma_{\textrm{sidelobe}}} PSR=σsidelobegmaxμsidelobe

总结

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值