1. 程式人生 > >mean average precision(MAP)在計算機視覺中是如何計算和應用的

mean average precision(MAP)在計算機視覺中是如何計算和應用的

在影象中,尤其是分類問題中應用AP,是一種評價ranking方式好不好的指標:

舉例來說,我有一個兩類分類問題,分別5個樣本,如果這個分類器效能達到完美的話,ranking結果應該是+1,+1,+1,+1,+1,-1,-1,-1,-1,-1.

但是分類器預測的label,和實際的score肯定不會這麼完美。按照從大到小來打分,我們可以計算兩個指標:precision和recall。比如分類器認為打分由高到低選擇了前四個,實際上這裡面只有兩個是正樣本。此時的recall就是2(你能包住的正樣本數)/5(總共的正樣本數)=0.4,precision是2(你選對了的)/4(總共選的)=0.5.

影象分類中,這個打分score可以由SVM得到:s=w^Tx+b就是每一個樣本的分數。

從上面的例子可以看出,其實precision,recall都是選多少個樣本k的函式,很容易想到,如果我總共有1000個樣本,那麼我就可以像這樣計算1000對P-R,並且把他們畫出來,這就是PR曲線:


這裡有一個趨勢,recall越高,precision越低。這是很合理的,因為假如說我把1000個全拿進來,那肯定正樣本都包住了,recall=1,但是此時precision就很小了,因為我全部認為他們是正樣本。recall=1時的precision的數值,等於正樣本所佔的比例。

所以AP,average precision,就是這個曲線下的面積,這裡average,等於是對recall取平均。而mean average precision的mean,是對所有類別取平均(每一個類當做一次二分類任務)。現在的影象分類論文基本都是用mAP作為標準。

貌似從VOC08之後要求PR曲線必須單調下降了?這個不太確定。

================================================
1.使用AP會比accuracy要合理。對於accuracy,如果有9個負樣本和一個正樣本,那麼即使分類器什麼都不做全部判定為負樣本accuracy也有90%。但是對於AP,recall=1那個點precision會掉到0.1.曲線下面積就會反映出來。

2.在實際中計算AP時,如果是matlab的話,可以直接呼叫vl_feat中的vl_pr:VLFeat - Tutorials
這裡面詳細地給出了概念的解釋以及計算方式。