目標檢測中的評價指標mAP理解及計算

目標檢測中的評價指標mAP理解及計算

最近在學習Faster R-CNN進行目標檢測,在評估檢測結果階段遇到了目標檢測中常用的評價指標mAP。之前不太瞭解這方面知識,爲此蒐集了一些博客,做了下總結。

關於mAP的背景知識可以參考目標檢測評測指標mAP及計算[譯],翻譯自國外的一篇博客,很詳細。下面的內容主要是關注如何計算mAP(VOC2010以後的計算方法)。


一、基礎知識

1. precision(精確率)、recall(召回率)

這兩個是基本的分類判別指標,是從如下混淆矩陣中得來的:

通常將我們所關注的問題、對象或目標表示爲正例,其他的爲反例。由該表可以得出:
precision=TPTP+FPrecall=TPTP+FN precision=\frac{TP}{TP+FP} \\[3mm]recall=\frac{TP}{TP+FN}
precision表示在預測結果中有多少正例被預測到。recall表示所有正例中有多少被預測出來。所謂召回嘛就是原來的目標有多少被召集回來。

2. IoU

在目標檢測中即計算預測邊界框與GT邊界框的重疊程度。


二、mAP計算

首先要計算每一類的APAverage Precision)。
比如我們計算person這一類的AP。這裏有一組測試集圖片,每張圖片都事先標記或未標記出person,這樣我們就有了person的GT(Ground Truth)邊界框。在每張測試圖片輸入模型後會得到一系列person類的預測邊界框,每個邊界框都附帶有一個置信度。(注意當我們計算person的AP時就只關注這一類的邊界框,不考慮其他類的,即使該圖片中存在如dog類的GT邊界框。)

將每張測試集中的圖片進行檢測後會得到一系列預測邊界框集合,之後將該預測邊界框集合按照置信度降序排序。然後對於某一張測試集圖片,我們計算在該圖片上person類的預測邊界框與GT邊界框重疊程度(即IoU),如果IoU大於設定閾值(IoU閾值的典型值爲0.5)則將該邊界框標記爲TP,否則標記爲FP。對測試集中每張圖片的預測邊界框均進行如上操作(注意:在計算某一張圖片的預測框時會從預測框集合中選取該圖片的預測框)。由此會判定預測邊界框集合中每個預測邊界框屬於TP或者FP

如下面3張圖,我們要檢測人臉,藍色框表示GT,綠色框表示預測邊界框,旁邊的紅色數字爲置信度。

可以得出有3個GT(GT1,GT2,GT3),3個預測框(BBox1,BBox2, BBox3)。

  1. 我們按照置信度降序排序預測框,這裏的預測框正好是降序排序的。
  2. 對每張圖片中的預測框計算IoU,可以看出BBox1標記爲TP,BBox2標記爲FP,BBox3標記爲TP。
  3. 之後計算不同recall情況下precision值。前1個框,即BBox1,計算precision=TP/(TP+FP)=1/(1+0)=1,recall=TP/#GT=1/3。(#GT指的是測試集中所有GT數目,這裏即爲3)同理前2個框,即BBox1,BBox2,計算precision=1/(1+1)=0.5,recall=1/3。前3個框,即BBox1,BBox2,BBox3,計算precision=2/(2+1)=2/3,recall=2/3。我們就有了一組recall、precision值[(1/3, 1), (1/3, 0.5), (2/3, 2/3)]
  4. 繪製PR曲線如下圖,然後每個“峯值點”往左畫一條線段直到與上一個峯值點的垂直線相交。這樣畫出來的紅色線段與座標軸圍起來的面積就是AP值。這裏AP=(1/30)1+(2/31/3)2/3+(12/3)0=5/9=0.556AP=(1/3 - 0)*1 + (2/3 - 1/3)* 2/3 + (1 - 2/3)*0=5/9=0.556

按照如上方法計算其他所有類的AP,最後取平均值即爲mAP(mean Average Precision)。
mAP=i=1CAPiC mAP=\frac{\sum_{i=1}^{C}AP_i}{C}
其中CC表示總類別數目,APiAP_i表示第ii類的AP值。


三、例子(計算AP)

比如說我們的測試集中類A的GT有7個,經過目標檢測模型預測到了10個邊界框,經過上次排序及判斷操作,有如下結果:

預測邊界框 Confidence TP FP
Bbox1 0.9 1 0
Bbox2 0.9 1 0
Bbox3 0.8 0 1
Bbox4 0.7 0 1
Bbox5 0.7 0 1
Bbox6 0.7 1 0
Bbox7 0.7 0 1
Bbox8 0.7 0 1
Bbox9 0.7 1 0
Bbox10 0.7 1 0

按照confidence降序排序。從上表TP可以看出我們預測正確5個(TP=5),從FP看出預測錯誤5個(FP=5)。除了表中已預測到的5個GT,還有2個GT並未被預測出來(FN=2)。
接下來計算AP,計算前*個BBox得到的precision和recall:

預測邊界框 Rank TP FP Precision Recall
Bbox1 1 1 0 1/(1+0)=1 1/7=0.14
Bbox2 2 1 0 2/(2+0)=1 2/7=0.29
Bbox3 3 0 1 2/(2+1)=0.66 2/7=0.29
Bbox4 4 0 1 2/(2+2)=0.5 2/7=0.29
Bbox5 5 0 1 2/(2+3)=0.4 2/7=0.29
Bbox6 6 1 0 3/(3+3)=0.5 3/7=0.43
Bbox7 7 0 1 3/(3+4)=0.43 3/7=0.43
Bbox8 8 0 1 3/(3+5)=0.375 3/7=0.43
Bbox9 9 1 0 4/(4+5)=0.44 4/7=0.57
Bbox10 10 1 0 5/(5+5)=0.5 5/7=0.71

在計算precision和Recall時Rank*指的是前*個預測邊界框的TP和FP之和。
於是我們得到了一個recall閾值列表[0,0.14,0.29,0.43,0.57,0.71,1][0, 0.14, 0.29, 0.43, 0.57, 0.71, 1],爲recall閾值列表中的各值生成對應的precision列表,選擇recall>=recall>=閾值元素所對應的precision的最大值。爲此可得precision列表爲[1,1,1,0.5,0.5,0.5,0][1, 1, 1, 0.5, 0.5, 0.5, 0]。在這裏舉個計算的例子吧,比如找recall閾值列表中0.57所對應的precision,當recall>=0.57recall>=0.57時,由上表可得precision爲max{0.44,0.5}=0.5max\{0.44, 0.5\}=0.5,其他recall對應precision的選取同理。
有了這兩個列表就可以計算類A的AP了,AP=(0.140)1+(0.290.14)1+(0.430.29)0.5+(0.570.43)0.5+(0.710.57)0.5+(10.71)0=0.5AP = (0.14-0)*1+(0.29-0.14)*1+(0.43-0.29)*0.5+(0.57-0.43)*0.5+(0.71-0.57)*0.5+(1-0.71)*0=0.5
同樣可以通過繪製PR曲線計算線下面積,如下圖所示:

AP值即淺藍色圖形的面積,藍色折線爲recall、precision點。


參考資料

[1] 目標檢測評測指標mAP及計算[譯] (圖1引自該博客)
[2] 理解目標檢測當中的mAP (圖2-5引自該博客)
[3] 目標檢測中的mAP是什麼含義?——Wentao的回答 (例子整理自該回答)
[4] 理解IOU、precision、recall、AP、mAP的含義

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章