做爲計算機視覺的重要組成部分,最近幾年有不少的目標跟蹤算法提出。在如何評價算法性能方面也相繼有一些方法和視頻序列提出。本篇博客主要對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的計算方法前,首先要對兩個參數進行介紹。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