目標檢測之mAP指標筆記

2021-09-06 10:38:45 字數 1462 閱讀 5007

首先作為目標檢測的重要通用指標map,用於衡量演算法模型對於資料集中指定目標進行檢測的準確程度,這個準確程度有兩層含義:第乙個指分類的精確程度(pricision);第二個指**框的準確程度(iou)。

一般理解map需要先理解什麼是pricision,什麼是recall,這個可以看文末的部落格,有很生動的例子,而且其**是基於檢索模型的metric,根據不同的查詢結果(多個rank),不同的query序列的pr曲線進行計算得來。

目標檢測的map計算,是將模型的輸出(被認為是乙個包含分類結果,confidence置信度,與目標框座標的rank list)的所有判斷為正例的精確度(ap),進行多目標的平均,即map。

計算map的python**:

def

voc_ap

(self, rec, prec, use_07_metric=

true):

if use_07_metric:

ap =0.

# 2023年以前按recall等間隔取11個不同點處的精度值做平均(0., 0.1, 0.2, …, 0.9, 1.0)

for t in np.arange(0.

,1.1

,0.1):

if np.

sum(rec >= t)==0

: p =

0else

:# 取最大值等價於2010以後先計算包絡線的操作,保證precise非減

p = np.

max(prec[rec >= t]

) ap = ap + p /11.

else

:# 2023年以後取所有不同的recall對應的點處的精度值做平均

mrec = np.concatenate(([

0.], rec,[1

.]))

mpre = np.concatenate(([

0.], prec,[0

.]))

# 計算包絡線,從後往前取最大保證precise非減

for i in

range

(mpre.size -1,

0,-1

):mpre[i -1]

= np.maximum(mpre[i -1]

, mpre[i]

)# 找出所有檢測結果中recall不同的點

i = np.where(mrec[1:

]!= mrec[:-

1])[

0]# and sum (\delta recall) * prec

# 用recall的間隔對精度作加權平均

ap = np.

sum(

(mrec[i +1]

- mrec[i]

)* mpre[i +1]

)return ap

內容通過閱讀以下文章進行總結:

目標檢測演算法map 目標檢測的指標AP與mAP詳解

上一章 機器學習回歸模型評價指標 mae,mse,mape及 實現 主要講述了mae,mse,mape的概念以及 實現,本章講述目標檢測的指標ap與map。ap和map是影象分類任務中的評價方法.舉例說明 首先用訓練好的模型得到所有測試樣本的confidence score,每一類 如car 的co...

目標檢測計算mAP

參考1 pascal voc從2007開始用interpolated法計算map coco的map低的原因 coco資料集結果評估 ssd計算map faster r cnn計算map coco資料annotation內容,bbox是 x,y,width,height 畫pr曲線 使用cocoapi...

目標檢測 指標

查準率 precision 查準率就是在 中的正例中為正例的比重 precision tp tp fp 查全率 recall 查全率是所有的正例有被檢測出來的比例 recall tp tp fn 簡單理解 precision就是檢索出的條目有多少是準確的,recall就是所有正確的條目有多少檢測出來...