mAP定義及相關概念
- mAP: mean Average Precision, 即各類別AP的平均值
- AP: PR曲線下面積,平均精度,在不同recall下的最高precision的均值(一般會對各類別分別計算各自的AP)。
- PR曲線: Precision-Recall曲線
- Precision: TP / (TP + FP)
- Recall: TP / (TP + FN)
- TP: IoU>0.5的檢測框數量(同一Ground Truth只計算一次)
- FP: IoU<=0.5的檢測框,或者是檢測到同一個GT的多余檢測框的數量
- FN: 沒有檢測到的GT的數量
- IoU(intersection of union)預測框和真實值的交並比
TP (True Positive):一個正確的檢測,檢測的IOU ≥ threshold。即預測的邊界框(bounding box)中分類正確且邊界框坐標正確的數量。
FP (False Positive):一個錯誤的檢測,檢測的IOU < threshold。即預測的邊界框中分類錯誤或者邊界框坐標不達標的數量,即預測出的所有邊界框中除去預測正確的邊界框,剩下的邊界框的數量。
FN (False Negative):一個沒有被檢測出來的ground truth。所有沒有預測到的邊界框的數量,即正確的邊界框(ground truth)中除去被預測正確的邊界框,剩下的邊界框的數量。
Precision (精確率):「Precision is the ability of a model to identify only the relevant objects」,精確率是模型只找到相關目標的能力,等於TP/(TP+FP)。即模型給出的所有預測結果中命中真實目標的比例。
Recall (召回率):「Recall is the ability of a model to find all the relevant cases (all ground truth bounding boxes)」,召回率是模型找到所有相關目標的能力,等於TP/(TP+FN)。即模型給出的預測結果最多能覆蓋多少真實目標。
P-R 曲線

AP就是計算曲線下的面積,mAP就是計算各種分類的平均面積。因此曲線下的面積越大,檢測效果越好。
對於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
一般來說,對於多分類目標檢測的任務,會分別計算每個類別的TP、FP、FN數量,進一步計算每個類別的Precision、Recall。基於numpy的實現代碼見:https://github.com/Cartucho/mAP https://github.com/facebookresearch/Detectron/blob/master/detectron/datasets/voc_eval.py
