上次我寫了一篇關于mAP計算的文章,發布之后得到很多網友的反饋,有感于此,覺得有必要重寫一篇,目的有兩個,一個是告訴大家你們的意見我收到了,另外一個是細化了我對mAP的計算過程的理解,如有廖誤懇請指正,本人一定虛心接受!歡迎繼續拍磚!
對象檢測評價參數解釋
對象檢測評價是針對對象檢測系統性能指標的整體性能評估,評價指標包括
-
正確檢測率
-
錯誤檢測率
-
漏檢率
等常見指標,更廣義的評價還包括檢測率除以精度與敏感性。檢測對象的評價多數是基于某測試數據集的,通常稱為SUT(System Under Test), 我們在訓練時候使用的數據通常被稱為GT Sytem(是帶有正確標準框的數據)。評價對象檢測系統性能經常需要用到術語與解釋如下:
FP –False Positive是指一個對象出現在SUT中但是沒有出現在GT中
TP – True Positive是指一個對象既出現在SUT也出現在GT中
FN – False negative是真一個對象出現在GT中但是沒有出現在SUT
TN – True negative是指對象在SUT與GT中均沒有出現
CGT – complete ground truth 是指總的GT數目
二:計算AP與mAP
在計算AP過程中最重要的是生成Precision-Recall Curve (精確度-召回率曲線),它是計算mAP最重要的一步動作。下圖中有六個book的標注框(GT)
藍色矩形框標注信息如下:
book 439 157 556 241
book 437 246 518 351
book 515 306 595 375
book 407 386 531 476
book 544 419 621 476
book 609 297 636 392
紅色矩形框算法預測結果如下:
有八個預測框,根據得分從高到低的排序如下:
book 0.619459 413 390 515 459
book 0.462608 518 314 603 369
book 0.460851 429 219 528 247
book 0.382881 403 384 517 461
book 0.369369 405 429 519 470
book 0.298196 592 310 634 388
book 0.272826 433 272 499 341
book 0.269833 433 260 506 336
其中第二列是預測邊界框(BB)對book得分
判斷TP與FP代碼如下
ifovmax>=min_overlap:
if"difficult"notingt_match:
ifnotbool(gt_match["used"]):
#truepositive
tp[idx]=1
gt_match["used"]=True
count_true_positives[class_name]+=1
#updatethe".json"file
withopen(gt_file,'w')asf:
f.write(json.dumps(ground_truth_data))
ifshow_animation:
status="MATCH!"
else:
#falsepositive(multipledetection)
fp[idx]=1
ifshow_animation:
status="REPEATEDMATCH!"
else:
#falsepositive
fp[idx]=1
ifovmax>0:
status="INSUFFICIENTOVERLAP"
計算累計TP與FP的代碼如下:
foridx,valinenumerate(fp):
fp[idx]+=cumsum
cumsum+=val
cumsum=0
foridx,valinenumerate(tp):
tp[idx]+=cumsum
cumsum+=val
積分求解
Precision與Recall數據的取值范圍都在0~1之間,以Recall為X軸位、以Precision為Y軸可以繪制PR曲線。在繪制之前首先需要完成插值操作
首先對精度數據首尾添加0然后進行最大值插值取值,得到mpre
【1.0, 1.0, 1.0, 0.66, 0.5, 0.5, 0.5, 0.5, 0.5, 0】
對召回數據首尾添加0與1得到mrec
【0, 0.166, 0.33, 0.33, 0.33, 0.33, 0.5, 0.5, 0.66, 1.0】
進行尋找變化的梯度得到index(1、2、6、8、9),對曲線積分求解最終的AP為:
loopindex(1、2、6、8、9)
AP=+((mrec[index]-mrec[index-1])*mpre[index])
returnAP
上面的解釋是AP計算方法,VOC2007對計算出來結果,根據原始取得的recall進行最大插值為11點的方式來計算AP,圖示如下:
另外一種方式被稱為全插值方法,同樣是基于最大值進行插值,得到曲線顯示如下
通過插值之后進行AP計算得到的結果會跟積分直接求解的結果不同,當前PASCAL VOC都是基于全插值方式來計算AP,最終根據每個類別的AP求和之后除以總的檢測類別數目就得到mAP值。
mAP=sum(AP)/N
其中N表示總的類別數目
-
檢測系統
+關注
關注
3文章
960瀏覽量
43170 -
MAP
+關注
關注
0文章
49瀏覽量
15180 -
數據集
+關注
關注
4文章
1209瀏覽量
24835
原文標題:詳解對象檢測網絡性能評價指標mAP計算
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論