首先作為目標檢測的重要通用指標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就是所有正確的條目有多少檢測出來...