深度學習中Map的概念

mAP定義及相關概念

P

precision,即 準確率 。

解釋:10張圖片,每張都有狗、貓,識別到裏面有狗也有貓,兩者皆有,準確率就高

R

recall,即 召回率 。

解釋:10張圖片,每張都有狗、貓,識別到有狗,召回率就高

  • mAP: mean Average Precision, 即各類別AP的平均值
  • AP: PR曲線下面積,後文會詳細講解
  • PR曲線: Precision-Recall曲線
  • Precision: TP / (TP + FP)
  • Recall: TP / (TP + FN)
  • TP: IoU>0.5的檢測框數量(同一Ground Truth只計算一次)
  • FP: IoU<=0.5的檢測框,或者是檢測到同一個GT的多餘檢測框的數量
  • FN: 沒有檢測到的GT的數量

圖中的曲線C就是一條P-R曲線,P表示縱軸的查準率precision,R表示橫軸的召回率或稱爲查全率recall。P-R曲線下的面積可以用於評估該曲線對應的模型的能力,也就是說比較2個目標檢測模型哪個更好,可以用P-R曲線面積來比較,面積越大模型越好。然而可能是因爲這個面積並不好計算,所以定義了公式(1)來計算出一個叫AP的東西,反正這個東西也能體現出precision和recall對模型能力的綜合影響。

從公式(2)可以知曉,Pinterpo(r)表示所有大於指定召回率r的召回率rhat所對應的的p的最大值。大於某個r的rhat有很多,我們要找到這些rhat中所對應的p是最大的那個,然後返回這個p。公式(1)中規定了r會從0-1.0以0.1爲步長取11個值,然後將這11個r對應的11個p累加求算術平均值就得到了AP。所以我們要先得到一組rhat和p,這需要我們先了解recall和precision是如何計算的。

我們先來看看P(precision)和R(recall)的計算公式:
precision = TP / (TP+FP)
recall = TP / (TP+FN)

TP是檢測對了的正樣本,FP是檢測錯了的正樣本,FN是漏檢的正樣本。

對於目標檢測模型一般最後都會輸出一個置信度(如果樣本圖片中有不止一個目標,本例中只選擇貓類別的置信度即可),所以可以設置一個置信度閾值,比如0.6,那麼高於0.6的就認爲該樣本被檢測爲了正樣本(即檢測爲貓),這樣我們會得到0.6閾值下的一組正樣本。

然後在這組正樣本的基礎上,設定一個IoU的閾值,其值爲0.5(意思是檢測爲貓的目標的預測邊界框和真實邊界框的交併比要大於0.5),大於該閾值的認爲是TP,其它的認爲是FP。然後用測試樣本中真實的正樣本數量減去TP,就得到了FN。

這樣,在置信度閾值爲0.6的情況下,我們就得到了一對P(precision)和R(recall),接着我們取不同的置信度閾值,得到更多的P-R對,然後根據公式(2)找到所有大於指定召回率r的召回率rhat所對應的的p的最大值(採用這種方法是爲了保證P-R曲線是單調遞減的,避免搖擺),作爲當前指定召回率r條件下的最大查準率p,然後根據公式(1)計算出AP。這個AP就是貓這個類別的AP,接着我們可以計算其它類別的AP,然後對這些AP求算術平均值,就得到了mAP。

瞭解了mAP之後,我們就容易理解爲什麼目標檢測模型的度量指標不能像圖像分類模型那樣直接計算一遍precision和recall,因爲目標檢測任務中會包含多個類別的目標,並且除了給目標分類,還要預測目標的邊界框,所以要加入IoU的概念,並考慮多個類別,而mAP就是在考慮了IoU和多類別之後計算出的度量指標。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章