1. 程式人生 > >目標檢測中的AP和mAP

目標檢測中的AP和mAP

作者: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值,如果我們採用:

  1. 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
  2. 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平均值就好了