相关滤波跟踪(MOSSE)
在信号处理中,有这么一个概念——相关性(correlation),用来描述两个因素之间的联系。而相关性又分为cross-correlation(互相关,两个信号之间的联系)和auto-correlation(自相关,本身在不同频域的相关性)。
2010年CVPR,David S.Bolme在文章《visual object tracking using adaptive correlation filters》中首次将相关滤波用在了跟踪领域,在其文章的基础之上,很多改进的算法相继出现,跟踪的效果也越来越好。
在介绍作者的算法之前,先介绍一下相关滤波的原理。
假设有两个信号f和g,则两个信号的相关性(correlation)为:
(f?g)(τ)=∫?∞∞f?(t)g(t+τ)dt
(f?g)(n)=∑?∞∞f?[m]g(m+n)
其中
f?表示
f的复共轭。correlation的直观解释就是衡量两个函数在某个时刻相似程度。
而将correlation filter应用与跟踪最简单的想法就是:两个信号越相似,其相关值越高。在跟踪,就是找到与跟踪目标响应最大的项。
作者提出的滤波器叫做Minimum Output Sum of Squared Error filter(MOSSE)(误差最小平方和滤波器)。按照前面的思路,我们需要找到一个滤波器,使其在目标上的响应最大,则如下公式:
g=f?h
其中g表示响应输出,f表示输入图像,h表示滤波模板。
显然,我们要是想获得比较获得响应输出,只需确定滤波器模板h即可。上式的计算是进行卷积计算,这在计算机中的计算消耗时很大的,因此作者对上式进行快速傅里叶变换(FFT),这样卷积操作经过FFT后就变成了点乘操作,极大的减少了计算量。上式变成如下形式:
F(g)=F(f?g)=F(f)?F(h)?
为了方便描述,将上式写成如下形式:
G=F?H?
有了上面的式子,那么后面跟踪的任务就是找到
H?了:
H?=GF
但是在实际跟踪的过程中我们要考虑到目标的外观变换等因素的影响,所以需要同时考虑目标的m个图像作为参考,从而提高滤波器模板的鲁棒性,所以作者就提出了MOSSE这个模型,其模型公式入下:
minH?=∑i=1m|H?Fi?Gi|2
因为上式的操作都是元素级别的,因此要想找到,只要使其中的每个元素(w和v是H中每个元素的索引)的MOSSE都最小即可。因此上式可转换为如下形式:
minH?wv∑i=1m|H?wvFwvi?Gwvi|2
要想得到最小的
H8wv,只需要对上式求偏导,并使偏导为0即可。即:
0=??H?wv∑i|FiwvH?wv?Giwv|2
复数域求导和实数域求导时不一样的,其求导过程如下:
0=??H?wv∑i(FiwvH?wv?Giwv)(FiwvH?wv?Giwv)?
0=??H?wv∑[(FiwvH?wv)(FiwvH?wv)??(FiwvH?wv)G?iwv?Giwv(FiwvH?wv)?+GiwvG?iwv]
0=??H?wv∑iFiwvF?iwvHwvH?wv?FiwvG?iwvH?wv?F?iwvGiwvHwv+GiwvG?iwv
0=∑i[FiwvF?iwvHwv?FiwvG?iwv]
Hwv=∑iFiwvG?iwv∑iFiwvF?iwv
上面得到是H中每个元素的值,最后得到H为:
H=∑iFi?G?i∑iFi?F?i
上式就是滤波器的模型公式。
但是在跟踪中该怎么得到滤波器H呢?
Fi和
Gi又该怎么获取?
在作者的文章中,其对跟踪框(groundtruth)进行随机仿射变换,获取一系列的训练样本
fi,而
gi则是由高斯函数产生,并且其峰值位置是在
fi的中心位置。获得了一系列的训练样本和结果之后,就可以计算滤波器h的值。注意:这里的f,g,h的size大小都相同。
作者为了让滤波器对与形变、光照等外界影响具有更好的鲁棒性,采取了如下的模板更新策略:
Ht=AtBt
At=ηFt?G?t+(1?η)At?1
Bt=ηFt?F?t+(1?η)Bt?1
作者将滤波器的模型公式分为分子和分母两个部分,每个部分都分别的进行更新,更的参数为
η。其中
At和
At?1分别表示的是当前帧和上一帧的分子。