mAP是mean of Average Precision的縮寫,意思是平均精確度(average precision)的平均(mean),是object detection中模型效能的衡量標準。object detection中,因為有物體定位框,分類中的accuracy並不適用,因此才提出了object detection獨有的mAP指標,但這也導致mAP沒有分類中的accuracy那麼直觀。但也沒有那麼複雜,本文將詳細解釋mAP的計算方法。首先,簡單回顧幾個基礎概念。
查準率(Precision)和查全率(recall)
查準率(Precision)是指在所有預測為正例中真正例的比率,也即預測的準確性。 查全率(Recall)是指在所有正例中被正確預測的比率,也即預測正確的覆蓋率。 一個樣本模型預測按正確與否分類如下:
則,查準率和查全率計算公式:
交併比IoU(Intersection over union)
交併比IoU衡量的是兩個區域的重疊程度,是兩個區域重疊部分面積佔二者總面積(重疊部分只計算一次)的比例。如下圖,兩個矩形框的IoU是交叉面積(中間圖片紅色部分)與合併面積(右圖紅色部分)面積之比。
這裡需要注意的是IoU=0.5,並不意味著每個框剛好有50%與另外一個框交叉部分,而是每個框大約有2/3被交叉。有點反直覺。
我當初看到IoU,非常疑惑為啥不按交叉面積佔每個框的比例(也即IoA Intersection over Area)取大值計算重疊度,更符合直覺。其實這種演算法只反應小圖片的被遮蓋度,並不能反映互相之間的重疊度,一般情況下不可取。如下圖,橙色部分較小,IoA很大,但對於藍色部分,IoA就很小,只按橙色取IoA顯然有失偏駁。
單類別AP(Average Precision)的計算
物體檢測中的每一個預測結果包含兩部分,預測框(bounding box)和置信概率(Pc)。bounding box通常以矩形預測框的左上角和右下角的座標表示,即x_min, y_min, x_max, y_max,如下圖。置信概率Pc有兩層意思,一是所預測bounding box的類別,二是這個類別的置信概率,如下圖中的P_dog=0.88,代表預測綠色框為dog,並且置信概率為88%。
那麼,怎麼才叫預測正確呢?顯而易見的,必須滿足兩個條件:
- 類別正確且置信度大於一定閥值(P_threshold)
- 預測框與真實框(ground truth)的IoU大於一定閥值(IoU_threshold) 如下圖,假如P_threshold=0.6,IoU_threshold=0.5,則綠色框預測正確,記為True Positive。
而在衡量模型效能時,IoU_threshold先取一個定值,然後綜合考慮各種P_threshold取值時的效能,進而得到一個與P_threshold選定無關的模型效能衡量標準。
AP是計算單類別的模型平均準確度。
假如目標類別為Dog,測試了5張照片後,得到了Dog的10個預測結果,選定IoU_threshold=0.5,然後按confidence從高到低排序,如下(BB表示BoundingBox序號,IoU>=0.5時GT=1):
Rank | BB | confidence | GT
----------------------------
1 | BB1 | 0.9 | 1
----------------------------
2 | BB2 | 0.8 | 1
----------------------------
3 | BB1 | 0.8 | 1
----------------------------
4 | BB3 | 0.5 | 0
----------------------------
5 | BB4 | 0.4 | 0
----------------------------
6 | BB5 | 0.4 | 1
----------------------------
7 | BB6 | 0.3 | 0
----------------------------
8 | BB7 | 0.2 | 0
----------------------------
9 | BB8 | 0.1 | 1
----------------------------
10 | BB9 | 0.1 | 1
----------------------------
複製程式碼
因此,我們有 TP=5 (BB1, BB2, BB5, BB8, BB9),FP=5 (重複檢測到的BB1也算FP)。除了表裡檢測到的5個GT以外,我們還有2個GT沒被檢測到,因此: FN = 2,GT=7.
然後依次從上到下設定對應的rank為正反分界線,此rank之前(包含此rank)的預測為正,此rank之後的預測為反,然後計算對應的Precision和Recall:
rank=1 precision=1.00 and recall=0.14
--------------------------------------
rank=2 precision=1.00 and recall=0.29
--------------------------------------
rank=3 precision=0.66 and recall=0.29
--------------------------------------
rank=4 precision=0.50 and recall=0.29
--------------------------------------
rank=5 precision=0.40 and recall=0.29
--------------------------------------
rank=6 precision=0.50 and recall=0.43
--------------------------------------
rank=7 precision=0.43 and recall=0.43
--------------------------------------
rank=8 precision=0.38 and recall=0.43
--------------------------------------
rank=9 precision=0.44 and recall=0.57
--------------------------------------
rank=10 precision=0.50 and recall=0.71
--------------------------------------
複製程式碼
比如rank=4時,TP=2 (BB1, BB2),則
Precision=2/4=0.5,Recall=TP/GT=2/7=0.29
複製程式碼
可以看出,隨著預測正反分割線的向下移動,Recall穩步變大,Precision整體減小,區域性上下跳動,PR曲線如下圖:
AP(Average Precision)的計算基本等同於計算PR曲線下的面積,但略有不同。需要先將PR曲線平滑化。
方法是,查全率r對應的查準率p,取查全率大於等於r時最大的查準率p。即,
平滑後的曲線如下圖中的綠色曲線:
對於AP(Average Precision)的計算有兩種方法:
- VOC2010之前的方法
AP =(平滑後PR曲線上,Recall分別等於0,0.1,0.2,… , 1.0等11處Precision的平均值)。
這裡則有:
AP=(1 + 1 + 1 + 0.5 + 0.5 + 0.5 + 0.5 + 0.5 + 0 + 0 + 0) / 11 = 0.5
複製程式碼
- VOC2010及以後的方法
AP=平滑後PR曲線下包圍的面積 這裡則有:
AP = (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
複製程式碼
這裡兩種方案得出的AP值相同,但通常是不同的。
需要注意的是上述AP的計算並沒有顯式設定P_threshold,而是通過從上到下依次指定每一個rank為正反分界線來變相的反映P_threshold不同取值。
mAP的計算
上述計算的AP只是針對dog這個類別,物體檢測通常有多個類別,模型效能肯定是多個類別準度的綜合度量。
- VOC資料集中的mAP VOC資料集中的mAP計算的是IoU_threshold=0.5時各個類別AP的均值。
- COCO資料集中的mAP 檢測是否正確有兩個超引數,P_threshold和IoU_threshold。AP是固定了IoU_threshold,再綜合考慮各個P_threshold下的模型平均準確度。 VOC認為IoU_threshold固定一個單值0.5即可,COCO則認為固定了IoU_threshold的取值,無法衡量IoU_threshold對模型效能的影響。
比如, A模型在IoU_threshold=0.5時,mAP=0.4。 B模型在IoU_threshold=0.7時,mAP同樣為0.4。 依據VOC的標準,AB模型的效能一樣,但顯然B模型的框更準,效能更優。 COCO在VOC標準的基礎上,取IoU_threshold=0.5,0.55, 0.6,… , 0.95時各個mAP的均值。
下圖給出了當前mAP最佳結果。
摘自文章Bottom-up Object Detection by Grouping Extreme and Center PointsmAP的不足
mAP雖然綜合考慮了P_threshold和IoU_threshold各個取值時的平均模型準確度,使得模型優劣的評判標準不隨P_threshold和IoU_threshold取值變化而變化,但在工程應用中,物體是否被正確檢測到,還是需要具體的P_threshold和IoU_threshold,工程上更關心在固定的P_threshold和IoU_threshold下的準確率。這就需要我們自己實現與具體應用相符的評判標準。
參考文章