使用不同的性能指標對算法進行評價往往會有不同的結果,也就是說模型的好壞是相對的。方法的好壞不僅取決於算法和數據,還決定於任務的需求。因此,選取一個合理的模型評價指標是非常有必要的。這里主要探討一下圖像處理中對object檢測的評價方法。其中包括Precision&Recall,IOU,AP,MAP。
Precision&Recall
准確率Precision:
預測結果中,有多少是真的正(找出來的對的比例)
召回率Recall:
所有正樣本中,你究竟預測對了多少(找出來了幾個)
為了方便理解,我們用圖來進行示意:
IoU (Intersection over union):
AP(Average Precision) :
AP字面上可以理解為數據集的平均精度。也可以看作在precision-recall曲線下區域的面積。
即橙色曲線下的面積。
實際上,為了更好的可視化,我們發現在召回值(0、0.1、0.2、……、0.9和1.0)的右側有最高的精度值(綠色曲線)。
AP(平均精度)是這11個recall-level的最高精度的平均值。這接近於求出綠色曲線下的總面積,然后除以11。
舉個例子:
則AP=(5✖1+4✖0.57+1✖0.5)/11。
實例級下的AP計算:
在一個圖像數據集中,我們首先要計算出每個instance的precision(i),其中i為每幅圖像的instance個數,則每幅圖像的精度值為(1/i)✖Σprecision(i)。假如驗證集中有N個圖像。那么我們可以得到N個精度值,計算這N個精度值的平均值,得到的就是該類的平均精度:
即每幅圖像平局精度值的和除以數據集中圖像的數量。
MAP=所有類別的平均精度求和除以所有類別,即數據集中所有類的平均精度的平均值。但是由於實例級沒有類別,所以不需要求MAP。
對於APr的理解:
在MS coco數據集的論文中提到了APr的評價指標。對於COCO, AP是多個IoU的平均值(考慮正匹配的最小IoU)。AP@ [0.5:0.05:0.95]對應於IoU在0.5 - 0.95之間的平均AP,步長為0.05。AP是在N個類別中超過10個級的IOU的平均值(AP@@ [0.5:0.05:0.95]表示從0.5到0.95,步長為0.05)。
那么APr@0.5就表示在IOU的閾值=0.5時的AP,APr@0.7就表示在IOU的閾值=0.7時的AP。
詳細的說,求解APr@0.5時,首先計算IOU,把每個實例的IOU求出來,把IOU小於0.5的作為False,IOU大於0.5的作為True。把True的instances的精度求解出來然后除以總共的instance數量N(true+False),這樣就能得到APr@0.5的值了。
這么在同一模型下APr@0.5的值大於APr@0.7也就能理解了。雖然APr@0.7在單個instance上的精度是大於APr@0.5的,但是由於APr@0.7的instances數量要比APr@0.5少,而分母所除的圖片總數是一樣的,因此APr@0.7的值總體來講要比APr@0.5的值下降一些。