自从VOT2015以来,VOT的评价指标基本都是A,R,EAO。这套独特的评价方式存在一些弊端以及一些取巧的手段,今年VOT2020对这些评价方式进行了一些修改,使得对目标跟踪的评价更加公正。
以往VOT的评价方式:
https://blog.csdn.net/Dr_destiny/article/details/80108255
VOT通过跟踪失败重启的次数来衡量跟踪器的鲁棒性,重启会带来的问题包括:
重启之后需要重新初始化跟踪器,跟踪器对初始化非常敏感,举个非常极端的例子,如果重启的帧数刚好出现目标遮挡或者模糊,那么很可能很快又会跟踪失败。这使得第一次复位和后面的复位建立了因果关系,这样评价鲁棒性是不准确的;
当overlap为0时判断为目标丢失需要重启,而有些人就可以作弊当检测到overlap很小的时候就增大输出的跟踪框,这样就能保证预测和标注始终有overlap(听说这样作弊的老哥都被取消资格了)。还有就是判丢的条件过于严格,有些跟踪器也许这一帧丢了但是下一帧马上就能矫正回来可是在测评时直接就被判丢了,也就是说当前测评方式没有办法区分这种short-term的丢失和完全丢失。
下面两张图直观展示了上述问题:

在不同位置重启可能影响后续跟踪结果

有些跟踪器在某一帧丢失后马上又能矫正回来
可以发现最大的问题就在于这个重启机制,所以VOT2020取消了重启,转而用initialization points代替。在每个序列中,在初始帧,结束帧,以及每隔Δ帧,都设置一个initialization point(anchor)。跟踪器从每个anchor处开始正向或者反向运行,比如这个anchor前面的帧数更多,就反向运行;如果后面帧数更多,就正向运行,参照图1

另外,每个anchor都是手动检查并潜在地移动几帧,以避免将初始点放置在被遮挡的目标上。实验设置Δ=50,也就是每隔2s左右设置一个anchor。

定义序列 s 的第 a 个anchor的accuracy为 A_{s,a},表示从anchor a开始直到丢失前的平均overlap。

N^{F}_{s,a}表示从anchor a到丢失前的subsequence的帧数。Ω表示预测和gt的overlap。
robustness指标R_{s,a}表示成功的子序列的占比

N_{s,a}表示子序列长度。
最后将一个序列的所有anchor的子序列平均得到每个序列的A和R:

N^{A}_{s}表示sequence s的anchor数量。
将每个序列再进行平均得到总的A, R

N是序列个数,N_{s}表示序列s的帧数,N^{F}_{s}表示用来计算accuracy的帧数
EAO的计算方式没有变,参照:
https://blog.csdn.net/sinat_27318881/article/details/84350288
只是划分子序列的方式由原来的根据重启位置划分变成现在的根据anchor的位置划分


其中ψ_{s,a}(i) 表示以序列s,anchor a为起始,从这个扩展子序列起始帧到第 i 帧的average overlap。如果在某一帧判丢了,那么之后直到第 i 帧的overlap都为0。实验设置 [N_{hi}, N_{lo}] = [115, 755]

定义了一个tentative failure,就是当overlap小于阈值θ_{Φ}时认为是tentative failure,此时自动输出一个较大的框防止漂移,如果在接下来的θ_{N}帧里还没有恢复(overlap > θ_{Φ})才认为是跟踪失败。这样就给了short-term failures恢复的可能。
实验设置θ_{Φ}=0.1, θ_{N}=10
还有一个比较大的变动就是VOT-ST2020的标志格式由原来的旋转矩形框变成了mask
