在目標檢測算法(如Faster RCNN, YOLO ,SSD)中mAP常做為一種基准來衡量算法的精確度好壞。
mAP的本質其實是多類檢測中各類別最大召回率(recall)的一個平均值
計算mAP之前我們先要了解Precision和Recall也就是精確率和召回率。
精確率主要衡量模型做出預測的精准度,也就是TP在TP與FP和中的占比率
召回率主要用來衡量模型對positives的檢測程度,也就是TP在TP與FN中的占比率
下面我們通過一個例子來講一下AP (average precision)
比如在一副圖片中我們總共有5個目標,首先我們根據預測的confidence對預測進行排序,假設在前四的預測中我們有2個正確(IoU > 0.5)的。
所以對前四的precision和recall
Precision = 2/4 = 0.5
Recall = 2/5 = 0.4
現在假設我們對於一個實驗結果TOP10的Precision和Recall有如下表:
隨着recall從0到1之間的提升,AP可以由計算十一個不同recall階層最大precision的評價值而得到
進一步解釋;
p_interp(r) 是超過r的recall中對應的最大precision值,例如rank6中recall是0.6
那么p_interp(0.6)就是大於0.6的所有recall中對應的最大的precision的值,對應上表我們得到
P(0.6) = max(0.5,0.57,0.5,0.44,0.5)= 0.57
所以AP即0-1的p_interp(r)的均值
=(1.0*5 + 0.57*4 + 0.5*2)/ 11
而mAP則是真的不同類別的AP的均值
參考:https://medium.com/@jonathan_hui/map-mean-average-precision-for-object-detection-45c121a31173