目标跟踪入门
paper:
Deep visual tracking: Review and experimental comparison(Pattern Recognition, 2018)注意:该链接是论文的官网,下载需要收费
资源下载链接: https://download.csdn.net/download/u011609063/12006350
需要积分下载,这个好像是csdn强制性的,默认是5个积分,没有地方修改,我也是无语
1. 介绍
在目标跟踪中,存在许多挑战,例如
- Illumination Variation(光照变化)
- Scale Variation(尺度变化)
- Occlusion(遮挡)
- Deformation(形变)
- Motion Blur(运动模糊)
- Fast Motion(快速移动)
- In-Plane Rotation(平面内旋转)
- Out-of-Plane Rotation(平面外旋转)
- Out-of-View(出视野)
- Background Clutters(背景干扰)
- Low Resolution(低分辨率)
下面两幅图片可以更直观的反映问题
作者回顾了目前(2018年之前)基于深度学习的顶级跟踪算法,并且在数据集上对这些算法进行测试,企图解决以下问题:
- 在基于深度学习的跟踪算法中,它们有什么联系和区别
- 为什么深度学习适用于visual tracking
- 如何更好融合深度网络以及目标跟踪未来发展的方向
在OTB-100、TC-128和VOT2015数据集上测试了这些算法并且分析之后发现:
- 使用CNN能更好的从背景中找出跟踪目标,并且使用CNN模型进行模板匹配时速度更快
- 使用网络提取的深度特征的跟踪器比使用浅层手工标注的特征的跟踪器效果更好
- 对于CNN模型,使用多个卷积层的特征会比使用单个卷积层的特征性能更好
- 使用端到端网络的深度跟踪器会比仅使用特征提取网络的跟踪器更鲁棒
- 在网络训练时,对具有视频信息的网络进行预训练,并在线对其进行后续观测的微调
2. 背景和相关工作
2.1 目标跟踪的基本概念
目标跟踪是从真实场景中跟踪任何目标。目标跟踪由运动模型和观测模型组成,根据观测模型可以将跟踪算法分为生成式方法和判断式方法。结构如下
运动模型: 基于对当前当前帧的估计,该模型会产生一些在当前帧可能包含的目标候选区或者anchor boxes
观测模型: 对候选区域的的特征进行分析,来确定该区域是否为目标区域
生成式方法: 搜索和跟踪目标最相似的区域作为跟踪结果,包括模板匹配法、子空间法、稀疏表示法等
判别式方法: 训练一个分类器去区分目标与背景,选择置信度最高的候选样本作为跟踪结果,包括boosting、SVM、朴素贝叶斯法、随机森林法、多示例学习法、度量学习法、结构化学习法、潜在变量学习法、相关滤波法等
2.2 基于深度学习的算法
越来越多的研究人员开始研究深度学习,并且在大部分计算机视觉领域取得了巨大成功,例如图片分类、目标检测、预测分割、边缘检测、目标跟踪。
具体的基于深度学习的算法请自行阅读论文。
3. 基于深度学习的目标跟踪
现有的跟踪算法可以按照以下方式分类。
说明:
- FEN表示feature extration network
- EEN表示end-to-end network
- online表示在线学习,每学习一个样本就更新参数,可以理解为batch_size为1
- not online表示脱机学习,每学习一批样本才更新参数,可以理解为batch_size大于1
算法详情请看原论文
4. 实验和分析
4.1 评价标准
本论文中使用的评价标准
-
precision plots of OPE
作用: 一个序列中所有帧的平均中心位置误差被用于慨括跟踪算法对该序列的总体性能。精确度图能够显示出评估的位置在给定的准确值的阈值距离之内的帧数占总帧数的百分比。该评价标准针对一个序列
计算:-
计算pixel error
d i s = ( x 2 − x 1 ) 2 + ( y 2 − y 1 ) 2 dis=\sqrt {(x_2-x_1)^2+(y_2-y_1)^2} dis=(x2−x1)2+(y2−y1)2dis表示误差
(x_1, y_1)表示anchor box的中心坐标
(x_2, y_2)表示ground truth的中心坐标 -
判断某帧是否被正确预测
r i g h t = { 1 d i s ≤ θ 0 d i s > θ right = \begin{cases} 1 & dis \leq \theta \\ 0 & dis > \theta \end{cases} right={10dis≤θdis>θ1表示正确预测,0表示错误预测
dis表示第1步计算的结果,即pixel error
θ \theta θ表示阈值,一般为20 -
统计该序列中正确预测的帧数n
n = ∑ 1 T r i g h t n = \sum^T_1 right n=1∑TrightT表示该序列的总帧数
right表示该帧是否被正确预测,即第二步中的结果 -
计算该阈值下的precision
p = n T p = \frac{n} {T} p=Tnn表示正确预测的总帧数
T表示该序列中总的帧数 -
绘制Precision plots of OPE
设置不同的阈值 θ \theta θ,重复第2-4步计算对应的precision,将它们以坐标点 ( θ i , p i ) (\theta_i,p_i) (θi,pi)形式存储下来,然后绘图。下图是一个样例
-
-
average precision scores
阈值为20时对应的precision -
success plots of OPE
作用: 反映算法在一系列帧中的跟踪性能,也叫AUC图
计算:- 计算单帧IOU,也叫单帧accuracy
I O U = ∣ G ∩ A ∣ ∣ G ∪ A ∣ IOU = \frac{|G \cap A|}{|G \cup A|} IOU=∣G∪A∣∣G∩A∣
G表示ground truth
A表示anchor box
|·|表示该区域内像素点的个数
也可以理解为G和A相交的面积除以G和A相并的面积 - 判断该帧是否正确预测
r i g h t = { 1 I O U ≤ θ 0 I O U > θ right = \begin{cases} 1 & IOU \leq \theta \\ 0 & IOU > \theta \end{cases} right={10IOU≤θIOU>θ - 统计所有序列的总帧数T和正确预测的帧数n
T = ∑ 1 m s e q u e n c e _ f r a m e s n = ∑ 1 T r i g h t T = \sum^m_1 sequence\_frames \\ n = \sum^T_1 right T=1∑msequence_framesn=1∑Tright
sequence_frames表示该序列的总帧数
m表示待测序列的总数
right是通过第2步计算出来的结果 - 计算该阈值下的success rate
s r = n T sr=\frac{n}{T} sr=Tn
n表示正确预测的总帧数
T表示待测序列的总帧数 - 绘制Success plots of OPE
设置不同的阈值 θ \theta θ,重复第2-4步计算对应的success rate,将它们以坐标点 ( θ i , s r i ) (\theta_i,sr_i) (θi,sri)形式存储下来,然后绘图。下图是一个样例
- 计算单帧IOU,也叫单帧accuracy
-
average success rate scores
阈值为0.5时对应的success rate -
AR
-
EAO
- 将所有序列按照长度分类
- 令待测tracker在长度为Ns的序列上测试,得到每一帧的accuracy Φ ( t ) \Phi(t) Φ(t)
- 对该序列所有帧的accuracy进行平均,得到该序列上的accuracy,即
Φ N s = 1 N s ∑ i = 1 N s Φ ( t ) \Phi_{N_s} = \frac{1}{N_s} \sum^{N_s}_{i=1}{\Phi(t)} ΦNs=Ns1i=1∑NsΦ(t) - 使用该tracker对所有长度为Ns的序列都跑一遍,在求平均。即
Φ ‾ N s = 1 m ∑ i = 1 m Φ N s \overline{\Phi}_{N_s} = \frac{1}{m} \sum^{m}_{i=1} {\Phi_{N_s}} ΦNs=m1i=1∑mΦNs - Φ ‾ N s \overline{\Phi}_{N_s} ΦNs即该tracker在长度为Ns序列上的EAO值
-
EFO
- 测试该机器在600 * 600图像上对每个像素进行30 * 30滤波的时间
- 跟踪算法耗时除以第一步的时间即EFO值
4.2 分析
请看原论文
5. 未来发展方向
5.1 深度学习算法存在的缺点
- 有很多多余的深度特征,限制了速度和准确率
- 大多数网络使用VGG提取特征
- 缺失训练样本
- 模型的迁移能力(transfer ability of model)
5.2 深度学习算法发展方向
- 减少冗余特征
- 提出更多网络结构
- 训练样本缺失可以花更多精力集中在无监督或弱监督学习
- 利用强化学习或生成对抗网络生成更多样例可以提高性能
- 在跟踪中使用单样本学习(one-shot learning)