如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?
參考文章:深度學習-目標檢測評估指標P-R曲線、AP、mAP
文章目錄
- P-R曲線:
- AP計算:
下面通過具體例子說明。
首先用訓練好的模型得到所有測試樣本的confidence score,每一類(如car)的confidence score保存到一個文件中(如comp1_cls_test_car.txt)。假設共有20個測試樣本,每個的id,confidence score和ground truth label如下:??
ground truth label通過預測的bbox與ground truth的iou確定為正樣本或負樣本。
接下來對confidence score排序,得到:
P-R曲線:
我們得到top-5的結果,前score最高的前5個樣本,預測label為1,即:
此例中采用top-5評估,也可采用其他評估,如AP50,即當預測框與真實框的IoU值大于這個閾值時,該預測框才被認定為真陽性(True Positive, TP),反之就是假陽性(False Positive,FP)。
在這個例子中,true positives就是指第4和第2張圖片,false positives就是指第13,19,6張圖片。是相對于方框內的元素而言,在這個例子中,confidence score排在top-5之外的元素為false negatives和true negatives,即:
其中,false negatives是指第9,16,7,20張圖片,true negatives是指第1,18,5,15,10,17,12,14,8,11,3張圖片。
那么,這個例子中Precision=2/5=40%,意思是對于car這一類別,我們選定了5個樣本,其中正確的有2個,即準確率為40%;Recall=2/6=30%,意思是在所有測試樣本中,共有6個car,但是因為我們只召回了2個,所以召回率為30%。此時為下圖中第5個樣本點。同理圖中第一個樣本點:P=1,R=1/6,第二個樣本點,考慮前兩個樣本,P=1,R=2/6=1/3。。。
這個例子的precision-recall曲線如下:
實際多類別分類任務中,我們通常不滿足只通過top-5來衡量一個模型的好壞,而是需要知道從top-1到top-N(N是所有測試樣本個數,本文中為20)對應的precision和recall。顯然隨著我們選定的樣本越來也多,recall一定會越來越高,而precision整體上會呈下降趨勢。把recall當成橫坐標,precision當成縱坐標,即可得到常用的precision-recall曲線。
AP計算:
接下來說說AP的計算,此處參考的是PASCAL VOC CHALLENGE的2010年之前計算方法。首先設定一組閾值,[0, 0.1, 0.2, …, 1]。然后對于recall大于每一個閾值(比如recall>0.3),我們都會得到一個對應的最大precision。這樣,我們就計算出了11個precision。AP即為這11個precision的平均值。這種方法英文叫做11-point interpolated average precision。?
當然PASCAL VOC CHALLENGE自2010年后就換了另一種計算方法。新的計算方法假設這N個樣本中有M個正例,那么我們會得到M個recall值(1/M, 2/M, …, M/M),對于每個recall值r,我們可以計算出對應(r’ >= r)的最大precision,然后對這M個precision值取平均即得到最后的AP值。計算方法如下:?
相應的Precision-Recall曲線(這條曲線是單調遞減的)如下:?
AP衡量的是學出來的模型在每個類別上的好壞,mAP衡量的是學出的模型在所有類別上的好壞,得到AP后mAP的計算就變得很簡單了,就是取所有AP的平均值。
總結
以上是生活随笔為你收集整理的如何绘制深度学习-目标检测评估指标P-R(precision-recall)曲线?如何计算AP(average-precision)?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习目标检测中计算目标的AP(ave
- 下一篇: 20200207_Dontla_MBTI