Abstract
视觉跟踪技术是计算机视觉领域(人工智能分支)的一个重要课题,有着重要的研究意义。在军事制导、视频监控、机器人视觉导航、人机交互、以及医疗诊断等许多方面有着广泛的应用前景。随着研究人员不断地深入研究,视觉目标跟踪在近十几年里有了突破性的进展,使得视觉跟踪算法不仅仅局限于传统的机器学习方法,更是结合了近些年人工智能热潮—深度学习(神经网络)和相关滤波器等方法。本文主要介绍以下几点:什么是视觉目标跟踪(单目标跟踪)、单目标跟踪的基本结构(框架),目标跟踪存在的挑战,目标跟踪经典相关方法及研究趋势等。
01 单目标跟踪任务简介
目标跟踪是计算机视觉领域的一个重要问题,目前广泛应用在体育赛事转播、安防监控和无人机、无人车、机器人等领域。下面是一些应用的例子。
车辆跟踪
足球比赛
田径比赛
视觉目标(单目标)跟踪是指对图像序列中的运动目标进行检测、提取、识别和跟踪,获得运动目标的运动参数,如位置、速度、加速度和运动轨迹等,从而进行下一步的处理与分析,实现对运动目标的行为理解,以完成更高一级的检测任务。
其具体任务即根据所跟踪的视频序列给定初始帧(第一帧)的目标状态(位置、尺度),预测后续帧中该目标状态。基本结构(框架)如下:
基本流程:输入初始帧并指定期望跟踪的目标,通常用矩形框标定(Input Frame),在下一帧中产生众多候选框(Motion Model)并提取这些候选框的特征(Feature Extractor),观测模型(Observation Model)对这些候选框评分。最后在这些评分中找一个得分最高的候选框作为预测的目标(Prediction A),或者对多个预测值进行融合(Ensemble)得到更优的预测目标。至此算法完成了根据第一帧的信息对第二帧的预测,后续帧以此类推,同时根据指定规则更新模型(Model Updater)。
根据如上的框架,将目标跟踪划分为五项主要的研究内容,流程图下图所示:
流程图
运动模型(Motion Model):如何产生众多的候选样本。
特征提取(Feature Extractor):利用何种特征表示目标。
观测模型(Observe Model):如何对众多候选样本评分。
模型更新(Model Updater):如何更新观测模型使其适应目标的变化。
集成方法(Ensemble):如何融合多个决策获得一个更有的决策结构。
下图的总结可以帮助更好的理解目标跟踪算法是如何完成跟踪任务的。
跟踪任务流程
02 目标跟踪算法分类
大多数的跟踪方法主要集中对观测模型的设计,根据观测模型的不同可分为两类:生成式模型(Generative Model)和判别式模型(Discriminative Model)。
生成式模型:通过提取目标特征来构建表观模型,然后在图像中搜索与模型最匹配的区域作为跟踪结果。不论采用全局特征还是局部特征,生成式模型的本质是在目标表示的高维空间中,找到与目标模型最相邻的候选目标作为当前估计。此类方法的缺陷在于只关注目标信息,而忽略了背景信息,在目标外观发生剧烈变化或者遮挡时候容易出现目标漂移(drift)或者目标丢失。
举例:跟踪器从当前帧知道了目标区域80%是红色,20%是绿色,在下一帧中搜索算法回去找最符合这个颜色比例的区域。
生成式算法框架
判别式方法:将目标跟踪看做是一个二元分类问题,通过训练关于目标和背景的分类器将目标从背景中分离出来,从候选目标中确定目标,该方法可以显著的区分背景和目标,性能鲁棒,渐渐成为目标跟踪领域主流方法。且目前大多数基于深度学习的目标跟踪算法也属于判别式方法。
举例:在训练时告诉跟踪器,目标80%是红色,20%是绿色,同时背景中有桔红色,要格外注意,这样分类器知道更多信息,效果也相对较好。
判别式算法框架
03 目标跟踪任务的困难和挑战
虽然目标追踪的应用前景非常广泛,但还是有一些问题限制了它的应用,主要问题例举如下:
形态变化 - 姿态变化是目标跟踪中常见的干扰问题。运动目标发生姿态变化时, 会导致它的特征以及外观模型发生改变, 容易导致跟踪失败。例如:体育比赛中的运动员、马路上的行人。
尺度变化 - 尺度的自适应也是目标跟踪中的关键问题。当目标尺度缩小时, 由于跟踪框不能自适应跟踪, 会将很多背景信息包含在内, 导致目标模型的更新错误:当目标尺度增大时, 由于跟踪框不能将目标完全包括在内, 跟踪框内目标信息不全, 也会导致目标模型的更新错误。因此, 实现尺度自适应跟踪是十分必要的。
遮挡与消失 - 目标在运动过程中可能出现被遮挡或者短暂的消失情况。当这种情况发生时, 跟踪框容易将遮挡物以及背景信息包含在跟踪框内, 会导致后续帧中的跟踪目标漂移到遮挡物上面。若目标被完全遮挡时, 由于找不到目标的对应模型, 会导致跟踪失败。
图像模糊 - 光照强度变化, 目标快速运动, 低分辨率等情况会导致目标模糊, 尤其是在运动目标与背景相似的情况下更为明显。因此, 选择有效的特征对目标和背景进行区分非常必要。
下图是上述问题的一些实例。
目标跟踪任务中的困难与挑战
如上图所示,目标跟踪任务中的困难和挑战包括:
1.形变 | 2.光照变化 | 3.相似干扰 |
4.运动模糊 | 5.背景干扰 | 6.遮挡 |
7.超出画面 | 8.尺度变化 | 9.平面外旋转 |
10.平面内旋转 | 11.背景相似 |
04 目标跟踪的数据库
严谨的数据集是驱动算法的关键,前几年目标跟踪方向的数据库资源相对匮乏,这也是目标跟踪的发展相对落后于目标检测的重要原因之一。下面简要介绍了两个权威的目标跟踪方向的数据库。
OTB50数据集
OTB可以说是做单目标跟踪必跑的数据库了,2013年的OTB50包含50个人工标注的视频序列。由于在此之前目标跟踪方向没有比较公认的数据库,所有的单跟踪算法没有一个统一的衡量,所以这个数据库的意义非常重大,直接促进了单目标跟踪算法的发展。后来又扩展为OTB100发送到TPAMI,有100个序列,难度更大更加权威。如果想要了解近年来比较厉害的跟踪算法,可以参考吴毅老师的论文(附后)。
VOT数据库
VOT Challenge是目标跟踪领域的赛事,类似于图形识别领域中的ImageNet挑战赛。这些赛事通常都是标准数据集的来源,所以VOT数据集是一个常用的目标跟踪数据集,所有序列支持免费下载。VOT竞赛已经举办了9届,每年竞赛都会出现很多新的算法和别致的思路,2022年的VOT竞赛也即将开启,由于每年的评测序列都会更新,且标注的精确度逐年提高,VOT竞赛也被视为视觉跟踪领域最难的竞赛,所以结果相对更可靠。
OTB和VOT区别:OTB包括25%的灰度序列,而VOT都是彩色序列,这也是造成很多颜色特征算法性能差异的原因。两个库的评价指标不尽相同,具体请参考论文和竞赛官网。
05 目标跟踪经典算法
前几年最热门的生成式跟踪方法是稀疏编码(Sparse Coding), 而近来判别式跟踪方法逐渐占据了主流地位,以相关滤波(CF:Correlation Filter)和深度学习(DL:Deep Learning)为代表的判别式方法取得了令人满意的效果。本节按年份顺序对经典算法进行一个简单地梳理,其中各个算法的年份以论文发表的年份或者参加benchmark的年份为依据,帮助理解单目标跟踪算法的演变和发展趋势。针对于不同的跟踪任务的挑战各个算法所提出的解决思想值得我们学习体会,跟踪算法的发展趋势可见一斑。
1981 | |
LK Tracker 1981
LK Tracker应该是最早的目标跟踪工作,它使用了光流的概念,如下图所示,不同颜色表示光流不同的方向,颜色的深浅表示运动的速度。光流的计算非常简单也非常快,但是它的鲁棒性不好,基本上只能对平移且外观不变的物体进行跟踪。
光流法
2002 | |
Mean Shift
Mean Shift采用均值漂移作为搜索策略,这是一种无参概率估计方法,该方法利用图像特征直方图构造空间平滑的概率密度函数,通过沿着概率密度函数的梯度方向迭代,搜索函数局部最大值。在当时成为了常用的目标跟踪方法,简单易实现,但鲁棒性较低。
MeanShift算法
2010 | |
MOSSE
MOSSE(Minimum Output Sum of Squared Error)使用相关滤波来做目标跟踪(不是第一个,但由于思路清晰、算法完整称为相关滤波跟踪算法的鼻祖),其速度能够达到600多帧每秒,但是效果一般,主要是因为它只使用了简单的原始像素特征。
大致流程:
再入初始帧的groundtruth(包括中心点和矩形框的高宽)
对当前目标框进行随机仿射变换生成128个样本,每个样本经过高斯函数计算得出响应值,最终结合公式得出滤波器模版(图13中的FILTER)。
根据模版计算得出第二帧的响应图,其中响应值最大的点为第二帧目标的中心点,并以此画出目标框(图13中的OUTPUT)。
根据第二帧的目标区域更新滤波器模版
重复3-4步
MOSSE算法
2012 | |
CSK
CSK的作者针对MOSSE做出了一些改进,作者认为循环移位能模拟当前正样本的所有的转换版本(除边界以外),因此采用循环矩阵进行密集采样(对比MOSSE的随机仿射采样),并通过核函数将低维线性空间映射到高维空间,提高了相关滤波器的鲁棒性。
循环矩阵是一种特殊的矩阵,它的一维形式就是由一个n维向量每次向右循环移动一个元素,直到生成一个n×n的矩阵,具体效果如下图所示。
循环矩阵示意图
2014 | |
KCF
CSK的特征输入是单通道的灰度像素,而KCF利用的是HOG多通道特征,核函数利用了高斯核函数。
方向梯度特征效果图
可以说CSK和KCF的结合才是完整的核化相关滤波器的演变趋势,既有循环矩阵及傅立叶对角化简化计算,又有对单通道特种应用的拓展,可以适应更多优秀的特征描述。
DSST
DSST作者将跟踪分为两个部分——位置变化和尺度变化。在跟踪过程中,作者定义了两个滤波器分别用于确定新目标的位置和尺度评估,提高了算法的鲁棒性。
2015 | |
MDNet
MDNet设计了一个轻量级的小型网络学习卷积特征表示目标。作者提出了一个多域的网络框架。
在离线训练时,特征提取网络是共享的,同时针对每个视频序列构建一个新的检测分支进行训练。这样特征提取网络可以学习到通用性更强的与域无关的特征。
在跟踪时,保留并固定特征提取网络,针对跟踪序列构建一个新的分支检测部分,用第一帧样本在线训练检测部分之后再利用跟踪结果生成正负样本来微调检测分支。
此外,MDNet在训练中负样本的生成用到了难例挖掘技术,随着训练的进行增大样本的分类难度,从而使得网络的判别能力越来越强。
如下图所示,负样本越来越难分。
难例挖掘
SRDCF
SRDCF的作者考虑到若仅使用单纯的相关滤波会导致边界效应,也就是相关滤波采用循环移位采样导致当目标移位到边缘时会被分割开,此时得到的样本中就没有完整的目标图像从而失去效果。
边界效应
于是,作者的思路是既然边界效应发生在边界附近,那就忽略所有移位样本的边界部分像素,或者说限制让边界附近滤波器系数接近0,具体做法是加入空间正则化,惩罚边界区域的滤波器系数,效果如下图。
SRDCE空间正则化
HCF
HCF的主要贡献是把相关滤波中的HOG特征换成了深度特征,它使用的是VGG的3、4、5三个层来提取特征,针对每层CNN训练一个过滤器,并且按照从深到浅的顺序使用相关滤波,然后利用深层得到的结果来引导浅层从而减少搜索空间。
HCF算法提取深度特征
上图是使用卷积可视化得到的,如图中所示,在conv3中的特征能够比较清晰的看到目标的轮廓,但是在conv5中已经很难看到细节所在,但是,在conv5当中能够看到的是,本层特征包含了较多的语义信息,左半部分的高亮区域就是目标位置的所在的大概区域范围,所以在高层特征当中,能够很容易的找到目标所在的大概区域范围,然后逐步使用较低层次的特征对目标进行精确定位。
2016 | |
Staple
Staple提出了一种互补的方式。考虑到HOG特征对形变和运动模糊比较敏感,但是对颜色变化能够达到很好的跟踪效果,color特征对颜色比较敏感,但是对形变和运动模糊能够有很好的跟踪效果,因此作者认为若能将两者互补就能够解决跟踪过程当中遇到的一些主要问题。于是,Staple使用HOG-KCF与color-KCF结合算法对目标进行跟踪。
此算法的创新思路简单直白,但效果很惊艳。
TCNN
TCNN使用一个树形的结构来处理CNN特征。作者利用可靠性来分配预测目标的权重,采用的更新策略是每10帧删除最前的节点,同时创建一个新的CNN节点,选择能够使新节点的可靠性最高的节点作为其父节点。这样一直保持一个active set,里面是10个最新更新的CNN模型,用这个active set来做跟踪。但由于要更新网络结构,速度较慢。
TCNN树形结构更新示例
siamFC
SiamFC方法的核心思想很简单,就是将跟踪过程规划为一个相似性学习问题。即学习一个函数 f(z, x) 来比较样本图像 z 和搜索图像 x 的相似性,如果两个图像相似度越高,则得分越高。为了找到在下一帧图像中目标的位置,可以通过测试所有目标可能出现的位置,将相似度最大的位置作为目标的预测位置。
在深度学习中处理相似度问题最典型的是采用Siamese架构,SiamFC的网络结构如下图:
SiamFC网络结构
2017 | |
CFNet
CFNet采用孪生网络的架构,训练样本(这里指用来匹配的模板)和测试样本(搜索的图像区域)通过一个相同的网络,然后只将训练样本做相关滤波操作,形成一个对变化有鲁棒性的模板。为了抑制边界效应,作者施加了余弦窗并在之后又对训练样本进行了裁剪。
2018 | |
UPDT
UPDT算法的主要思想是区别对待深度特征和浅层特征,深层特征能通过数据增强来提升效果,同时深层特征主打的是鲁棒性而不是精度;相反,浅层特征经数据增强后反而降低了效果,但同时它能够很好地保证精度。因此,作者得出了深度模型和浅层模型先分别独立训练,最后再融合的方案。
SiamRPN
SiamRPN在SiamFC的基础上利用了Faster RCNN中的RPN,解决了之前深度学习跟踪算法没有domain specific(可理解为类间不区分)以及还需额外的尺度检测与在线微调的问题。RPN回归网络的引入,一方面提高了精度,另一方面回归过程代替多尺度检测,使得速度有所提升。
SiamRPN网络结构
2019 | |
SiamRCNN
SiamRCNN发现重检测很容易受到干扰物的影响从而产生模型漂移,从难例挖掘和运动轨迹动态规划两个角度入手,设计了一个利用第一帧和前一帧为模板的孪生网络检测结构,在短时跟踪评价上效果惊人,在长时跟踪评价上也有非常显著的进步。
其中轨迹动态规划算法(TDPA)主要思想是通过重新检测前一帧中所有的目标候选框,并将这些候选框随时间分组到短目标轨迹中,同时跟踪所有潜在的目标,包括干扰目标。然后根据视频中所有目标对象和干扰对象的完整历史轨迹选择当前最佳对象。
2020 | |
RPT框架
RPT算法框架由目标状态估计网络与在线分类网络两部分组成:
目标状态估计网络将跟踪目标状态表示为特征点集,以提升对目标位姿变化、几何结构变化的建模能力。在视觉目标跟踪任务中,为了方便真值标注与特征提取,目标状态通常用矩形框进行表示。矩形框一方面是对目标区域的一种粗略表示,包含多余的背景;另一方面不具备对目标位姿变化、几何结构变化的建模能力,进而限制了回归精度。因此,将跟踪目标表示为一系列特征点,通过监督学习目标区域内的语义关键点与极值点,实现更精细的目标状态估计。
PRT目标状态估计网络
图 22 PRT目标状态估计网络
在线分类网络由轻量的两层全卷积神经网络构成,使得RPT框架具备对抗周边相似干扰物的强鲁棒性。
RPT在线分类网络
06 目标跟踪的研究趋势
本节浅析近几年来目标跟踪领域各种算法主流的研究趋势和发展方向。
a) 信息提取
深度特征
在现实场景中,物体是在三维的运动场中移动的。而视频或图像序列都是二维的信息,这其实是一些难题的根本原因之一。一个比较极端的例子就是理发店门前经常会出现的旋转柱,如果单纯地从二维角度来看,柱子是向上运动的,可在实际的运动场中柱子是横向运动的,观测和实际的运动方向是完全垂直的。
旋转柱效果图
因此,为了能够更好地跟踪目标,我们需要提取尽可能好的特征,此外最好能从视频或图像序列中学到更多丰富的信息(尤其是含语义的)。
时域和空间域结合
由于CNN能够在学习的过程中能够产生对样本中各个区域有区分的关注度,因此可以不考虑边界效应。对边界效应的处理主要是在相关滤波类等需要循环移位的算法中出现。
事实上,目标跟踪这一个任务本身就在利用时域信息,因为预测下一帧肯定需要上一帧的信息,然而仅仅利用上一帧的信息往往是不够的,充分的利用时域信息在正则或者辅助记忆方面都可以取得一定的效果。
b) 元学习
当深度特征兴起之后,目标跟踪中的许多算法都选择迁移目标分类任务中的一些预训练模型来提取特征,这种迁移学习其实就包含了元学习的思想。例如MDNet将每个视频看做一个域,在测试时新建一个域但同时保留了之前训练时在其他域上学到的经验,既能够更快更好地在新的视频序列上学习也避免了过拟合。
孪生网络实际上也是元学习领域一种比较常用的结构,它本身学习了如何去判断输入之间的相似度。
c) 防止过拟合
目标跟踪中由于模版更新或目标形变等因素造成的过拟合问题也是一个比较重要的关注点,下面是一些比较常见的方法:
采用稀疏更新的方式(隔几帧更新一次),相当于将利用单帧信息的更新变成了批处理的形式。
每次更新采用最近几帧的信息而不是只用目前帧的信息,其原理类似上一条。
利用初始帧或者质量比较好的几帧存储的样本来进行时域正则。
对不同的情况采用不同的更新或者初始化的策略。
使用掩模去除不可靠的信息。
07 学习目标跟踪相关参考资料
a) 入门
相信本篇文章可以帮助大家了解“什么是目标跟踪”“目标跟踪要完成一件什么样的事情”。下面这篇文章更加详尽地介绍了目标跟踪任务流程中的各个子问题(参照本文第一节的流程图)。
https://www.pianshen.com/article/54451671167/
此外想要入门目标跟踪(同样适用计算机视觉的其他任务,如目标检测等),可以从学习OpenCV入手,先掌握基本的图像处理、提取图像特征,以有效地去描述目标。推荐一个简单好上手的OpenCV入门课程资源:
https://www.bilibili.com/video/BV1Fo4y1d7JL?p=1
b) 进阶
推荐大家深入地学习一种经典的目标跟踪算法,由于具体算法的详细原理内容较多,在此不做赘述,这里推荐几种经典的跟踪算法学习资料,也可以自行选取一两种其他经典算法进行深入学习:
基于相关滤波的目标跟踪经典算法:KCF(源码已收入OpenCV4):
https://blog.csdn.net/crazyice521/article/details/53525366
基于孪生网络的目标跟踪鼻祖算法:SiamFC(先理解孪生网络):
https://arxiv.org/pdf/1606.09549.pdf
吴毅老师的论文,包含了2012年以前经典算法的对比
Wu Y, Lim J, Yang M H. Online object tracking: A benchmark [C]// CVPR, 2013.
Wu Y, Lim J, Yang M H. Object tracking benchmark [J]. TPAMI, 2015.
c)前沿
以下资料链接可以了解最新的跟踪算法和跟踪思路:
首先推荐一个在github上维护的Tracking Benchmark for Correlation Filters,总结了相关滤波的目标跟踪算法并按每篇论文解决的问题进行分类:
https://github.com/HEscop/TBCF
下图是中科院博士王强在github上总结的跟踪算法的思维导图,根据跟踪算法发展进行了梳理,可以看到目标跟踪算法主要往两个大方向发展,分别是CF即相关滤波和DL即深度学习。同一个链接下还包括了各项成果的paper及code。长期更新和维护,值得收藏。
目标跟踪算法思维导图
VOT历届竞赛地址,可以了解到每年大赛得奖算法的各项性能评分和原理 :
https://www.votchallenge.net/challenges.html
目标跟踪方向的论文可以关注计算机视觉的三大顶会 CVPR (Computer Vision and Pattern Recognition)、ICCV (International Conference on Computer Vision) 、ECCV (European Conference on Computer Vision)。
下面总结了19年20年的顶会论文:
CVPR2020(共33篇) :
https://bbs.cvmart.net/topics/2733
ECCV2020(共26篇):
https://bbs.cvmart.net/topics/3097
CVPR2019(共19篇)
https://bbs.cvmart.net/articles/523
ICCV2019(共11篇):
https://bbs.cvmart.net/articles/1190
来源:柒壹陆机器人
本文仅做学术分享,如有侵权,请联系删文。