写这篇文章的主要目的是为了记录一下自己初入目标跟踪领域,对目标跟踪的一些理解,并备份一下自己的遇到的,学习过的一些大牛的算法,捋一捋自己思路,以便日后需要可以比较方便的复习。
文章部分图片来源于网上,和一些官方网站,侵删!!(读书人的事(っ•̀ω•́)っ✎⁾⁾)
首先需要明确的一点就是目标检测和目标跟踪的区别。
**目标检测:**最早detection system是由一批搞雷达的人提出来的,当时最简单的任务就是从看似随机(random)又充满干扰(interference)和噪音(noise)的信号中,抓取到有信息的特征(information-bearing pattern)。现在通俗一点说就是在图像和视频(一系列的图像)中扫描和搜寻目标,概括来讲就是在一个场景中对目标进行定位和识别,如下图中展示的,我们要检测图像中的车辆,这就是典型的目标检测实例。
**目标跟踪:**这个任务涉及的数据一般是时间序列,完成这个任务首先要目标定位。常见的情况是目标被定位以后,算法需要在后面的序列数据中,快速高效地对目标进行再定位。
实现“跟踪”有两种方法:密集跟踪(a series detections)和稀疏跟踪(estimation+common sense)。
目标检测和目标跟踪的区别:
(1):目标检测基于静态图像,目标跟踪基于动态(视频);当对视频的每一帧画面进行目标检测,组合起来也可以实现目标跟踪。
(2):目标跟踪不需要目标识别,可以根据运动特征来进行跟踪,而无需确切知道跟踪的是什么,所以如果利用视频画面之间(帧之间)的临时关系,单纯的目标跟踪可以很高效的实现。
(3):基于目标检测的目标跟踪算法计算非常昂贵,就如之前讲的,需要对每帧画面进行检测,才能得到目标的运动轨迹。而且,只能追踪已知的目标,这个容易理解,因为目标检测算法就只能实现已知类别的定位识别。
因此,目标检测要求定位+分类。而目标跟踪,分类只是一个可选项,根据具体问题而定,我们可以完全不在乎跟踪的目标是什么,只在乎它的运动特征。实际中,目标检测可以通过目标跟踪来加速,然后再间隔一些帧进行分类(好几帧进行一次分类)。在一个慢点的线程上寻找目标并锁定,然后在快的线程上进行目标跟踪,运行更快。
一般可认为在这两个领域研究难度为:实时目标检测>实时目标跟踪>目标检测>目标跟踪。
**第一部分:**数据集(Benchmark)
在标准的数据集还没有出现之前,各个算法所使用的数据集都不相同,这些算法很难放在一起比较孰优孰劣,一般都是看该算法的创新点来进行评价该算法。
在标准的数据集出来之后,各个算法有了可以比较的基础;但是又出现了一个新的情况:刷数据集,在数据集上分数很高。如果该数据集是动态的还好说,但是OTB是静态的。直到VOT2017官方指明要限制训练集,不能用相似序列训练模型。
单目标跟踪数据集:
首先介绍两个搞Tracking必跑的数据集
OTB数据集:OTB包含了一些benchmark结果,打好标记的数据集和一个用来测试算法的代码库。
OTB数据集分为OTB50和OTB100,其中50和100,分别表示该数据集里面视频的个数分别为50个和100个。(OTB100是在OTB50上扩展的,为方便记忆,使得OTB50对应OTB2013[其实OTB2013跟OTB50是不一样的,比如OTB2013包含了一小部分The rest of TB-100 Sequences],OTB100对应OTB2015,分别代表其在2013年和2015年发表的文章)
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.
OTB50:其中Skating因标注对象不同,可以看作两个视频序列。
OTB100:其中Skating、Jogging因标注对象不同,分别看作两个视频序列。
在OTB数据集中,不同的序列都标有其不同的属性,这些属性可以代表目标跟踪领域的常见难点。例如,IV(Illumination Variation)表示光照变化,SV(Scale Variation )表示尺度变化,OCC(Occlusion )表示遮挡,DEF(Deformation )表示变形,MB(Motion Blur )表示运动模糊,FM(Fast Motion)表示快速移动,IPR(In-Plane Rotation)表示平面内旋转,OPR(Out-of-Plane Rotation)表示平面外旋转,OV(Out-of-View )表示离开视野,BC(Background Clutters )表示相似的背景,LR(Low Resolution)表示低的分辨率。
OTB评价标准:
这里引用这两位作者的解释
链接1:https://www.jianshu.com/p/b49a9e3afec9
链接2:https://blog.csdn.net/weixin_43746811/article/details/93883761
成功率图(success plots)
首先定义重合率得分(overlap score,OS),追踪算法得到的bounding box(记为a),与ground-truth给的box(记为b),重合率定义为:OS = |a∩b|/|a∪b|,|·|表示区域的像素数目。当某一帧的OS大于设定的阈值时,则该帧被视为成功的(Success),总的成功的帧占所有帧的百分比即为成功率(Success rate)。OS的取值范围为0~1,因此可以绘制出一条曲线。
精确图(precision plots)
追踪算法估计的目标位置(bounding box)的中心点与人工标注(ground-truth)的目标的中心点,这两者的距离小于给定阈值的视频帧的百分比。不同的阈值,得到的百分比不一样,因此可以获得一条曲线。
该评估方法的缺点:无法反映目标物体大小与尺度的变化。
鲁棒性评估(SRE,TRE)
通过从时间(temporally,从不同帧起始)和空间(spatially,不同的bounding box)上打乱,然后进行评估。可以分为:temporal robustness evaluation (TRE) 和 spatial robustness evaluation (SRE)。
在一个图片/视频序列中,每个跟踪算法从不同的帧作为起始进行追踪(比如分别从第一帧开始进行跟踪,从第十帧开始进行跟踪,从第二十帧开始进行跟踪等),初始化采用的bounding box即为对应帧标注的ground-truth。最后对这些结果取平均值,得到TRE score。
由于有些算法对初始化时给定的bounding box比较敏感,而目前测评用的ground-truth都是人工标注的,因此可能会对某些跟踪算法产生影响。因此为了评估这些跟踪算法是否对初始化敏感,作者通过将ground-truth轻微的平移和尺度的扩大与缩小来产生bounding box。平移的大小为目标物体大小的10%,尺度变化范围为ground-truth的80%到120%,每10%依次增加。最后取这些结果的平均值作为SRE score。
OPE
用ground-truth中目标的位置初始化第一帧,然后运行跟踪算法得到平均精度和成功率。这种方法被称为one-pass evaluation (OPE)。
VOT竞赛
视觉跟踪领域国际顶级赛事 Visual-Object-Tracking Challenge (VOT) 从2013年开始就一直举办,每年都会推出一批新的benchmark。
最新的VOT2019benchmark和去年一样还是60个序列,只不过有些许更新。
VOT竞赛的评估包括单摄像头、单目标、无模型、因果跟踪器,用于短期跟踪和单摄像头、单目标、无模型的长期跟踪。
**短期跟踪:**跟踪器在目标丢失后没办法成功的进行重新检测,会在事件发生后进行重置。 因果关系要求跟踪器不使用任何未来帧或重新初始化之前的帧来推断当前帧中的对象位置。
**长期跟踪:**意味着跟踪器需要在目标丢失后进行重新检测,因此在此类事件发生后不进行重置。
最新VOT2019年Trackers结果:
The Seventh Visual Object Tracking VOT2019 Challenge Results: ICCV 2019
2013-2018年VOT竞赛论文结果:https://prints.vicos.si/publications/groups/vot/
VOT跟踪评价指标
(1)中心误差:Center Error
中心误差标准值考虑目标中心位置的误差,该方法具有明显的缺点,就是无法衡量目标尺度变化的影响。另外,目标中心的意义有时候不是很明确.
(2)区域重叠:Region Overlap
区域的重叠率是使用重叠面积的比例进行衡量的。在区域重叠指标上,我们一般使用有效帧的重叠率做平均。除此之外,我们还可以使用重叠率阈值以上帧的比例作为标准。
(3)跟踪长度:Tracking Length
这一指标是基于中心位置误差的,从跟踪开始到中心像素误差下降到阈值以下的(帧数)长度定义为跟踪长度。
(4)VOT评价指标EAO
EAO评价指标,即期望平均覆盖率。A指精度计算。具体来说就是统计每帧预测的bbox,并计算bbox和ground truth之间的交并比,然后计算整个视频序列交并比的平均值。
A是Accuracy用来评价tracker的跟踪目标的准确度,数值越大,准确度越高。因为其值表示第t帧bbox对应的gt。其中第t帧上准确率的计算和第i个跟踪器在第t帧上重复跑的次数有关。如果跑的次数越少则值就越大,因为这表示跟踪器还比较准确,如果重复跑很多次,则表明跟踪精度不高(A值当然也较小)。
R指的是每个视频跟踪跟丢的次数,然后计算失败率,R被认为与A相关性最小的一个度量,失败率与跟丢次数正相关。失败次数即每帧预测的bbox和gt的交并比为0,则判定为跟踪帧失败。在VOT 中VOT tool会在5帧之后重新初始化跟踪器。EAO则不是直接用A和R计算的。
R就是robustness,用来评价跟踪器的稳定性,数值越大,稳定性越差。因为R值表示跟丢次数。
(5)VOT评价指标EFO
EFO评价指标得到了减少平台和编程语言等外在因素对跟踪器的外在影响。在利用VOT toolkit评价tracker之前,先计算在600600的灰度图像上用3030的最大值滤波器进行滤波所用的时间,以此得出一个基准单位,再用这个基础单位衡量跟踪器的速度。
(6)VOT特色评价指标–排名机制(rank-based)
tracker在不同属性序列上的表现安装accuracy和robustness分别进行排名,再进行平均,得到tracker的综合排名,根据这个综合排名的数字大小对tracker进行排序得出最后排名。
具体操作是:
首先是跟踪器在同一属性的视频序列下进行测试,对得到的数据进行加权平均,每个数据的权重为对应序列的长度,由此得到单个tracker在该属性下视频序列的数据,然后对不同跟踪器在该属性序列下进行排名,得到单个tracker在所有属性序列下的排名后,求其平均值得到AR rank。
LaSOT(主页)
论文:LaSOT: A High-quality Benchmark for Large-scale Single Object Tracking
是目前为止最大的拥有密集标注的单目标跟踪数据集。
这篇文章对LaSOT介绍的比较详细:https://baijiahao.baidu.com/s?id=1637476314941505182&wfr=spider&for=pc
特点:Large-scale: 1,400 sequences with more 3.52 millions frames
High-quality: Manual annotation with careful inspection in each frame
Category balance: 70 categories with each containing twenty sequences
Long-term tracking: An average video length of 2512 frames (i.e., 83 seconds)
Comprehensive labeling: providing both visual and lingual annotation for each sequence
TrackingNet(主页)
论文: A Large-Scale Dataset and Benchmark for Object Tracking in the Wild
1,规模大:包含3万+个视频以及1420万个标注框。
2,专为目标跟踪设计:不像一般的大数据库都是隔几帧标注一个目标,这个数据集每个图片的目标都标注了。
3,前景好:作者将SiameFC算法在该数据集上进行训练,在OTB100上得到的测试结果相对于之前提升了1.6个百分点。
4,覆盖广泛:无论是视频长度,还是目标类别,还是跟踪中遇到的挑战都应有尽有。
其它一些数据集:
**UAV123:**是一个专门场景的数据集,都是用无人机拍摄,特点是背景干净,视角变化较多,包含123个视频,总大小在13.5G左右。百度网盘,提取码:7lwk。其中包含5个压缩包,一起解压。
VIVID: http://vision.cse.psu.edu/data/vividEval/datasets/datasets.html
VIRAT: VIRAT Video Dataset
UCLA Aerial Event Dataset: Aerial Video
MMSPG mini drone video dataset: Mini-drone video dataset | EPFL
OxUvA: Long-term Tracking
TLP: Long-Term Visual Object Tracking Benchmark
多目标跟踪benchmark
MOT Challenge: https://motchallenge.net
多目标跟踪数据集用的最多的是 MOTChallenge,专注于行人追踪的。也是一个竞赛,每年都会更新数据集。
具体介绍参考:https://zhuanlan.zhihu.com/p/133670271
PathTrack: http://people.ee.ethz.ch/~daid/pathtrack/
UA-DETRAC: http://detrac-db.rit.albany.edu/