目標檢測模型的好壞通常用mAP和FPS來評價,一個代表准確度,一個代表速度。
mAP的評價指標確切的說無模型無關。
mAP--mean Average Precision.
我們用Precision表示模型預測的精度,即模型預測的所有正例中真正正例的比例
用recall表示模型的召回率,即模型預測的真正正例中占所有正例的比例。文字描述比較費勁。
畫一個圖就好理解了。

Precision = TP / (TP+ FN) 預測正確的框 / 所有的預測的框
Recall = TP / (TP+ FN) 預測正確的框 / 所有的框
在目標檢測如何判斷預測正確呢,通常計算預測框與真實框的iou,一般設定閾值為0.5, 即大於0.5的判斷為預測正確(TP)
因為一個GT只能對應一個預測框,那么只有與GT框 iou最大的,且大於0.5的為TP,其余均為FP 。
舉一個例子,例子來源知乎AICV的回答:

預測框為紅色,GT框為綠色,圖片中的百分數為置信度,置信度為88%的框與GT框iou小於0.5,所以這個預測框為FP,依次可以類推出所有的預測框是TP or FP

將置信度從大到小排列

求出所有的TP數量和FP數量,求出不同置信度下的Precision和Recall,繪制PR曲線,橫坐標為Recall,縱坐標為Precision

計算PR曲線下的面積,即為所求的AP值
如何計算面積呢?
在VOC2012之前,只需要選取當Recall >= 0, 0.1, 0.2, ..., 1共11個點時的Precision最大值,然后AP就是這11個Precision的平均值。
需求根據之前的PR曲線插值求出Recall 分別等於0.1,0.2,0.3.。。。1時的Precision值.

在VOC2012之后,需要針對每一個不同的Recall值(包括0和1),選取其大於等於這些Recall值時的Precision最大值,
然后計算PR曲線下面積作為AP值。
( 0.0666-0)*1 + (0.1333-0.0666)*(0.6666)+ (0.2-0.1333)*(0.4285)+(0.2666-0.2)*(0.4285)+(0.3333-0.2666)*(0.4285)
+(0.4-0.3333)*(0.4285)+ (0.46666-0.4)*(0.3043)+(1-0.46666)* 0 = 0.245627808
最終求得AP值為24.56%
要計算 mAP,就把所有類別的 AP 計算出來,然后求取平均即可。
