目標檢測mAP值計算

2021-09-25 08:16:55 字數 2255 閱讀 7267

tp(true positives)意思是「被分為正樣本,並且分對了」

tn(true negatives)意思是「被分為負樣本,而且分對了」

fp(false positives)意思是「被分為正樣本,但是分錯了」

fn(false negatives)意思是「被分為負樣本,但是分錯了」

按下圖來解釋,左半矩形是正樣本,右半矩形是負樣本。乙個2分類器,在圖上畫了個圓,分類器認為圓內是正樣本,圓外是負樣本。那麼左半圓分類器認為是正樣本,同時它確實是正樣本,那麼就是「被分為正樣本,並且分對了」即tp,左半矩形扣除左半圓的部分就是分類器認為它是負樣本,但是它本身卻是正樣本,就是「被分為負樣本,但是分錯了」即fn。右半圓分類器認為它是正樣本,但是本身卻是負樣本,那麼就是「被分為正樣本,但是分錯了」即fp。右半矩形扣除右半圓的部分就是分類器認為它是負樣本,同時它本身確實是負樣本,那麼就是「被分為負樣本,而且分對了」即tn

精度:p=t

ptp+

fpp = \frac

p=tp+f

ptp​

即分類器認為是正類並且確實是正類的部分佔所有分類器認為是正類的比例

召回率:r=t

ptp+

fnr = \frac

r=tp+f

ntp​

即分類器認為是正類並且確實是正類的部分佔所有確實是正類的比例

假設下面三張圖為測試資料集,我們需要計算人臉目標檢測的ap值,圖中藍色區域表示gt檢測框,綠色框表示**框,紅色表示檢測框的分類置信度。

首先我們計算每張圖的**框和gt框的iou,根據iou是否大於0.5來判斷該pre是屬於tp還是屬於fp。顯而易見,pre1是tp,pre2是fp,pre3是tp。

根據每個pre的置信度進行從高到低排序,這裡pre1、pre2、pre3置信度剛好就是從高到低。

首先,設定閾值為0.9,無視所有小於0.9的pre。那麼檢測器檢出的所有框pre即tp+fp=1,並且pre1是tp,那麼precision=1/1。因為所有的label=3,所以recall=1/3。這樣就得到一組p、r值。

然後,設定閾值為0.8,無視所有小於0.8的pre。那麼檢測器檢出的所有框pre即tp+fp=2,因為pre1是tp,pre2是fp,那麼precision=1/2=0.5。因為所有的label=3,所以recall=1/3=0.33。這樣就又得到一組p、r值。

再然後,設定閾值為0.7,無視所有小於0.7的pre。那麼檢測器檢出的所有框pre即tp+fp=3,因為pre1是tp,pre2是fp,pre3是tp,那麼precision=2/3=0.67。因為所有的label=3,所以recall=2/3=0.67。這樣就又得到一組p、r值。

根據上面3組pr值繪製pr曲線如下。然後每個「峰值點」往左畫一條線段直到與上乙個峰值點的垂直線相交。這樣畫出來的紅色線段與座標軸圍起來的面積就是ap值。

p=1∗

0.33

+0.67

∗0.33

≈0.55

ap=1∗0

.33+

0.67

∗0.3

3≈0.

55ap衡量的是對乙個類別檢測好壞,map就是對多個類別的檢測好壞。就是簡單粗暴的把所有類的ap值取平均就好了。比如有兩類,類a的ap值是0.5,類b的ap值是0.2,那麼map

=(0.5+

0.2)/2

=0.35

map=(0.5+0.2)/2=0.35

map=(0

.5+0

.2)/

2=0.

35

目標檢測計算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...

目標檢測學習(2)map計算

一 前言 二 tp tn fp fn 這4個值由以下圖就很好理解了 tp 實際為真,為真 tn 實際為假,為假 fp 實際為假,為真 fn 實際為真,為假 三 accuracy precision recall 準確率 accuracy tp tn tp tn fp fn 所有樣本中,對的概率 精確...

深度學習 目標檢測mAP計算及旋轉檢測IOU

這裡僅作簡要分析,原始碼位址 有些許改變 1.資料夾分為兩個,真實標籤及檢測標籤 兩個資料夾中的檔案均為txt檔案,每張對應乙個txt檔案,其中真值標籤,每一行乙個目標,類別名 座標值 其中檢測標籤,每一行乙個目標,類別名 置信度 座標值 1.將所有真值標籤讀取並儲存json檔案,字典資料有以下3個...