Object Tracking Benchmark 目标跟踪中常用算法评价参数

      作为计算机视觉的重要组成部分,最近几年有很多的目标跟踪算法提出。在如何评价算法性能方面也相继有一些方法和视频序列提出。本篇博客主要对2015年发表于IEEE上一篇《Object Tracking Benchmark》当中提出的OPE、TRE、SRE三个基本评价方法进行讲解,同时也会简单介绍一下Precision Plot、Success Plot的matlab实现方法。
      作者除了在文章中介绍了评价算法性能的几种方法和参数之外,还给出了两个用来进行测试的数据集:TB-50 Sequences和TB-100 Sequences。其中有许多视频序列都是我们在近几年的论文中都可以看到的,作者同时也给database添加了label,如FM=Fast Move、SV=scale variance等,方便测试算法在不同环境下的性能。感兴趣的话可以在作者主页找到这些内容。
      有了benchmark之后,接下来就是参考《Object Tracking Benchmark》中定义的参数对目标跟踪算法的性能进行评价。两个衡量目标跟踪精准度的基本参数是Precision Plot和Success Plot。接下来将对这两个参数进行介绍。

Precesion Plot: Euclidean distance between the center locations.
      precesion plot(精度测算)主要指的是预测位置中心点与benchmark中标注的中心位置间的欧式距离,是以像素为单位进行的计算。计算方式比较简单,在进行目标跟踪时我们主要会得到两个参数:跟踪目标左上角的坐标和scale的大小。在这里给出计算的matlab代码。

addpath('../STCT-master/sample_res/');
%res=load('./sample_res/Basketball/res_basketball.txt');
res=load('./sample_res/Basketball/track_res_fct_scale_base1.mat');
res=res.results.res;
ground_truth=load('./sample_res/Basketball/groundtruth_rect.txt');
[m,n]=size(res);
precision_plot(m)=0;
average_precision_plot=0;
%calculate precision plot
for i=1:m
    temp1=(res(i,1)+res(i,3)/2-ground_truth(i,1)-ground_truth(i,3))^2;
    temp2=(res(i,2)+res(i,4)/2-ground_truth(i,2)-ground_truth(i,4))^2;
    precision_plot(i)=sqrt(temp1+temp2);
end
%average precision plot
average_precision_plot=sum(precision_plot);   
average_precision_plot=average_precision_plot/m;

      最终结果用average_precision_plot来表示,即为该视频序列所有帧的平均误差。

Success Plot:
      success plot(成功率测算)主要指的是预测目标所在benchmark的重合程度。通过success plot,我个人觉得对scale和precision都有了数值上的描述。下面简单介绍success plot的计算方法。

success plot

      在说明success plot的计算方法前,首先要对两个参数进行介绍。rt为tracked bounding box,r0为ground_truth bounding box。这样success plot的计算就很好理解了。同样也附上matlab代码。

success_plot(m)=0;
average_success_plot=0;
%calculate success plot
for i=1:m
   s1=res(i,3)*res(i,4);
   s2=ground_truth(i,3)*ground_truth(i,4);
   %length
   if res(i,1)i,1)
       temp3=res(i,1)+res(i,3)-ground_truth(i,1);
   else 
       temp3=ground_truth(i,1)+ground_truth(i,3)-res(i,1);
   end

   %height
   if res(i,2)i,2)
       temp4=res(i,2)+res(i,4)-ground_truth(i,2);
   else 
       temp4=ground_truth(i,2)+ground_truth(i,4)-res(i,2);
   end
   s_common=temp3*temp4;
   if s_common>=s1+s2
       success_plot(i)=0;
   else
       success_plot(i)=s_common/(s1+s2-s_common);
   end
end

%average success plot
average_success_plot=sum(success_plot);
average_success_plot=average_success_plot/m;

display(average_precision_plot);
display(average_success_plot);    

关于鲁棒性
      为了测试/表征算法的鲁棒性,仅仅有以上的两个简单参数怕是远远不够的。简单对OPE、TRE、SRE进行介绍。
OPE: one-pass evaluation;
TRE: temporal robustness evaluation (different start frame);
SRE:spatial robustness evaluation (four center shifts and four corner shifts).
      其中OPE即为普通方法,TRE、SRE为测试鲁棒性方法。另还有其它更加复杂的方法,如果感兴趣的话可以在参考文献中查找到。在这里就不做过多的描述了。

主要参考文献:
Wu Y, Lim J, Yang M H. Object tracking benchmark[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(9): 1834-1848.

你可能感兴趣的:(Deep,Learning)