1. 程式人生 > >召回率,精確率,mAP如何計算

召回率,精確率,mAP如何計算

top 是我 分類器 false 如果 challenge cal 坐標 .com

首先用訓練好的模型得到所有測試樣本的confidence score,每一類(如car)的confidence score保存到一個文件中(如comp1_cls_test_car.txt)。假設共有20個測試樣本,每個的id,confidence score和ground truth label如下:

技術分享圖片

接下來對confidence score排序,得到:

技術分享圖片

然後計算precision和recall,這兩個標準的定義如下:

技術分享圖片

圓圈內(true positives + false positives)是我們選出的元素,它對應於分類任務中我們取出的結果,比如對測試樣本在訓練好的car模型上分類,我們想得到top-5的結果,即:

技術分享圖片

在這個例子中,根據ge_label真實標簽,true positives就是指第4和第2張圖片,false positives就是指第13,19,6張圖片。方框內圓圈外的元素(false negatives和true negatives)是相對於方框內的元素而言,在這個例子中,是指confidence score排在top-5之外的元素,即:

技術分享圖片

其中,false negatives是指第9,16,7,20張圖片,true negatives是指第1,18,5,15,10,17,12,14,8,11,3張圖片。

那麽,這個例子中Precision=2/5=40%,意思是對於car這一類別,我們選定了5個樣本,其中正確的有2個,即準確率為40%;Recall=2/6=30%,意思是在所有測試樣本中,共有6個car,但是因為我們只召回了2個,所以召回率為30%。

實際多類別分類任務中,我們通常不滿足只通過top-5來衡量一個模型的好壞,而是需要知道從top-1到top-N(N是所有測試樣本個數,本文中為20)對應的precision和recall。顯然隨著我們選定的樣本越來也多,recall一定會越來越高,而precision整體上會呈下降趨勢。把recall當成橫坐標,precision當成縱坐標,即可得到常用的precision-recall曲線。這個例子的precision-recall曲線如下:

技術分享圖片

接下來說說AP的計算,此處參考的是PASCAL VOC CHALLENGE的計算方法。首先設定一組閾值,[0, 0.1, 0.2, …, 1]。然後對於recall大於每一個閾值(比如recall>0.3),我們都會得到一個對應的最大precision。這樣,我們就計算出了11個precision。AP即為這11個precision的平均值。這種方法英文叫做11-point interpolated average precision。?

當然PASCAL VOC CHALLENGE自2010年後就換了另一種計算方法。新的計算方法假設這N個樣本中有M個正例,那麽我們會得到M個recall值(1/M, 2/M, ..., M/M),對於每個recall值r,我們可以計算出對應(r‘ > r)的最大precision,然後對這M個precision值取平均即得到最後的AP值。計算方法如下:

技術分享圖片

相應的Precision-Recall曲線(這條曲線是單調遞減的)如下:?

技術分享圖片

對每個recall對應的precision求均值就得到所謂的average precision,即AP。這樣就得到了對應一個類(分類器)的average precision,它表示的是該模型在某個類別上的好壞,如果要求模型在所有類別上的好壞,就求所有類別對應的AP的均值,即所謂的mAP。

參考鏈接:http://blog.sina.com.cn/s/blog_9db078090102whzw.html

召回率,精確率,mAP如何計算