影象分類任務通常用accuracy來衡量模型的準確率,對於目標檢測任務,比如測試集上的所有一共有1000個object(這裡的object不是的數量,因為一張中可能包含若干個object),兩個模型都正確檢測出了900個object(iou>規定的閾值)。與影象分類任務不同的是,目標檢測因為可能出現重複檢測的情況,所以不是乙個n to n的問題。也就不能簡單用分類任務的accuracy來衡量模型效能,因為模型a有可能是**了2000個結果才中了900個,而模型b可能只**了1200個結果。模型b的效能顯然要好於a,因為模型a更像是廣撒網,誤檢測的概率比較高。想象一下如果將模型a用在自動駕駛的汽車上,出現很多誤檢測的情況對汽車的安全性和舒適性都有很大影響。
那在目標檢測任務中,應該怎樣衡量模型的效能?其中乙個標準就是資訊檢索那樣,不僅要衡量檢測出正確目標的數量,還應該評價模型是否能以較高的precision檢測出目標。也就是在某個類別下的檢測,在檢測出正確目標之前,是不是出現了很多判斷失誤。ap越高,說明檢測失誤越少。對於所有類別的ap求平均就得到map了。
(1)voc2007的計算方法:
在計算ap時,首先要把結果按照置信度排序,公式如下:
(2)voc2010的計算方法:
比起07年,10年以後的新方法是取所有真實的recall值,按照07年的方法得到所有recall/precision資料點以後,計算recall/precision曲線下的面積:
舉乙個例子具體說明:
對於aeroplane類別,我們有以下輸出(bb表示bounding box序號,iou>0.5時gt=1):
bb | confidence | gt
----------------------
bb1 | 0.9 | 1
----------------------
bb2 | 0.9 | 1
----------------------
bb1 | 0.8 | 1
----------------------
bb3 | 0.7 | 0
----------------------
bb4 | 0.7 | 0
----------------------
bb5 | 0.7 | 1
----------------------
bb6 | 0.7 | 0
----------------------
bb7 | 0.7 | 0
----------------------
bb8 | 0.7 | 1
----------------------
bb9 | 0.7 | 1
----------------------
因此,我們有 tp=5 (bb1, bb2, bb5, bb8, bb9), fp=5 (重複檢測到的bb1也算fp)。除了表裡檢測到的5個gt以外,我們還有2個gt沒被檢測到,因此: fn = 2. 這時我們就可以按照confidence的順序給出各處的pr值,如下:
(1)07年的方法:我們選取recall >=的11處percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0。ap = 5.5 / 11 = 0.5
(2)voc2010及以後的方法,對於recall >= ,我們選取此時percision的最大值:1, 1, 1, 0.5, 0.5, 0.5, 0。計算recall/precision下的面積:ap = (0.14-0)x1 + (0.29-0.14)x1 + (0.43-0.29)x0.5 + (0.57-0.43)x0.5 + (0.71-0.57)x0.5 + (1-0.71)x0 = 0.5
計算出每個類別的ap以後,對於所有類別的ap取均值就得到map了。
目標檢測計算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...
目標檢測演算法map 目標檢測的指標AP與mAP詳解
上一章 機器學習回歸模型評價指標 mae,mse,mape及 實現 主要講述了mae,mse,mape的概念以及 實現,本章講述目標檢測的指標ap與map。ap和map是影象分類任務中的評價方法.舉例說明 首先用訓練好的模型得到所有測試樣本的confidence score,每一類 如car 的co...
目標檢測mAP值計算
tp true positives 意思是 被分為正樣本,並且分對了 tn true negatives 意思是 被分為負樣本,而且分對了 fp false positives 意思是 被分為正樣本,但是分錯了 fn false negatives 意思是 被分為負樣本,但是分錯了 按下圖來解釋,左...