目標檢測中的AP和mAP
阿新 • • 發佈:2018-12-13
作者:Wentao
連結:https://www.zhihu.com/question/53405779/answer/419532990
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
mAP定義及相關概念
- mAP: mean Average Precision, 即各類別AP的平均值
- AP: PR曲線下面積,後文會詳細講解
- PR曲線: Precision-Recall曲線
- Precision: TP / (TP + FP)
- Recall: TP / (TP + FN)
- TP: IoU>0.5的檢測框數量(同一Ground Truth只計算一次)
- FP: IoU<=0.5的檢測框,或者是檢測到同一個GT的多餘檢測框的數量
- FN: 沒有檢測到的GT的數量
mAP的具體計算
由前面定義,我們可以知道,要計算mAP必須先繪出各類別PR曲線,計算出AP。而如何取樣PR曲線,VOC採用過兩種不同方法。參見:The PASCAL Visual Object Classes Challenge 2012 (VOC2012) Development Kit
在VOC2010以前,只需要選取當Recall >= 0, 0.1, 0.2, ..., 1共11個點時的Precision最大值,然後AP就是這11個Precision的平均值。
在VOC2010及以後,需要針對每一個不同的Recall值(包括0和1),選取其大於等於這些Recall值時的Precision最大值,然後計算PR曲線下面積作為AP值。
mAP計算示例
假設,對於Aeroplane
類別,我們網路有以下輸出(BB表示BoundingBox序號,IoU>0.5時GT=1):
BB | confidence | GT ---------------------- BB1 | 0.9 | 1 ---------------------- BB2 | 0.9 | 1 ---------------------- BB1 | 0.8 | 1 ---------------------- BB3 | 0.7 | 0 ---------------------- BB4 | 0.7 | 0 ---------------------- BB5 | 0.7 | 1 ---------------------- BB6 | 0.7 | 0 ---------------------- BB7 | 0.7 | 0 ---------------------- BB8 | 0.7 | 1 ---------------------- BB9 | 0.7 | 1 ----------------------
因此,我們有 TP=5 (BB1, BB2, BB5, BB8, BB9), FP=5 (重複檢測到的BB1也算FP)。除了表裡檢測到的5個GT以外,我們還有2個GT沒被檢測到,因此: FN = 2. 這時我們就可以按照Confidence的順序給出各處的PR值,如下:
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
----------
對於上述PR值,如果我們採用:
- VOC2010之前的方法,我們選取Recall >= 0, 0.1, ..., 1的11處Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0。此時
Aeroplane
類別的 AP = 5.5 / 11 = 0.5 - VOC2010及以後的方法,對於Recall >= 0, 0.14, 0.29, 0.43, 0.57, 0.71, 1,我們選取此時Percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0。此時
Aeroplane
類別的 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
mAP就是對每一個類別都計算出AP然後再計算AP平均值就好了