摘要
在本文中,我们研究了跟踪可能非常复杂背景的视频中运动物体轨迹的挑战性问题。与大多数仅在线学习跟踪对象外观的现有跟踪器相比,我们采用不同的方法,受深度学习架构的最新进展的启发,更加强调(无监督)特征学习问题。具体来说,通过使用辅助自然图像,我们离线训练堆叠去噪自动编码器,以学习对变化更加鲁棒的通用图像特征。然后是从离线培训到在线跟踪过程的知识转移。在线跟踪涉及分类神经网络,该分类神经网络由训练的自动编码器的编码器部分构成,作为特征提取器和附加分类层。可以进一步调整特征提取器和分类器以适应移动物体的外观变化。与一些具有挑战性的基准视频序列的最先进的跟踪器进行比较表明,当我们的跟踪器的MATLAB实现与适度的图形处理一起使用时,我们的深度学习跟踪器更准确,同时保持低计算成本和实时性能单位(GPU)。
1 引言
视觉跟踪,也称为对象跟踪,是指当对象在视频中移动时自动估计对象的轨迹。它在许多领域都有许多应用,包括安全视频监控,人机交互和体育视频分析。虽然某个应用程序可能需要跟踪多个移动对象,但典型的设置是分别处理每个对象。在第一视频帧中手动或自动识别要跟踪的对象之后,视觉跟踪的目标是在后续帧上自动跟踪对象的轨迹。虽然现有的计算机视觉技术可以在良好控制的环境下为这个问题提供令人满意的解决方案,但是由于诸如部分遮挡,杂乱的背景,快速和突然的运动,戏剧性的照明变化以及大的因素,在许多实际应用中该问题可能是非常具有挑战性的。观点和姿势的变化。
从学习的角度来看,视觉跟踪具有挑战性,因为它在第一个视频帧中只有一个被识别对象形式的标记实例。在随后的帧中,跟踪器必须仅用未标记的数据来学习被跟踪对象的变化。由于没有关于被跟踪对象的先验知识,跟踪器很容易偏离目标。为了解决这个问题,已经提出了一些采用半监督学习方法的跟踪器。另一种方法首先从辅助数据中学习图像特征的字典(例如SIFT局部描述符),然后将学到的知识传递给在线跟踪。
另一个问题是许多现有的跟踪器使用的图像表示可能不足以在复杂环境中进行稳健跟踪。对于有辨别力的跟踪器尤其如此,这些跟踪器通常更强调改进分类器而不是使用的图像特征。虽然许多跟踪器只是使用原始像素作为特征,但有些尝试使用了更多信息功能,例如Haar功能,直方图功能和本地二进制模式。但是,这些功能都是离线手工制作,但不是为跟踪对象量身定制的。最近,深度学习架构已经成功地用于为一些复杂的任务提供非常有希望的结果,包括图像分类和语音识别。成功的关键是利用深层架构通过多种非线性变换来学习更丰富的不变特征。我们认为,出于同样的原因,视觉跟踪也可以从深度学习中受益。
在本文中,我们提出了一种新的深度学习跟踪器( deep learning tracker DLT),用于强大的视觉跟踪。我们尝试通过开发一种强大的判别跟踪器来结合生成和判别跟踪器背后的哲学,该跟踪器使用自动学习的有效图像表示。 DLT与其他现有跟踪器有一些关键特征。首先,它使用堆叠去噪自动编码器(stacked denoising autoencoder SDAE)来学习大图像数据集中的通用图像特征作为辅助数据,然后将学到的特征传输到在线跟踪任务。其次,与先前也从辅助数据学习特征的方法不同,DLT中的学习特征可以进一步调整以适应在线跟踪过程中的特定对象。因为DLT利用多个非线性变换,所获得的图像表示比基于PCA的先前方法更具表现力。此外,由于表示跟踪对象不需要解决基于稀疏编码的先前跟踪器中的优化问题,因此DLT明显更有效,因此更适合于实时应用。
2 视觉跟踪的粒子滤波方法
粒子滤波方法通常用于视觉跟踪。从统计角度来看,它是一种顺序蒙特卡罗重要抽样方法,用于根据观测序列估计动态系统的潜状态变量。在时间t,Supppse st 和 yt 分别表示潜状态和观察变量。在数学上,对象跟踪对应于基于直到前一时间步骤的观察来找到每个时间步长t的最可能状态的问题:
s
t
=
a
r
g
m
a
x
(
p
(
s
t
∣
y
1
:
t
−
1
)
)
=
a
r
g
m
a
x
∫
p
(
s
t
∣
s
t
−
1
)
p
(
s
t
∣
y
1
:
t
−
1
)
d
s
t
−
1
(1)
s^t=argmax(p(s^t|y^{1:t-1}))=argmax \int p(s^t|s^{t-1})p(s^t|y^{1:t-1})ds^{t-1} \tag{1}
st=argmax(p(st∣y1:t−1))=argmax∫p(st∣st−1)p(st∣y1:t−1)dst−1(1)
当一个新的观察到达时,状态变量的后验分布根据贝叶斯规则更新:
p
(
s
t
∣
y
1
:
t
)
=
p
(
y
t
∣
s
t
)
p
(
s
t
∣
y
1
:
t
−
1
)
p
(
y
t
∣
y
1
:
t
−
1
)
(2)
p({s}^{t}|{y}^{1: t})=\frac{p({y}^{t}|{s}^{t}) p({s}^{t} | {y}^{1: t-1})}{p({y}^{t} | {y}^{1: t-1})} \tag{2}
p(st∣y1:t)=p(yt∣y1:t−1)p(yt∣st)p(st∣y1:t−1)(2)
粒子滤波器方法的具体内容是它通过一组 n 个样本(称为粒子)逼近真实的后验状态分布 p(st|y1:t),其中相应的重要性权重总和为1.粒子是从重要性分布 q(st|s1:t-1, y1:t),权重更新如下:
w
i
t
=
w
i
t
−
1
⋅
p
(
y
t
∣
s
i
t
)
p
(
s
i
t
∣
s
i
t
−
1
)
q
(
s
t
∣
s
1
:
t
−
1
,
y
1
:
t
)
(3)
w_{i}^{t}=w_{i}^{t-1} \cdot \frac{p({y}^{t} | {s}_{i}^{t}) p({s}_{i}^{t} | {s}_{i}^{t-1})}{q({s}^{t} | {s}^{1: t-1}, {y}^{1: t})}\tag{3}
wit=wit−1⋅q(st∣s1:t−1,y1:t)p(yt∣sit)p(sit∣sit−1)(3)
为了选择重要性分布 q(st|s1:t-1, y1:t),通常将其简化为一阶马尔可夫过程 q(s:t|s:t-1),其中状态转移独立于观察。因此,权重更新为。注意,在每个权重更新步骤之后,权重之和可能不再等于1。如果它小于阈值,则应用重新采样以从当前粒子集中按比例绘制n个粒子,然后将它们的权重重置为 1 / n。如果权重和高于阈值,则应用线性归一化以确保权重总和为1。
对于对象跟踪,状态变量si通常表示六个仿射变换参数,其对应于平移,比例,纵横比,旋转和偏斜。特别地,q(st|st-1) 的每个维度由正态分布独立建模。对于每个帧,跟踪结果只是具有最大权重的粒子。虽然许多跟踪器也采用相同的粒子滤波器方法,但主要区别在于观测模型 p(yt|sti) 的公式。显然,一个好的模型应该能够很好地区分跟踪对象和背景,同时仍然能够抵抗各种类型的对象变化。对于判别跟踪器,该公式通常用于设置与分类器输出的置信度呈指数相关的概率。
粒子滤波器框架是视觉跟踪的主要方法,原因有几个。首先,它超越了高斯分布,比卡尔曼滤波器方法更通用。此外,它通过一组粒子而不是仅仅一个点(例如模式)来近似后状态分布。对于视觉跟踪,此属性使跟踪器可以更轻松地从错误的跟踪结果中恢复。有关使用粒子滤波器进行视觉跟踪的教程可以在中找到。最近的一些工作,例如,进一步改进了用于视觉跟踪的粒子滤波器框架。
3 DLT(deep learning tracker)追踪器
我们现在介绍我们的DLT跟踪器。在离线训练阶段期间,通过训练具有辅助图像数据的SDAE来执行无监督特征学习以学习通用自然图像特征。首先应用逐层预训练,然后对整个SDAE进行微调。在在线跟踪过程期间,将额外的分类层添加到训练的SDAE的编码器部分以产生分类神经网络。本节其余部分提供了更多详细信息。
3.1 辅助数据的离线培训
3.1.1 数据集和预处理
我们使用Tiny Images数据集作为离线训练的辅助数据。通过向七个搜索引擎提供非抽象的英语名词,从网络上收集数据集,涵盖现实世界中发现的许多对象和场景。从每张尺寸为32×32的近8000万张微小图像中,我们随机抽样100万张图像进行离线训练。由于我们的经验比较中包含的大多数最先进的跟踪器仅使用灰度图像,因此我们将所有采样图像转换为灰度(但我们的方法也可以在必要时直接使用彩色图像)。因此,每个图像把3232的图像转为10241的向量,每维的特征值被归一化(每个维度的特征值线性缩放到范围[0,1]),但不应用进一步的预处理。
3.1.2 使用堆叠去噪自动编码器(SDAE)学习通用图像特征
SDAE的基本构建块是称为去噪自动编码器(DAE)的单层神经网络,它是传统自动编码器的最新变体。它学会从损坏的版本中恢复数据样本。这样做,学习了鲁棒特征,因为神经网络包含“瓶颈”,其是具有比输入单元更少单元的隐藏层。我们在图1(a)中展示了 DAE 的架构。
让共有k个训练样本。对于第i个样本,让xi表示原始数据样本,x~i是xi的损坏版本,其中损坏可能是屏蔽损坏,加性高斯噪声或椒盐噪声。对于网络权重,让W和 W0 分别表示编码器和解码器的权重,尽管没有必要,但它们可以绑定。类似地,b和b0指的是偏差项。 DAE 通过解决以下(正则化)优化问题来学习:
min
W
,
W
′
,
b
,
b
′
∑
i
=
1
k
∥
x
i
−
x
^
i
∥
2
2
+
λ
(
∥
W
∥
F
2
+
∥
W
′
∥
F
2
)
(4)
\min _{\mathbf{W}, \mathbf{W}^{\prime}, \mathbf{b}, \mathbf{b}^{\prime}} \sum_{i=1}^{k}\left\|\mathbf{x}_{i}-\hat{\mathbf{x}}_{i}\right\|_{2}^{2}+\lambda\left(\|\mathbf{W}\|_{F}^{2}+\left\|\mathbf{W}^{\prime}\right\|_{F}^{2}\right) \tag{4}
W,W′,b,b′mini=1∑k∥xi−x^i∥22+λ(∥W∥F2+∥W′∥F2)(4)
其中:
h
i
=
f
(
W
x
~
i
+
b
)
x
^
i
=
f
(
W
′
h
i
+
b
′
)
(5)
\begin{aligned} &\mathbf{h}_{i}=f\left(\mathbf{W} \tilde{\mathbf{x}}_{i}+\mathbf{b}\right) \\ &\hat{\mathbf{x}}_{i}=f\left(\mathbf{W}^{\prime} \mathbf{h}_{i}+\mathbf{b}^{\prime}\right) \end{aligned} \tag{5}
hi=f(Wx~i+b)x^i=f(W′hi+b′)(5)
这里λ是平衡重建损失和权重惩罚项的参数,k·kF表示 Frobenius 范数,而f(·)是非线性激活函数,其通常是逻辑S形函数或双曲正切函数。 通过从损坏版本重建输入,DAE 比传统自动编码器更有效地通过阻止自动编码器简单地学习身份映射来发现更强大的特征。
为了进一步增强学习有意义的特征,稀疏性约束被强加于隐藏单元的平均激活值。 如果使用逻辑sigmoid激活函数,则可以将每个单元的输出视为其活动的概率。 设ρj表示第j个单位的目标稀疏度,ρj表示其平均经验激活率。 然后可以引入ρ和ρ的交叉熵作为Eqn4的附加惩罚项:
H
(
ρ
∥
ρ
^
)
=
−
∑
j
=
1
m
[
ρ
j
log
(
ρ
^
j
)
+
(
1
−
ρ
j
)
log
(
1
−
ρ
^
j
)
]
ρ
^
=
1
k
∑
i
=
1
k
h
i
,
(6)
\begin{aligned} H(\boldsymbol{\rho} \| \hat{\boldsymbol{\rho}}) &=-\sum_{j=1}^{m}\left[\rho_{j} \log \left(\hat{\rho}_{j}\right)+\left(1-\rho_{j}\right) \log \left(1-\hat{\rho}_{j}\right)\right] \\ \hat{\boldsymbol{\rho}} &=\frac{1}{k} \sum_{i=1}^{k} \mathbf{h}_{i}, \end{aligned} \tag{6}
H(ρ∥ρ^)ρ^=−j=1∑m[ρjlog(ρ^j)+(1−ρj)log(1−ρ^j)]=k1i=1∑khi,(6)
其中m是隐藏单位的数量。在预训练阶段之后,可以展开SDAE以形成前馈神经网络。使用经典的反向传播算法对整个网络进行微调。为了提高收敛速度,可以应用简单动量法或更高级的优化技术,例如 L-BFGS 或共轭梯度法。
对于网络架构,我们在第一层使用过完备过滤器。这是一个深思熟虑的选择,因为已经发现过度完备的基础通常可以更好地捕获图像结构。这符合V1视皮层的神经生理机制。然后,每当添加新层时,单位数减少一半,直到只有256个隐藏单位,作为自动编码器的瓶颈。 SDAE的整个结构如图1(b)所示。为了进一步加快第一层预训练以学习局部特征,我们将每个32×32微小图像分成五个16×16补丁(左上,右上,左下,右下,中间),然后训练五个 DAE,每个 DAE 有512个隐藏单位。之后,我们用五个小 DAE 的权重初始化一个大 DAE,然后正常训练大 DAE。第一层中的一些随机选择的滤波器如图2所示。正如所料,大多数滤波器起到高度局部化的边缘检测器的作用。
3.2 在线跟踪流程
要跟踪的对象由其第一帧中的边界框的位置指定。在离物体很近的距离处从背景中收集一些负面的例子。然后将Sigmoid分类层添加到从离线训练获得的SDAE的编码器部分。整个网络架构如图1(c)所示。当新的视频帧到达时,我们首先根据粒子滤波器方法绘制粒子(一个粒子就是目标可能存在的一块图像,32*32)。然后通过简单的前向传播网络来确定每个粒子的置信度pi。该方法计算量小,精度高。
如果帧中所有粒子的最大置信度低于预定阈值τ,则它可以指示被跟踪对象的显着外观变化。要解决此问题,可以在发生这种情况时再次**调整(tune)**整个网络。我们注意到阈值 τ 应该通过维持权衡来设定。如果 τ 太小,则跟踪器无法很好地适应外观变化,如果τ太大,即使遮挡物体或背景也可能被错误地视为被跟踪物体,因此导致目标漂移。
4 实验
我们使用10个具有挑战性的基准视频序列,在本节中凭经验将 DLT 与一些最先进的跟踪器进行比较。这些跟踪器是:MTT,CT,VTD,MIL,L1T,TLD 和 IVT 的最新变体。我们使用其作者提供的这些跟踪器的原始实现。如果跟踪器只能处理灰度视频,MATLAB 图像处理工具箱提供的 rgb2gray 功能用于将彩色视频转换为灰度。为了加速计算,我们还利用 MATLAB Parallel Computing Toolbox提供的 GPU 计算进行离线培训和在线跟踪。代码和补充材料在项目页面上提供:http://winsty.net/dlt.html。
4.1 DLT实施细节
我们使用具有动量的梯度方法进行优化。 动量参数设置为0.9。 对于 SDAE 的离线训练,我们注入方差为0.0004的高斯噪声以生成损坏的输入。 我们将λ= 0.0001,ρi= 0.05,小批量大小设置为100.对于在线调整,我们使用较大的λ值0.002以避免过度拟合和较小的小批量大小10.阈值τ设置为0.9。 粒子滤波器使用1000个粒子。 对于其他参数,例如粒子滤波器中的仿射参数和其他方法中的搜索窗口大小,我们执行网格搜索以确定最佳值。 如果适用,相同的设置将应用于所有其他方法。
学习更多编程知识,请关注我的公众号: