2018.09.30更新:
在VOT2015部分补充R score的定义
上一篇博文简单介绍了vot-toolkit的使用方法。当然,那只是操作层面的东西,更重要的是我们通过这个工具得到的各种图表以及图表中的数据。而想要完整地评价一个tracker的性能,其指标必然不会过于简单,所以就有了这篇文章。我想通过梳理VOT2013到VOT2016评价指标的变化,呈现一个更加清晰的思路,让各位对VOT的认识更加深刻。
这篇文章先对VOT进行总体概述,再按照时间顺序分别叙述,循序渐进。
首先简单介绍VOT是什么:
VOT (Visual Object Tracking) 是一个针对单目标跟踪的测试平台,从2013年发展到现在,已经成为单目标跟踪领域主流的三大平台之一(另外两个是OTB、ALOV)。
作为一个测试平台,VOT有着自己的评价指标,并且指标在发展过程中不断完善,每年VOT都会有新的评价指标出现,或是对现有的评价体系进行改进。
VOT认为,对一个tracker的评价应该具备三个要素:
(1). 评价方法(Performance measures);
(2). 数据集(Datasets);
(3). 评价系统(Evaluation systems)
其中,第一点和第三点是不同的,评价方法侧重于这个评价体系的思路,而评价系统侧重于具体操作,即如何搭建一个可用的测试平台。接下来,对这三点具体阐述:
(1). 评价方法:VOT认为,仅仅根据测试出的数据对trackers进行排名不够精准,对于两个或多个tracker,它们通过测试得出的数据可能会不完全相等,但是在实际情况下它们的表现是相同(performing equally well)的,即实验数据不等同于实际表现,为了更加精准地测出tracker的实际表现,VOT认为应该通过一种算法判定:什么情况下tracker的表现可以视作相同,这被称作tracker equivalence;
(2). 数据集:VOT认为,数据集只有规模大是完全不行的,一个可靠的数据集应该测试出tracker在不同条件下的表现,例如部分遮挡(partial occlusion)、光照变化(illumination changes)等。由此,VOT提出,应该对每一个序列都标注出该序列的视觉属性(visual attributes),以对应上述的不同条件,VOT2013共提出了六种视觉属性:
除此之外,VOT认为序列中的每一帧都需要进行视觉属性的标注,即使是同一序列,不同帧的视觉属性也不同,这么做可以对tracker进行更精准的评价。
(3). 评价系统:在VOT提出之前,比较流行的评价系统是让tracker在序列的第一帧进行初始化,之后让tracker一直跑到最后一帧。然而tracker可能会因为其中一两个因素导致其在开始的某些帧就跟丢(fail),所以最终评价系统只利用了序列的很小一部分,造成浪费。而VOT提出,评价系统应该在tracker跟丢的时候检测到错误(failure),并在failure发生的5帧之后对tracker重新初始化(reinitialize),这样可以充分利用数据集。之所以是5帧而不是立即初始化,是因为failure之后立即初始化很可能再次跟踪失败,又因为视频中的遮挡一般不会超过5帧,所以会有这样的设定。
这是VOT的一个特色机制,即重启(reset/reinitialize)。但重启之后的一部分帧是不能用于评价的,这些帧被称作burn-in period,大量实验结果表明,burn-in period大约为初始化之后(包括第一帧的初始化和所有重启)的10帧。
接下来介绍VOT最重要的两个评价指标:Accuracy和Robustness
Accuracy用来评价tracker跟踪目标的准确度,数值越大,准确度越高。它借用了IoU(Intersection-over-Union,交并比)定义,某序列第t帧的accuracy定义为:
ϕ t = A t G ∩ A t T A t G ∪ A t T \phi_t=\dfrac{A_t^G \cap\ A_t^T}{A_t^G \cup\ A_t^T} ϕt=AtG∪ AtTAtG∩ AtT
其中 A t G A_t^G AtG代表第 t t t帧ground truth对应的bounding box, A t T A_t^T AtT 代表第 t t t帧tracker预测的bounding box。
更详细一些,定义 Φ t ( i , k ) \Phi_t(i,k) Φt(i,k)为第 i i i个tracker在第 k k k 次重复(repetition,tracker会在一个序列上重复跑多次)中在第 t t t 帧上的accuracy。设重复次数为 N r e p N_{rep} Nrep,所以 第 t t t 帧上的accuracy定义为:
Φ t ( i ) = 1 N r e p ∑ i = 1 N r e p Φ t ( i , k ) \Phi_t(i)=\frac{1}{N_{rep}}\sum_{i=1}^{N_{rep}} \Phi_t(i,k) Φt(i)=Nrep1i=1∑NrepΦt(i,k)
第 i i i个tracker的average accuracy定义为:
ρ A ( i ) = 1 N v a l i d ∑ t = 1 N v a l i d Φ t ( i ) \rho_A(i)=\frac{1}{N_{valid}}\sum_{t=1}^{N_{valid}} \Phi_t(i) ρA(i)=Nvalid1t=1∑NvalidΦt(i)
其中 N v a l i d N_{valid} Nvalid代表有效帧(valid frames)的数量,除了burn-in period之外的帧均为有效帧。
Robustness用来评价tracker跟踪目标的稳定性,数值越大,稳定性越差。仿照上面accuracy的定义,我们可以很容易得出robustness的计算公式。定义 F ( i , k ) F(i,k) F(i,k)为第 i i i个tracker在第 k k k次重复中failure的次数。
所以第 i i i个tracker的average robustness定义为:
ρ R ( i ) = 1 N r e p ∑ k = 1 N r e p F ( i , k ) \rho_R(i)=\frac{1}{N_{rep}}\sum_{k=1}^{N_{rep}} F(i,k) ρR(i)=Nrep1k=1∑NrepF(i,k)
至此,accuracy和robustness的定义已经讲述完毕,接下来按照时间顺序讲述VOT2013到VOT2016期间评价指标的发展历程。
给视频序列手工标注ground truth不是一件简单的事,而且很难对标注制定一个统一的标准。一般来说,标注的bounding box中,有超过60%的像素都属于目标,就算符合标准。当然,大多数情况下,这个百分比会比60%高很多。
至于数据集的构成,在本文的第1大节说过,VOT2013中分为六种属性。具有相同属性的序列放在一起称作属性序列(attribute sequence)
VOT的排名机制也是其特色之一,所谓排名,正如其字面意思,将tracker在不同属性序列上的表现按照accuracy(A)和robustness(R)分别进行排名,再进行平均,得到该tracker的综合排名,依据这个综合排名的数字大小对tracker进行排序得出最后排名。这个排名叫做AR rank。
具体操作为:首先让tracker在同一属性的序列下测试,对得到的数据(average accuracy/average robustness)进行加权平均,每个数据的权重为对应序列的长度,由此得到单个tracker在该属性序列上的数据,然后对不同tracker在该属性序列下进行排名。得到单个tracker在所有属性序列下的排名后,求其平均数(不加权)得到AR rank。
上文提到,实验数据不等同于实际表现,所以测试平台都想尽力还原真实场景,那么仅仅根据测试数据的大小就评判一个tracker的性能还是不够的,所以VOT提出了equivalent tracker的概念——accuracy和robustness可以利用非参数检验来验证两个tracker之间的评价是否存在显著差异。针对accuracy,应用 Wilcoxon Signed-Rank test;针对robustness,应用Wilcoxon Rank-Sum (MannWhitney U-test)。(由于笔者的数理统计知识有欠缺,这一段不能作出详细的分析,只能根据论文内容进行粗略的总结,待笔者之后补充,读者可以跳过这一段)
我以前在看一些目标跟踪领域的论文时,有过这样的疑问:**每篇文章提出的算法都是在不同硬件条件平台上跑的,编程语言也不尽相同,那么该如何对这些算法进行客观评价?**而VOT就给了我一个答案:EFO。
EFO(Equivalent Filter Operations )是VOT2014提出来的一个衡量tracking速度的新单位,在利用vot-toolkit评价tracker之前,先会测量在一个600600的灰度图像上用3030最大值滤波器进行滤波的时间,以此得出一个基准单位,再以这个基础单位衡量tracker的速度,以此减少硬件平台和编程语言等外在因素对tracker速度的影响。
VOT2014提出了衡量tracker的另一种机制——practical difference,简单来说,就是不再仅仅依靠显著性差异(statistical difference)。值得一提的是,practical difference只针对accuracy并没有涉及robustness。
在第1大节我们说过accuracy的定义和公式。定义 ϕ t ( i ) \phi_t(i) ϕt(i)和 ϕ t ( j ) \phi_t(j) ϕt(j)为tracker-i和tracker-j在t帧时的accuracy, ρ A ( i ) \rho_A(i) ρA(i)和 ρ A ( j ) \rho_A(j) ρA(j)是第 i i i和第 j j j个tracker的average accuracy,前后者之间的关系参考上文。再定义一个阈值 γ \gamma γ(这个 γ \gamma γ值如何取我就不再多说,感兴趣的读者可以去文末参考文献中VOT2014那篇查阅)。如果有:
∣ ρ A ( i ) − ρ A ( j ) ∣ > γ |\rho_A(i)-\rho_A(j)|>\gamma ∣ρA(i)−ρA(j)∣>γ
则称tracker-i和tracker-j通过测试。
上式还有其他形式:定义 d t ( i , j ) = ϕ t ( i ) − ϕ t ( j ) d_t(i,j)=\phi_t(i)-\phi_t(j) dt(i,j)=ϕt(i)−ϕt(j),则上式可以表示为:
1 T ∣ ∑ t = 1 T d t ( i , j ) γ ∣ > 1 \frac{1}{T}|\sum_{t=1}^T {\frac{d_t(i,j)}{\gamma}}|>1 T1∣t=1∑Tγdt(i,j)∣>1
又因为 γ \gamma γ随帧的不同而变化,所以上式又修正为:
1 T ∣ ∑ t = 1 T d t ( i , j ) γ t ∣ > 1 \frac{1}{T}|\sum_{t=1}^T {\frac{d_t(i,j)}{\gamma_t}}|>1 T1∣t=1∑Tγtdt(i,j)∣>1
γ t \gamma_t γt是第t帧对应的阈值。
到此,我们可以得到判断两个tracker表现相同的条件:
VOT2015提出,基于AR rank的评价方式没有充分利用accuracy和robustness的原始数据(raw data),所以创造了一个新的评价指标——EAO(Expected Average Overlap)。正如字面意思,这个评价指标只针对基于overlap定义的accuracy。
EAO的大致思路为:首先将所有序列按照长度分类,令待测tracker在长度为 N s N_s Ns的序列上测试,得到每一帧的accuracy Φ ( t ) \Phi(t) Φ(t)。(特别注意,这里和之前定义的accuracy有略微不同,这里只跑一次,即 N r e p = 1 N_{rep}=1 Nrep=1,所以括号里没有 k k k),之后进行平均,得到该序列上的accuracy: Φ N s = 1 N s ∑ i = 1 N s Φ ( t ) \Phi_{N_s}=\frac{1}{N_s}\sum_{i=1}^{N_s} \Phi(t) ΦNs=Ns1∑i=1NsΦ(t)。
长度为 N s N_s Ns的序列不止一个,tracker要在这些序列上全跑一遍,再求平均:
Φ ^ N s = 1 N s ∑ i = 1 N s Φ N s \hat\Phi_{N_s}=\dfrac{1}{N_s}\sum_{i=1}^{N_s}\Phi_{N_s} Φ^Ns=Ns1i=1∑NsΦNs
这样就得到了该tracker在长度 N s N_s Ns序列上的EAO值。之后在其他长度的序列上测EAO,就可以得到一条EAO曲线,横坐标为序列长度,纵坐标为EAO值。
另外,如果对不同 N s N_s Ns值的 Φ ^ N s \hat\Phi_{N_s} Φ^Ns再次求平均:设序列长度范围为 [ N l o , N h i ] [N_{lo},N_{hi}] [Nlo,Nhi],则:
Φ ^ = 1 N h i − N l o ∑ N s = N l o N h i Φ ^ N s \hat\Phi=\dfrac{1}{N_{hi}-N_{lo}}\sum_{N_s=N_{lo}}^{N_{hi}}\hat\Phi_{N_s} Φ^=Nhi−Nlo1Ns=Nlo∑NhiΦ^Ns
Φ ^ \hat\Phi Φ^是一个值,所以将不同tracker的 Φ ^ \hat\Phi Φ^值绘制成一张图就是EAO点图。
AR rank在VOT2015有了新的表示方法:
但是,这里有一点非常重要,就是关于pooled AR scores和attribute normalized AR scores,只要细心一点的读者看图就能发现一些问题——
注意看横坐标Robustness,范围都是0到1,并且文中提到越靠近右上角的tracker性能越好——The following trackers appear either very robust or very accurate among the top performing trackers on the sequence pooled AR-rank and AR-raw plots (closest to the upper right corner of rank plots),这表示什么呢?说明R值越大则tracker越稳健,这和我们之前说的不太一样。
其实这一点在文章Visual object tracking performance measures revisited里有提到过,这里的Robustness是经过改动了的,由以下公式定义:
R S = e − S M R_S = e^{-SM} RS=e−SM
其中, R S R_S RS就是重新定义后的Robustness,而 M M M其实是Robustness的原始数据, S S S是人为定义的一个数,在图中设为100(这也是为什么单目标跟踪的论文里所有AR Scores的图中在横坐标Robustness后面都有一个括号标明 S S S值是多少)。因为 R S = e − S M R_S = e^{-SM} RS=e−SM是关于 M M M的减函数,所以 R S R_S RS越大,就表明该tracker越稳健,更加直观明了。
VOT2016相比VOT2015变化不大,评价指标上,从OTB(另外一个测试平台,开头提到过)引入了AO(Average Overlap),与EAO的不同之处也仅在于AO没有VOT的重启机制。
到此,整篇文章的正文部分已经结束了。这两篇文章总结了我这段时间对VOT的认识与实践,也算是对毕设中期的一个见证。关于文中某些部分理论讲解不清楚的问题,由于笔者当前知识水平还不够,不足以作出清晰的解释,待笔者学习一段时间后,会对这些部分进行补充,请见谅。
[1] Kristan M, Matas J, Leonardis A, et al. A novel performance evaluation methodology for single-target trackers[J]. IEEE transactions on pattern analysis and machine intelligence, 2016, 38(11): 2137-2155.
[2] Kristan M, Matas J, Leonardis A, et al. The Visual Object Tracking VOT2013 challenge results[J].Proceedings of the IEEE International Conference on Computer Vision workshops. 2013:98-111.
[3] Kristan M, Pflugfelder R, Leonardis A, et al. The Visual Object Tracking VOT2014 challenge results[J]. COMPUTER VISION - ECCV 2016 WORKSHOPS, PT II, 2014, 8926:191-217.
[4] Kristan M, Pflugfelder R, Matas J, et al. The Visual Object Tracking VOT2015 Challenge Results[C]// IEEE International Conference on Computer Vision Workshop. IEEE, 2016:564-586.
[5] Kristan M, Leonardis A, Matas J, et al. The Visual Object Tracking VOT2016 Challenge Results[J]. COMPUTER VISION - ECCV 2016 WORKSHOPS, PT II, 2016, 8926:191-217.
[6] Čehovin L, Leonardis A, Kristan M. Visual object tracking performance measures revisited[J]. IEEE Transactions on Image Processing, 2016, 25(3): 1261-1274.