DSST(Discriminative Scale Space Tracker)
题目:Accurate Scale Estimation for Robust Visual Tracking
来源:BMVC 2014 (VOT2014 Benchmark第一名)
作者:Martin Danelljan,林雪平大学
1. 基本介绍
提出了一种在tracking-by-detection框架下的目标尺度估计算法。算法基于尺度金字塔描述来学习DCF(判别式相关滤波),分别学习尺度估计滤波器、位置滤波器两个不同的滤波器。相较于全面的尺度搜索方法(也是本文所提出,比较耗时),快速尺度跟踪方法性能提升显著,并能够方便的融入到其他没有尺度估计的跟踪算法中。
2. DCF (Discriminative Correlation Filters)
位置估计的方法基于MOSSE跟踪方法,算法通过学习得到一个位置的相关滤波器,用这个滤波器来确定目标在下一帧的位置。MOSSE使用的是灰度图像。
f
i
f_i
fi为训练图像,
g
i
g_i
gi为期望的高斯相应,
h
t
h_t
ht为第
t
t
t帧时待求的滤波器(详细情况可参阅MOSSE算法总结)。通过在傅里叶频域中最小化误差项
ε
ε
ε,
(2.1)
ε
=
∑
j
=
1
t
∥
h
t
⋆
f
i
−
g
j
∥
2
=
1
M
N
∑
j
=
1
t
∥
H
t
∗
F
j
−
G
j
∥
2
\varepsilon=\sum_{j=1}^{t}\| h_t \star f_i - g_j \|^2 =\frac{1}{MN}\sum_{j=1}^{t}{\| H^{*}_{t}F_{j}-G_{j} \|^2} \tag{2.1}
ε=j=1∑t∥ht⋆fi−gj∥2=MN1j=1∑t∥Ht∗Fj−Gj∥2(2.1)
可求解得到第t帧的滤波器(使用
t
t
t个样本)
(2.2)
H
t
=
∑
j
=
1
t
G
j
∗
F
j
∑
j
=
1
t
F
j
∗
F
j
.
H_t=\frac{\sum_{j=1}^{t}{G^*_jF_j}}{\sum_{j=1}^{t}{F^*_jF_j}}. \tag{2.2}
Ht=∑j=1tFj∗Fj∑j=1tGj∗Fj.(2.2)
通过对过去帧的检测结果加权平均来取代直接的
Σ
Σ
Σ求和。当在当前帧内
M
×
N
M×N
M×N大小的检测区域
Z
Z
Z 进行检测时,检测结果为
(2.3)
y
=
F
−
1
{
H
t
∗
Z
}
.
y=\mathcal{F}^{-1}\{ H^*_t Z \}. \tag{2.3}
y=F−1{Ht∗Z}.(2.3)
新目标的估计位置即为相关分数矩阵
y
y
y的最大值位置。
3. 算法介绍
3.1 Discriminative Correlation Filters for Multidimensional Features(多维特征的DCF)
使用深度
d
=
28
d=28
d=28的特征
f
f
f(27维fhog特征+1维灰度原始特征,每层特征记为
l
l
l ),并加上汉明窗,期望响应输出
g
g
g为二维高斯函数,每层特征对应一个二维的位置滤波器
h
l
h^l
hl(
h
l
h^l
hl,
f
l
f^l
fl,
g
g
g尺寸相等)。
(3.1)
ε
=
∥
∑
l
=
1
d
h
l
⋆
f
l
−
g
∥
2
+
λ
∑
l
=
1
d
∥
h
l
∥
2
.
\varepsilon=\left \| \sum_{l=1}^{d}{h^l\star f^l-g} \right \|^2+\lambda\sum_{l=1}^{d}{\left \|h^l\right \|^2}. \tag{3.1}
ε=∥∥∥∥∥l=1∑dhl⋆fl−g∥∥∥∥∥2+λl=1∑d∥∥hl∥∥2.(3.1)
最小化误差
ε
ε
ε,得到滤波器
(3.2)
H
l
=
G
∗
F
l
∑
k
=
1
d
F
k
∗
F
k
+
λ
H^l=\frac{G^*F^l}{\sum_{k=1}^{d}{{F^k}^*F^k+\lambda}} \tag{3.2}
Hl=∑k=1dFk∗Fk+λG∗Fl(3.2)
仍然是分子分母分别迭代
(3.3)
A
t
l
=
(
1
−
η
)
A
t
−
1
l
+
η
G
t
∗
F
t
l
B
t
=
(
1
−
η
)
B
t
−
1
+
η
∑
k
=
1
d
F
t
k
∗
F
t
k
\begin{aligned} A_t^l=&(1-\eta)A_{t-1}^l +\eta G_t^*F_t^l \\ B_t=&(1-\eta)B_{t-1}+\eta \sum_{k=1}^{d}{{F_t^k}^*F_t^k} \tag{3.3} \end{aligned}
Atl=Bt=(1−η)At−1l+ηGt∗Ftl(1−η)Bt−1+ηk=1∑dFtk∗Ftk(3.3)
预测输出由下式得到
(3.4)
y
=
F
−
1
{
∑
l
=
1
d
A
l
∗
Z
l
B
+
λ
}
y=\mathcal{F}^{-1}\left \{ \frac{\sum_{l=1}^{d}{{A^l}^{*}}Z^l}{B+\lambda} \right \} \tag{3.4}
y=F−1{B+λ∑l=1dAl∗Zl}(3.4)
3.2 Exhaustive Scale Space Tracking(全面尺度空间跟踪)
基于3维的位置尺度滤波器,滤波器尺寸为
M
×
N
×
S
M×N×S
M×N×S,代表高、宽、尺度数。
首先以目标旧位置为中心提取
S
S
S 种不同尺度下的矩形样本,然后把所有样本resize到固定的尺寸(
M
×
N
M×N
M×N),构成一个
M
×
N
×
S
M×N×S
M×N×S的矩形块(以待估计目标的位置和尺度为中心)。然后在这个固定的尺寸下提取fhog特征, 使用三维高斯函数构建对应的期望输出
g
g
g。滤波器的迭代计算方式同3.1节相同。
预测时,取矩形块响应输出中的最大值,同时得到新位置和新尺度。然后以该位置和尺度为中心进行下一步矩形块的构建和迭代计算。
此方法计算量较大。
3.3 Fast Scale Space Tracking(快速尺度跟踪)
基于一维尺度滤波器。由于在连续的两帧中,位置的变化往往大于尺度的变化,因为,文中先采用2维位置滤波器确定位置信息,再在位置的基础上使用1维尺度滤波器确定尺度信息。
- 在当前帧里,提取一个上帧目标2倍大小区域( M × N M×N M×N)作为样本 Z t r a n s Z_{trans} Ztrans。以3.1节介绍的位置滤波器方法,计算目标新位置 P t P_t Pt。
- 以目标当前新位置 P t P_t Pt为中心,截取 S = 33 S=33 S=33种不同尺度下的矩形样本 Z s c a l e Z_{scale} Zscale,然后把所有样本resize到固定的尺寸( M × N M×N M×N),在这个固定的尺寸下提取fhog特征,每个尺度样本 Z s c a l e Z_{scale} Zscale的特征串成一个特征向量(设长度为 d d d,长度和resize的尺寸有关)。
- 对应到3.1节的滤波器更新公式,则特征层数变为特征向量的长度 d d d, g g g变为一维高斯函数(长度为 S = 33 S=33 S=33), f l f^l fl长度为 S = 33 S=33 S=33,在每个 f l f^l fl上分别乘一个一维汉明窗。然后预测输出响应最高的尺度值。
在此引用kooalle_cln博客中的一张图
![]()
3.4 各种尺度的选择
a
n
P
×
a
n
R
,
n
∈
{
−
⌊
S
−
1
2
⌋
,
…
,
⌊
S
−
1
2
⌋
}
a^nP\times a^nR,\qquad n\in \left\{ -\left \lfloor \frac{S-1}{2}\right \rfloor,\ldots, \left \lfloor \frac{S-1}{2}\right \rfloor\right\}
anP×anR,n∈{−⌊2S−1⌋,…,⌊2S−1⌋}
P
P
P和
R
R
R为目标在上一帧的长宽,
a
=
1.02
a=1.02
a=1.02,
S
=
33
S=33
S=33为尺度总数。
则
n
n
n一共有
33
33
33个取值(
n
∈
{
−
16
,
−
15
,
…
,
15
,
16
}
n∈\{-16,-15,…,15,16\}
n∈{−16,−15,…,15,16}),
a
n
∈
{
0.728
,
0.743
,
…
,
1.346
,
1.373
}
a^n∈\{0.728,0.743,…,1.346,1.373\}
an∈{0.728,0.743,…,1.346,1.373}
比当前尺度越大的多的尺度,放缩比例越大。即越接近的尺度越精细检测,越远的尺度越粗略检测。
4. 算法性能
与其他尺度适应算法的比较
Martin自从提出DSST算法后,在自己的跟踪器工作中就从来没用过,用的都是上述的SAMF
优点:不依赖于定位器,如果定位时间较长则使用DSST进行尺度估计是首选,否则不建议使用;
时间开销:CPU下大概10ms,主要开销在特征提取上(33*2)次。
SAMF
尺度金字塔原理,方法实用;
特点:无参数,不更新,尺度估计是否准确比较依赖于定位器的性能是否鲁棒;
优点:虽然尺度估计不准会影响跟踪定位器的学习,但是多尺度搜索天然的可以和定位器定位相互促进,所以相互结合比较稳定,不易出现尺度估计偏移过大情况;
时间开销:依赖于定位器的定位开销,N-1倍于定位器定位开销(N为金字塔等级数);
应用:广泛应用于SRDCF系列目标跟踪算法(SRDCF,CCOT,ECO)。
【引用自 https://blog.csdn.net/aiqiu_gogogo/article/details/79108461 】
- 虽然SAMF和DSST都可以跟上普通的目标尺度变化,但SAMF只有7个尺度比较粗,而DSST有33个尺度比较精细准确;
- DSST先检测最佳平移再检测最佳尺度,是分步最优,而SAMF是平移尺度一起检测,是平移和尺度同时最优,而往往局部最优和全局最优是不一样的;
- DSST将跟踪划分为平移跟踪和尺度跟踪两个问题,可以采用不同的方法和特征,更加灵活,但需要额外训练一个滤波器,每帧尺度检测需要采样33个图像块,之后分别计算特征、加窗、FFT等,尺度滤波器比平移滤波器慢很多;SAMF只需要一个滤波器,不需要额外训练和存储,每个尺度检测就一次提特征和FFT,但在图像块较大时计算量比DSST高。
所以尺度检测DSST并不总是比SAMF好,其实在VOT2015和VOT2016上SAMF都是超过DSST的,当然这主要是因为特征更好,但至少说明尺度方法不差。总的来说,DSST做法非常新颖,速度更快,SAMF同样优秀也更加准确。
DSST一定要33个尺度吗?
DSST标配33个尺度非常非常敏感,轻易降低尺度数量,即使你增加相应步长,尺度滤波器也会完全跟不上尺度变化。关于这一点可能解释是,训练尺度滤波器用的是一维样本,而且没有循环移位,这就意味着一次训练更新只有33个样本,如果降低样本数量,会造成训练不足,分类器判别力严重下降,不像平移滤波器有非常多的移位样本(个人看法欢迎交流)。总之,请不要轻易尝试大幅降低尺度数量,如果非要用尺度滤波器33和1.02就很好。
以上就是两种推荐的尺度检测方法,以后简称为类似DSST的多尺度和类似SAMF的多尺度。如果更看重速度,加速版的fDSST,和仅3个尺度的SAMF(如VOT2014中的KCF)就是比较好的选择;如果更看重精确,33个尺度的DSST,及7个尺度的SAMF就比较合适。
【作者:YaqiLYU 链接:https://www.zhihu.com/question/26493945/answer/156025576】
4. 参考资料
https://blog.csdn.net/roamer_nuptgczx/article/details/50134633
https://www.jianshu.com/p/c709aea5a56f