基本框架
Minimum Output Sum of Squared Error Filter (MOSSE)
t个目标区域样本分别为
f1,f2,⋯,ft
,通过滤波器
ht
,期望输出
gi
(通常为二维高斯函数,峰值位于目标区域中心),最小化均方误差:
对
Ht
求导,令导数为0,得:
对于t+1帧,假设其在第t帧的目标区域内提取得到特征图z,那么计算
ht
与z的相关值
y的最大值的位置即被认为是t+1帧中目标区域的中心点.
我们保持目标区域尺寸不变,将其中心点进行移动相应位置,就得到了在新帧中的目标区域。对该区域进行特征提取,然后加入到训练集中对模型进行更新得到
ht+1
后,即可进行下一帧
中的目标检测了。
在实际的tracking过程中,一般使用如下方法来更新模型:
其中
η
为学习率。
缺点
- 只使用了灰度作为特征,模型所使用的特征维数太低,难以很好地反映目标的特性。
- 只估算了目标区域中心点在帧间的平移运动,而没有考虑目标在运动过程中反映在画面上的尺度变化,在目标尺度发生改变时难以适应。
Discriminative Scale Space Tracking Filter (DSST)
对MOSSE的改进:
- 使用fHoG替代灰度(通常fHoG为31dims,而DSST实际使用28dims)
- 考虑目标尺度变化
不考虑尺度变化
设特征维数为d,则特征图可记作
fl,l=1,2,⋯,d
。滤波器应和特征图匹配,误差函数:
引入
λ
项是为了控制滤波器频域参数求解过程中的除0,另一方面也可以控制滤波器参数变化范围,
λ
越小,滤波器参数变化范围越大。
对上式做傅里叶变换,求导,令导数为0,得:
在实际操作中,可以用下式更新模型:
新帧预测:
考虑尺度变化
滤波器和特征图由
d×M×N
改为
d×M×N×S
,S = num of scales,即构造金字塔。这导致复杂度增大为
O(dMNS×logMNS)
。
改进思路,两组滤波器模板:
- d个大小为 M×N 的二维位置滤波器
- d×M×N 个大小为S的一维尺度滤波器
位置滤波器的训练方法同前,而尺度滤波器则是在确定了目标区域中心后,对于尺度因子s,提取出其对应区域的d个
M×N
的二维矩阵后,将其拉成一条向量,作为尺度因子s下的
d×M×N
维特征,构成尺度滤波器。
完整算法
- 估算位置
- 在帧 It 中根据前一帧的位置 pt−1 和尺度因子 st−1 划定区域提取特征 zlocat
- 在 zlocat 与位置滤波器 Alocat−1,Blocat−1 做相关得到 ylocat
- 将 ylocat 最大值点设为当前帧的目标中心 pt
- 估算尺度
- 在帧 It 中根据位置 pt 和前一帧的尺度因子 st−1 划定区域,缩放后得到S个区域,提取特征 zscalet
- 将征 zscalet 与尺度滤波器 Ascalet−1,Bscalet−1 做相关得到 yscalet
- 将 yscalet 最大值点设为当前帧的目标尺度 st
- 更新模型
- 在帧 It 中根据估算出的位置 pt 和尺度 st 划定区域提取特征,得到 flocat 和 fscalet
- 更新位置滤波器得到 Alocat,Blocat
- 更新尺度滤波器得到 Ascalet,Bscalet
复杂度
O(dMN×logMN+dMNS×logS)
缺点
- 难以适应大幅度形变、遮挡等
- 循环卷积边缘效应
SRDCF对此做出了改进。
Spatially Regularized Discriminative Correlation Filter (SRDCF)
将滤波器模板参数主要集中在一个搜索区域中的目标区域(即中心附近),在目标区域以外的背景区域处滤波器模板参数应尽可能地小或者为0(示意图如下)。
定义新的误差函数形式:
其中
w
是我们指定的权重函数,由于我们希望
一般可取:
对误差函数做傅里叶变换(对于某个变量
经过一系列变换:
其中,对于某个变量
- 设
a 原本为 M×N 的二维矩阵,经过傅里叶变换得到 a^- a^ 的每一列被依次连接起来,形成一个 MN×1 维的列向量 a⃗
特别地:
- f^ 向量化后,填充在一个 MN×MN 矩阵的对角线上,构成对角阵 D(f^)
- w^ 向量化后,转置填充在矩阵 C(w^) 的第一行,接下来的每一行是前一行向右循环移动1位的结果
(To be continued…)