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。接下來將對這兩個參數進行介紹。html

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來表示,即爲該視頻序列全部幀的平均偏差。ide

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)<ground_truth(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)<ground_truth(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爲測試魯棒性方法。另還有其它更加複雜的方法,若是感興趣的話能夠在參考文獻中查找到。在這裏就不作過多的描述了。lua

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

相關文章
相關標籤/搜索