1. 程式人生 > >關於AP, MAP的一些理解

關於AP, MAP的一些理解

涉及概念:

平均精度(AP:Average Precision)、平均精度均值(mAP:Mean Average Precision)、查準率(precision)、查全率(recall),IOU(Intersection over Union)、置信度閾值(confidence thresholds)

 

查準率(precision)和查全率(recall,召回率):

對於二分類問題,可將樣例根據其真實類別與學習器預測類別的組合劃分為

真正例(true positive):預測為1,實際也為1

假正例(false positive):預測為1,實際也為0

真反例(true negative):預測為0,實際也為0

假反例(false negative):預測為0,實際也為1

四種情形,令TP(真正例)、FP(假正例)、TN(真反例)、FN(假反例)分別表示其對應的樣例數,則顯然有TP+FP+TN+FN=樣例總數。分類結果的“混淆矩陣”(confusion matrix)如表所示:

查準率P和查全率R分別定義為:

實際上(單類別):預測為反例0則不框

查準率Precision為所有預測為1中正確預測的比例,也就是框對的/所有預測框數目;

查全率Recall為所有真實框中被成功預測出1的比例,也就是框對的/所有真框數目

一個例子為:P=“挑出來的西瓜中有多少比例是好瓜”,R=“所有好瓜中有多少比例被挑出來”。

查全率和查準率是一對矛盾的度量。一般來說查準率高時,查全率往往偏低;而查全率高時,查準率往往偏低。

平均精度(AP)和平均精度均值(mAP)

Mean Average Precision(mAP)通常在資訊檢索和目標檢測中作為評估標準使用。在這兩個領域中mAP的計算方法不同,這裡主要介紹目標檢測中的mAP。

目標檢測中定義的mAP最先在PASCAL VisualObjects Classes(VOC) challenge中使用。至少有兩個變數用來決定precison和recall,分別是IOU(Intersection over Union)和置信度閾值(confidence thresholds)。IOU(交併比)是一個簡單的幾何度量,可以容易地被標準化。另一方面置信度也影響模型,會改變precison _recall曲線形狀。因此PASCAL VOC組織提出了一種方法來解釋這個變化。

AP即為求precison_recall曲線下方的面積,即為平均精度。2010年前後計算方法不同而已。2010前時11點插值平均精度,算出來是曲線下近似面積;2010年後新方式採用在所有點插值,算出來時更加精確的曲線下方面積(因為可以減小曲線震盪搖擺的影響)。

我們需要以模型不可知的方式來作為評估模型的標準。論文中提出一種稱為Average Precision(AP)的方法來計算。對給定的任務和類別,precision_recall曲線以一種方法的排序輸出來計算。Recall被定義為給定序列上所有正樣本的部分;precison被定義為正類別序列上的所有樣本。

AP概括了precision_recall曲線的形狀,被定義為在一組11個等間距recall水平[0, 0.1, 0.2,…,1]上的precision平均值(這種方法比較舊,英文叫做11-point interpolated average precision)。這意味著我們選擇11個不同的置信度閾值(這決定序列)。置信度閾值的設定需要使recall值為0,0.1,0.2,…,1。這使得mAP可以縱覽整個precison_recall曲線(儘量讓Recall值增長的同時保持Precision的值在一個很高的水平。而效能比較差的分類器可能會損失很多Precision值才能換來Recall值的提高)。

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

MAP就是所有AP值的平均值。

 

Approximated Average precision(近似平均精度):

對每一種閾值分別求(Precision值)乘以(Recall值的變化情況),再把所有閾值下求得的乘積值進行累加

Interpolated average precision(插值平均精度):

不再使用當系統識別出k個圖片的時候Precision的值與Recall變化值相乘。而是使用在所有閾值的Precision中,最大值的那個Precision值與Recall的變化值相乘。

上述兩種求AP方法,前者與精度曲線(precision_recall)很接近,後者算出來比前者值高,一般重要的論文都使用後者,因為可以減輕抖動。PASCAL VOC CHALLENGE 就用的後者。

下面是幾個在比較mAP值時需要記住的幾個重點:

1、 mAP需要計算完整個資料集;

2、 雖然模型輸出的絕對量化是難以解釋的,但mAP可以通過一個很好的相關性標準來幫助我們。當我們在流行的公開資料集上計算這個標準時,它可以很容易地用來比較目標檢測的新舊方法。 3、 根據類別在訓練集上的分佈方式,AP值可能在某些類別上從很高(這有很好的訓練資料)變化到很低(對資料很少或不好的類別)。所以你的mAP可能是合適的,但你的模型可能對某些類別非常好而對某些類別非常差。因此當分析你的模型結果時,觀察獨立類別的AP是明智的。這些值可能作為新增更多訓練樣本的指示器。

參考連結:

https://github.com/rafaelpadilla/Object-Detection-Metrics

https://www.zhihu.com/question/53405779/answer/419532990

https://blog.csdn.net/zdh2010xyz/article/details/54293298

關鍵看參考連結1,但是其中關於新的voc計算方法舉例中,作者為了計算簡單省略了一些點,實際應該是全用。下面這個圖是連線2最後的計算,為正確方式。