前言: 目标跟踪是计算机视觉领域研究的一个热点问题,其利用视频或图像序列的上下文信息,对目标的外观和运动信息进行建模,从而对目标运动状态进行预测并标定目标的位置。目标跟踪算法从构建模型的角度可以分为生成式(generative)模型和判别式(discrimination)模型两类;从跟踪目标数量可分为单目标跟踪和多目标跟踪。目标跟踪融合了图像处理、机器学习、最优化等多个领域的理论和算法,是完成更高层级的图像理解( 如目标行为识别) 任务的前提和基础。
目标跟踪的基本任务是在一段视频序列中给定目标的初始位置,在后续每一帧中对目标进行持续的跟踪定位,在此过程中不会提供关于目标的颜色、形状、大小等先验条件,即跟踪算法只有通过在第一帧中对目标进行学习才能进行跟踪。一般来说,跟踪过程中的技术难点主要包括以下几个方面:
① 遮挡与消失
② 形态变化
③ 运动模糊
④ 复杂背景
⑤ 准确性与实时性
**1 **传统的目标跟踪方法
传统的目标跟踪算法是目标跟踪领域出现最早的算法,虽然在如今看来,这些算法存在一定局限性,但我们不能忽视它们为目标跟踪领域蓬勃发展奠定的基础。其中的经典算法包括光流法、卡尔曼滤波、粒子滤波、均值漂移等。
**1.1 **光流法:
光流(optical flow)的概念于1950 年由 Gibson 首先提出,是目标、场景或摄像机在连续两帧图像间运动时造成的目标的运动。是空间运动物体在观察成像平面上的像素运动的瞬时速度,利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。其计算方法可以分为三类:
(1)基于区域或者基于特征的匹配方法;
(2)基于频域的方法;
(3)基于梯度的方法;
简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。
注:运动场,其实就是物体在三维真实世界中的运动;光流场,是运动场在二维图像平面上的投影。
光流法的前提假设:
(1)相邻帧之间的亮度恒定;
(2)相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;
(3)保持空间一致性;即,同一子图像的像素点具有相同的运动
光流法用于目标检测的原理:给图像中的每个像素点赋予一个速度矢量,这样就形成了一个运动矢量场。在某一特定时刻,图像上的点与三维物体上的点一一对应,这种对应关系可以通过投影来计算得到。根据各个像素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动目标,则光流矢量在整个图像区域是连续变化的。当图像中有运动物体时,目标和背景存在着相对运动。运动物体所形成的速度矢量必然和背景的速度矢量有所不同,如此便可以计算出运动物体的位置。需要提醒的是,利用光流法进行运动物体检测时,计算量较大,无法保证实时性和实用性。
光流法用于目标跟踪的原理:
(1)对一个连续的视频帧序列进行处理;
(2)针对每一个视频序列,利用一定的目标检测方法,检测可能出现的前景目标;
(3)如果某一帧出现了前景目标,找到其具有代表性的关键特征点(可以随机产生,也可以利用角点来做特征点);
(4)对之后的任意两个相邻视频帧而言,寻找上一帧中出现的关键特征点在当前帧中的最佳位置,从而得到前景目标在当前帧中的位置坐标;
(5)如此迭代进行,便可实现目标的跟踪;
**1.2 **卡尔曼滤波
卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,卡尔曼滤波器到底是干嘛的?我们来看下wiki上的解释:卡尔曼滤波的一个典型实例是从一组有限的,包含噪声的,对物体位置的观察序列(可能有偏差)预测出物体的位置的坐标及速度。例如,对于雷达来说,人们感兴趣的是其能够跟踪目标。但目标的位置、速度、加速度的测量值往往在任何时候都有噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑)。
** 什么是卡尔曼滤波?**
** ① **你可以在任何含有不确定信息的动态系统中使用卡尔曼滤波,对系统下一步的走向做出有根据的预测,即使伴随着各种干扰,卡尔曼滤波总是能指出真实发生的情况。 在连续变化的系统中使用卡尔曼滤波是非常理想的,它具有占用内存小的优点(除了前一个状态量外,不需要保留其它历史数据),并且速度很快,很适合应用于实时问题和嵌入式系统。
** ② **卡尔曼滤波器是一种高效的递归滤波器,它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。
** ③ **对于一个线性系统,卡尔曼滤波器能够从不精确的预测状态和观测状态中,估算出高精度的系统状态,并且估计过程只需要保留最近一次的估算结果,具有速度快、资源需求低的特点。
** ④** 其滤波过程为:根据当前状态和系统方程估算下一状态 **→ **获取下一状态的观测结果 **→ **使用当前卡尔曼增益加权平均更新估计值 **→ **更新卡尔曼增益。整个过程迭代执行。
** ⑤ **更新估计值时预测值和观测值所占权重由其不确定性决定,基本卡尔曼滤波器擅长处理正态分布的误差。
1.3 粒子滤波
** 为什么要使用粒子滤波呀?首先。卡尔曼滤波有一个很大的前提,那就是: a:系统噪声必须是符合高斯分布(也就是正态分布)。b:**必须是线性系统。
粒子滤波(PF:Particle Filter)是以贝叶斯推理和重要性采样为基本框架。
贝叶斯推理就是类似于卡尔曼滤波的过程。而卡尔曼滤波是线性高斯模型,对于非线性非高斯模型,就采用蒙特卡洛方法(Monte Carlo method,即以某时间出现的频率来指代该事件的概率)。(粒子滤波从一定程度上,属于卡尔曼滤波的拓展)
重要性采样就是根据对粒子的信任程度添加不同的权重,对于信任度高的粒子,添加大一点的权重,否则就添加小一点的权重,根据权重的分布形式,可以得到与目标的相似程度。
粒子滤波的思想基于蒙特卡洛思想,利用粒子集来表示概率,可以用在任何形式的状态空间模型上 。1998年,Andrew 和 Michael 成功将粒子滤波应用在目标跟踪领域。在初始化阶段提取目标特征,在搜索阶段按均匀分布或高斯分布的方式在整个图像搜索区域内进行粒子采样,然后分别计算采样粒子与目标的相似度,相似度最高的位置即为预测的目标位置。后续帧的搜索会依据前一帧中预测的目标位置做重要性重采样。传统的粒子滤波跟踪算法仅采用图像的颜色直方图对图像建模,计算量会随着粒子数量的增加而增加,并且当目标颜色与背景相似时,往往会跟踪失败。
** 具体过程:**
粒子滤波的核心思想就是基于奖励惩罚机制(强化学习)的优化****。首先,根据状态转移方程,对于每个粒子的位置进行更新。但这个更新只是基于航迹推算(dead reckon)得到的,我们要融合绝对定位与相对定位,绝对定位的信息并没有融合进去。根据状态转移方程得到的新状态到底行不行?能有多大的概率?这还取决于绝对定位的结果也就是输出方程。
把状态转移方程得到的结果代入输出方程,得到一个输出,这个输出是估计值,而根据绝对定位的观测,这个值对应的观测值也是可以测量得到的,现在这两个值之间有个差额,很明显,这个差额越小,刚才的到的状态越可信,这个差额越大,状态越不可信。
把这个差额指标作为评估函数(像GA,pso等优化算法里的evaluation function),来修正各个状态的估计概率。简单地说就是,一开始在整个地图上均匀分配一大波粒子(当然有改进的预处理算法,可以事先往正确点靠,减少计算量),每个粒子都可以算出一个估计值,然后再得到一个实际的观测值,将与观测值相差较小的粒子留下来。(具体留多少个粒子需要根据你系统模型,现在也有自适应的算法,可以自己改变留下来的粒子数目),这样每个粒子都有一个和观测值的差值,然后再进行下一次同样方法的更新(这个过程叫做重采样),最后我们就会留下可信度非常高的粒子。这一般就是最后的正确值。
** 粒子滤波的应用**:
粒子滤波技术在非线性、非高斯系统表现出来的优越性,决定了它的应用范围非常广泛。另外,粒子滤波器的多模态处理能力,也是它应用广泛的原因之一。国际上,粒子滤波已被应用于各个领域。在经济学领域,它被应用在经济数据预测;在军事领域已经被应用于雷达跟踪空中飞行物,空对空、空对地的被动式跟踪;在交通管制领域它被应用在对车或人视频监控;它还用于机器人的全局定位。
**** 粒子滤波的缺点****:
虽然粒子滤波算法可以作为解决SLAM问题的有效手段,但是该算法仍然存在着一些问题。其中最主要的问题是需要用大量的样本数量才能很好地近似系统的后验概率密度。机器人面临的环境越复杂,描述后验概率分布所需要的样本数量就越多,算法的复杂度就越高。因此,能够有效地减少样本数量的自适应采样策略是该算法的重点。另外,重采样阶段会造成样本有效性和多样性的损失,导致样本贫化现象。如何保持粒子的有效性和多样性,克服样本贫化,也是该算法研究重点。
1.4均值漂移(mean-shift)
Mean shift算法是Fukunaga于1975年提出的,其基本思想是利用概率密度的梯度爬升来寻找局部最优。到1995年,YizongCheng针对离x越近的采样点对x周围的统计特性越有效,定义了一族核函数,并根据所有样本点的重要性不同,设定了一个权重系数,扩大了Mean Shift的使用范围。
meanshift算法的原理很简单。假设你有一堆点集,还有一个小的窗口,这个窗口可能是圆形的,现在你可能要移动这个窗口到点集密度最大的区域当中。如下图:
最开始的窗口是蓝色圆环的区域,命名为C1。蓝色圆环的圆心用一个蓝色的矩形标注,命名为C1_o。而窗口中所有点的点集构成的质心在蓝色圆形点C1_r处,显然圆环的形心和质心并不重合。所以,移动蓝色的窗口,使得形心与之前得到的质心重合。在新移动后的圆环的区域当中再次寻找圆环当中所包围点集的质心,然后再次移动,通常情况下,形心和质心是不重合的。不断执行上面的移动过程,直到形心和质心大致重合结束。 这样,最后圆形的窗口会落到像素分布最大的地方,也就是图中的绿色圈,命名为C2。
meanshift算法除了应用在视频追踪当中,在聚类,平滑等等各种涉及到数据以及非监督学习的场合当中均有重要应用,是一个应用广泛的算法。图像是一个矩阵信息,如何在一个视频当中使用meanshift算法来追踪一个运动的物体呢? 大致流程如下:
1.首先在图像上选定一个目标区域
2.计算选定区域的直方图分布,一般是HSV色彩空间的直方图。
3.对下一帧图像b同样计算直方图分布。
4.计算图像b当中与选定区域直方图分布最为相似的区域,使用meanshift算法将选定区域沿着最为相似的部分进行移动,直到找到最相似的区域,便完成了在图像b中的目标追踪。
5.重复3到4的过程,就完成整个视频目标追踪。
通常情况下我们使用直方图反向投影得到的图像和第一帧目标对象的起始位置,当目标对象的移动会反映到直方图反向投影图中,meanshift 算法就把我们的窗口移动到反向投影图像中灰度密度最大的区域了。
** 直方图反向投影的流程是:**
假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的:
1.从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像;
2.生成临时图像的直方图;
3.用临时图像的直方图和模板图像的直方图对比,对比结果记为c;
4.直方图对比结果c,就是结果图像(0,0)处的像素值;
5.切割输入图像从(0,1)至(10,11)的临时图像,对比直方图,并记录到结果图像;
6.重复1~5步直到输入图像的右下角,就形成了直方图的反向投影。
Mean shift视频追踪实现
在OpenCV中实现Mean shift的API是:
**cv.meanShift(probImage, window, criteria)**
参数:probImage: ROI区域,即目标的直方图的反向投影
window: 初始搜索窗口,就是定义ROI的rect
criteria: 确定窗口搜索停止的准则,主要有迭代次数达到设置的最大值,窗口中心的漂移值大于某个设定的限值等。
** 实现Mean shift**的主要流程是:
1.读取视频文件:cv.videoCapture()
2.感兴趣区域设置:获取第一帧图像,并设置目标区域,即感兴趣区域
3.计算直方图:计算感兴趣区域的HSV直方图,并进行归一化
4.目标追踪:设置窗口搜索停止条件,直方图反向投影,进行目标追踪,并在目标位置绘制矩形框。
由于均值漂移计算速度快,且对目标形变和遮挡有一定鲁棒性,均值漂移算法受到广泛重视。但提取的颜色直方图特征对目标的描述能力有限,缺乏空间信息,故均值漂移算法仅能在目标与背景能够在颜色上区分开时使用,有较大局限性。
*1.5稀疏编码*
稀疏表示是智能信息处理的重要工具,目前在图像分类、人脸识别、图像的超分辨重建等方面得到广泛的应用。由于基于稀疏表示的目标观测模型对环境的变化具有一定的鲁棒性,因此,通常用稀疏表示解决复杂场景下的目标跟踪问题。稀疏表示应用于目标跟踪时,将跟踪问题的求解转化为在模板空间中寻求一个稀疏近似解。
稀疏表示是获取、表示和压缩高维信号的重要工具, 其基本思想是:给定一个足够大的基集(也称作超完备字典),对于一个待编码信号,从基集中尽可能少地选择基向量线性重建待编码信号,同时使重构误差尽可能 小。在跟踪问题中,可以利用稀疏表示对干扰的不敏感特性建立目标观测模型。
**1.6 **字典学习
字典学习包括稀疏编码和字典更新两个阶段,先更新迭代稀疏系数矩阵,然后在迭代字典矩阵和 稀疏系数矩阵时更新字典,以得到符合优化目的的字典,对数量巨大的数据集进行降维,从中得到最能表现样本的特征,达到运算量最小的目的.目前较成熟的字典学习算法有正交匹配追踪(orthogonal matching pursuit, OMP)算法、最优方向法(method of directions, MOD)算法等.利用构建图像特征集合字典对目标特征信息进行分析对比,可解决目标长期静止时的跟踪问题,并利用实时更新目标模板,最大限度保证模板实时表征目标的各种特性。
**2 **基于相关滤波的目标跟踪方法
基于相关滤波(Correlation Filter )的目标跟踪算法是目标跟踪领域的一大研究热点,为目标跟踪领域带来重大变革。相关滤波源于信号处理领域,相关表示两信号相似性的高低,两信号越接近,相关响应越高。相关滤波跟踪算法就是通过建立一个相关滤波器,来寻找响应值最高的目标位置。2010 年, Bolme等人率先将相关滤波与目标跟踪相结合,提出了 MOSSE 跟踪算法,以其高速的跟踪速度和良好的跟踪性能,极大的促进了目标跟踪领域的发展,下面简要介绍目标跟踪领域发展过程中具有代表性的几种跟踪算法。
**2.1 **误差最小平方和滤波器
将信号处理领域的相关操作引入到目标跟踪领域,即可将跟踪问题描述为寻找视频序列中与初始目标最相似的区域,即计算滤波器 h 与输入图像 f 的相关性,得到响应图 g。计算过程如下图所示。
为了减少计算量,加快运算速度,引入傅里叶变换,在一张图像上训练得到的滤波器可以精准拟合该图像,但在跟踪时,目标外观会由于快速运动、尺度变化、遮挡等因素发生改变,之前训练得到的滤波器应用于新图像时,往往不能适应目标的变化,导致跟踪失败。因此,滤波器需要能够随着视频序列的进行而自适应的更新。
**2.2 **核相关滤波跟踪算法
2014 年,Henriques 等人提出核相关滤波跟踪算法(Kernelized CorrelationFilters,KCF),对基于灰度特征的 CSK 算法做出改进,引入核函数、循环矩阵、HOG 特征,进一步提高了算法的跟踪性能。下面将对 KCF 跟踪算法的重要环节加以介绍。
(1)构建训练样本集
跟踪算法的一大难点在于样本数量过少,传统跟踪算法通常在目标位置周围随机采样获得样本,或者通过对目标做旋转、缩放获得样本。然而这两种方式获得的样本数量十分有限并且冗余度高,无法充分学习到目标信息,会导致跟踪器在后续跟踪时出现较大偏差,影响跟踪性能。
KCF 跟踪算法创造性的引入循环矩阵,一方面通过目标样本的循环移位操作获得大量训练样本,另一方面,将目标特征的频域空间与岭回归相结合,实现目标特征的快速学习与检测。
(2)训练分类器
KCF 框架中训练目标分类器实际上是一个岭回归问题 ,也叫正则化最小二乘问题。目标是通过训练样本集找到最优分类函数,使得样本的预测值与样本真实值之间的平方误差最小,得到的损失目标函数,通过最小二乘法可以获得使上式损失函数最小的最优解。
对于线性回归问题,可以通过上述步骤计算得到,大大提高计算速度。但在大多数情况下,需要解决的是非线性问题,由此 KCF 算法引入核函数的思想,将训练样本映射到高维空间,使其转化为线性可分问题,那么在高维空间内可以使用岭回归来寻找一个分类器。
(3)目标快速检测
在检测阶段,通常会逐个计算候选区域的响应值,选择其中响应值最高的样本作为目标。在 KCF 框架中,预测区域及其循环移位构成了候选样本集,由此可以得到候选样本集的响应值。
响应值最大说明当前候选样本最接近训练样本,其对应位置即预测的目标位置。此外可以通过离散傅里叶变换对角化,提高计算效率。
(4)模型更新
为了使分类器对目标保持较高的辨别力,以应对跟踪过程中出现的各种干扰情况,需要及时更新算法模型,KCF 框架沿用了 MOSSE 的更新策略,在每一帧中更新外观模型与分类器参数,以提高算法的鲁棒性。
**3 **基于深度学习的目标跟踪方法
深度学习作为近年来的热门技术手段,在众多领域都能看到它的身影。深度学习凭借优异的特征建模能力在目标跟踪领域也取得了广泛应用。基于深度学习的目标跟踪大致可分为两类,一类是采用卷积神经网络提取目标特征,然后与其他跟踪方式进行融合来实现目标跟踪。另一类是训练出端到端的神经网络模型,目标跟踪的所有步骤均由神经网络来实现。下面将简要介绍神经网络的基本结构,典型的卷积神经网络模型,孪生神经网络工作原理,以及几种代表性的深度学习跟踪算法。
**3.1 **神经网络
神经网络是受生物神经系统启发而产生的一种数学模型,作为人工智能的底层模型,,神经网络有着许多复杂应用。一个基础的神经网络如下图所示:
神经网络由输入层、隐藏层、输出层三部分组成,相邻层之间相互连接。其中,输入层负责数据输入,输出层负责数据输出,隐藏层负责一系列的数学运算,目的是为了更好地线性划分不同类型的数据,隐藏层的层数决定了神经网络的深度。
神经网络中一个非常重要的概念是激活函数,它决定了某个神经元是否被激活,这个神经元接受到的信息是否有用。没有激活函数的神经网络就是一个线性回归模型,无论网络包含多少层,它的输出都是输入的线性组合。而激活函数引入了非线性变换,使得神经网络可以应用到非线性模型中,能够处理更复杂的任务。常用的激活函数有 sigmoid 函数、tanh 函数、ReLU 函数。
**3.2 **卷积神经网络
卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,最早由 LeCun 提出并应用于手写字体识别上。由于 CNN 不需要预先处理图像,可以直接将原始图像输入到网络中,操作更简洁,因而得到广泛应用,经典的网络结构层出不穷。卷积神经网络包含卷积层、池化层、全连接层以及输出层。一个典型的卷积神经网络结构如下图所示。
其中,卷积层是 CNN 中最核心的部分,主要功能是特征提取,底层网络能够提取如边缘、轮廓等低级特征,深层网络能够从低级特征中提取更复杂的特征。对二维图像做卷积操作,类似于滑动窗口对图像滤波,因此也把卷积核称为滤波器(filter)。卷积核的选择决定了特征图的质量,图像经由不同的卷积核处理能够得到不同的特征图。卷积核的数量越多,提取到的特征图也越多,但相应的计算复杂度增加,若卷积核的数量太少,则无法提取出输入图像的有效特征。使用卷积核提取图像特征的过程如下图所示。
池化层,也称降采样层,由卷积层得到的特征图通常维度过高,因此在卷积层后连接一个池化层,用于降低特征维度。池化层的操作方式与卷积层基本相同,常用的池化方式有最大池化和平均池化,如下图所示。最大池化即取滑动窗口所对应区域的最大值作为池化输出,平均池化即取滑动窗口所对应区域的平均值作为池化输出。池化操作不仅可以降低特征维度,减少计算量,而且具备特征不变性,能够保留原始图像中最重要的特征。
全连接层通常位于卷积神经网络的尾部,与传统的神经网络连接方式一致,主要负责将所有局部特征连接成全局特征,并将输出值传送给分类器。全连接层连接所有特征的方式是将卷积输出的二维特征图转化成一维向量,然后再乘一个权重,权重矩阵是固定的,且应与由特征图生成的一维向量大小一致,这就要求网络输入层图像必须固定尺寸,才能保证传送到全连接层的特征图的大小与全连接层的权重矩阵相匹配。最后将得到的图像特征通过 sigmoid 函数或其他类型的函数映射到输出层,完成分类任务。
**3.3 **孪生神经网络
孪生神经网络是一种包含两个或多个相同子结构的神经网络架构,各子网络共享权重。孪生神经网络的目标是通过多层卷积获取特征图后,比较两个对象的相似程度,在人脸认证、手写字体识别等任务中常被使用。其网络结构如下图所示,两个输入分别进入两个神经网络,将输入映射到新的空间,形成输入在新空间中的表示,通过损失的计算,评价两个输入的相似度。
此外,该网络的特点是可以充分利用有限的数据进行训练,这一点对目标跟踪来说至关重要,因为在跟踪时能够提供的训练数据与目标检测相比较少。
若子网络之间不共享权重,则称为伪孪生神经网络。对于伪孪生神经网络,其子网络的结构可以相同,也可不同。与孪生神经网络不同,伪孪生神经网络适用于处理两个输入有一定差别的情况,如验证标题与正文内容是否一致、文字描述与图片内容是否相符等。要根据具体应用进行网络结构的选择。
3.4 典型的深度学习跟踪算法
目前,完全基于卷积神经网络的目标跟踪主要有两种方式,一种是采用“离线训练+在线微调”的模式;另一种方式是不采用离线训练,而是通过构建更简洁的卷积神经网络达到在线跟踪的要求。以下选择代表性算法做简要介绍。
(1)MDNet
要提升 CNN 在目标跟踪中的表现能力,需要大量训练数据,大多跟踪算法解决训练数据不足的策略是使用辅助的非跟踪数据进行预训练,以获取对目标特征的通用表示,但这一策略与跟踪任务本身存在一定偏离。MDNet 创造性地提出多域网络(Multi-Domain Network),利用跟踪序列进行预训练,在线跟踪时将网络结构微调,MDNet 结构如下图所示。
MDNet 网络为多域结构,采用来自 VGG-M 的卷积层提取特征,采用全连接层进行分类,这里的分类为二分类,即只区分前景与背景。采用多域结构是为了适应不同的跟踪序列,每个序列都对应一个单独的域,每个域内都有一个针对它的二分类层(fc6)进行分类,该层也称为特定域层。在 fc6 之前的所有层为共享层,会将序列进行共享。这样就实现了通过共享层学习目标的通用特征表达,通过特定域层解决不同序列分类目标不一致的问题。
MDNet 通过离线训练得到卷积层参数,在线跟踪时,卷积层参数不变,根据第一帧样本新建一个 fc6 层,在跟踪过程中在线微调 fc4-fc6 的参数,以适应目标变化。同时通过难例挖掘重点关注背景中难以划分的样本,减轻跟踪漂移问题,增强网络判别能力。
MDNet 获得了 VOT2015 竞赛的冠军,但由于跟踪过程中计算量较大,且在线更新全连接层参数耗时,使得 MDNet 即使在 GPU 上也只能达到 1fps,仍有进一步提升的空间。
(2)FCNT
大多数基于深度学习的跟踪算法都是先在海量数据上预训练,再传递到跟踪问题上,这些方法在评价基准上能达到 90%以上的精度,但这纯粹是利用了CNN 强大的特征表示能力。Wang 等人提出了基于全卷积网络的目标跟踪算法FCNT,通过分析各个层特征对跟踪的影响,更加合理的选择特征以减少计算量,提升跟踪性能,其跟踪框架如下图所示。
FCNT 基于 VGG-Net 网络结构,做出了如下贡献:第一,分析了不同层次特征的特点,发现底层特征提供更多的细节信息,可以更好地区分外观相似的目标,而高层特征包含更多语义信息,对区分不同类别鲁棒性更强;第二,发现对目标来说,并非所有特征都对跟踪有用,可能会存在噪声特征,因此提出一种特征选择机制,去除噪声特征,使跟踪更精确。
在跟踪过程中,对于输入的视频帧,首先利用 VGG-Net 提取 Conv4-3 及Conv5-3 的特征,然后将筛选出的特征分别传送给区分目标与相似背景的 SNet以及捕捉目标类别信息的 GNet。SNet 及 GNet 分别生成两个响应图独立执行目标定位,最终目标位置由检测器进行判定。FCNT 的跟踪精度达到了 85.6%,但跟踪速度仍然达不到实时性要求,仅有 3fps。
** 另:一般来说,相比于光流法、Kalman、Mean shift**等传统算法,相关滤波类算法跟踪速度更快,深度学习类方法精度高;具有多特征融合以及深度特征的追踪器在跟踪精度方面的效果更好;使用强大的分类器是实现良好跟踪的基础;尺度的自适应以及模型的更新机制也影响着跟踪的精度。
附: ① 生成式模型方法
生成式模型方法,通过对目标模板进行建模,在当前帧寻找与模型最相似的区域作为目标预测位置。生成模型方法包括卡尔曼滤波 、粒子滤波、mean-shift 、PCA、稀疏编码 、字典学习等。基于生成式模型方法的目标跟踪算法着眼于对目标本身的刻画,忽略背景信息,在目标自身变化剧烈或者被遮挡时易产生漂移。
** ②判别式模型方法**
判别式模型方法,是以当前帧的目标区域为正样本,背景区域为负样本,通过正负样本训练分类器,把训练好的分类器用在下一帧中寻找最优区域,最优区域就是预测区域。与生成模型方法相比,判别模型方法利用背景信息训练分类器,使得分类器具有更强的辨别能力,能够更好区分前景和后景,所以判别模型方法普遍要比生成模型方法好 ,跟踪表现鲁棒性更强,逐渐在目标跟踪领域占主流地位,大部分基于深度学习的目标跟踪算法也归属于判别式模型。其中经典的判别模型方法有TLD(Tracking-learning-detection)和 Struck。
版权归原作者 kunawr 所有, 如有侵权,请联系我们删除。