參考:https://blog.csdn.net/hsqyc/article/details/81702437
什么是IoU
在目標檢測算法中,我們經常需要評價2個矩形框之間的相似性,直觀來看可以通過比較2個框的距離、重疊面積等計算得到相似性,而IoU指標恰好可以實現這樣的度量。簡而言之,IoU(intersection over union,交並比)是目標檢測算法中用來評價2個矩形框之間相似度的指標
IoU = 兩個矩形框相交的面積 / 兩個矩形框相並的面積,如下圖所示:
什么是TP TN FP FN
TP、TN、FP、FN即true positive, true negative, false positive, false negative的縮寫,positive和negative表示的是你預測得到的結果,預測為正類則為positive,預測為負類則為negative; true和false則表示你預測的結果和真實結果是否相同,相同則是true,不同則為false,如下圖:
什么是Precision(精確度)和Recall(召回率)
1)精確度-即查准率
即你模型判斷該圖片為正類,而該圖片也的確是正類的概率
正類的精確度就是指模型判斷為正類且真實類別也為正類的圖像數量/模型判斷為正類的圖像數量,衡量的是一個分類器分出來的正類的確是正類的概率,計算公式如下圖:
兩種極端情況就是,如果精度是100%,就代表所有分類器分出來的正類確實都是正類。如果精度是0%,就代表分類器分出來的正類沒一個是正類。
光是精確度還不能衡量分類器的好壞程度,比如50個正樣本和50個負樣本,我的分類器把49個正樣本和50個負樣本都分為負樣本,剩下一個正樣本分為正樣本,這樣我的精度也是100%,因為分類器分出來1個樣本為正類,且這個樣本分類正確,則1/1 = 1
所以還需要召回率
2)召回率-即查全率
即所有圖片中有5個正類,你的模型能夠將這5個圖片都正確判斷為正類,則召回率為100%
召回率是指模型判為正類且真實類別也是正類的圖像數量/真實類別是正類的圖像數量,衡量的是一個分類器能把所有的正類都找出來的能力,計算公式為:
兩種極端情況,如果召回率是100%,就代表所有的正類都被分類器分為正類。如果召回率是0%,就代表沒一個正類被分為正類
比如有10張圖,5張為正類,5張為負類,如果你僅查出TP=3,FN=2,TN=5,那么召回率就是3/5=60%;如果TP=5,FP=2,TN=3,那么召回率為5/5=100%
3)
但是有時候使用兩個指標不太好評價模型之間的好壞,因為可能出現模型A的精確度比模型B高,但是A的召回率比模型B低
解決該問題的辦法就是結合精確度和召回率計算得到另外一個指標:F1 score,計算公式如下,P表示precision,R表示recall:
簡單換算后可以得到:
什么是類別置信度:
分類器返回某個目標的類別置信度,即該目標屬於A的概率,屬於B的概率。即分類器最后softmax得到的結果
AP和mAP
在目標檢測算法中常用的評價指標是mAP(mean average precision),這是一個可以用來度量模型預測框類別和位置是否准確的指標。
在目標檢測領域常用的公開數據集PASCAL VOC中,有2種mAP計算方式:
- 一種是針對PASCAL VOL 2007數據集的mAP計算方式
- 另一種是針對PASCAL VOC 2012數據集的mAP計算方式
1)AP(average precision)值的計算:
AP就是得出每個類的檢測好壞的結果
含義和計算過程如下:
假設某輸入圖像中有兩個真實框:person和dog,模型輸出的預測框中預測類別為person的框有5個,預測類別是dog的框有3個,此時的預測框已經經過NMS后處理。
首先以預測類別為person的5個框為例,先對這5個框按照預測的類別置信度進行從大到小排序,然后這5個值依次和person類別的真實框計算IoU值。
假設IoU值大於預先設定的閾值(常設為0.5),那就說明這個預測框是對的,此時這個框就是TP(true positive);假設IoU值小於預先設定的閾值(常設為0.5),那就說明這個預測框是錯的,此時這個框就是FP(false positive)。注意如果這5個預測框中有2個預測框和同一個person真實框的IoU大於閾值,那么只有IOU最大的那個預測框才算是預測對了,另一個算是FP。在訓練時,先找最大iou的 如果最大iou的置信度大於你設定的置信度就可以用其來計算損失
假設圖像的真實框類別中不包含預測框類別,此時預測框類別是cat,但是圖像的真實框只有person和dog,那么也算該預測框預測錯了,為FP
FN(false negative)的計算可以通過圖像中真實框的數量間接計算得到,因為圖像中真實框的數量 = TP + FN
得到的person類精確度和召回率都是一個列表,列表的長度和預測類別為person的框相關,所以這里的精確度和召回率的列表的長度是5,因為預測類別為person的框有5個。因此根據這2個列表就可以在一個坐標系中畫出該類別的precision和recall曲線圖,如下圖所示,參考https://github.com/Cartucho/mAP:
按照PASCAL VOL 2007的mAP計算方式,在召回率坐標軸均勻選取11個點(0, 0.1, ..., 0.9, 1),然后計算在召回率大於0的所有點中,精確度的最大值是多少;計算在召回率大於0.1的所有點中,精確度的最大值是多少;一直計算到在召回率大於1時,精確度的最大值是多少。這樣我們最終得到11個精確度值,對這11個精確度求均值就得到AP了,因此AP中的A(average)就代表求精確度均值的過程
⚠️上面的圖表示的是PASCAL VOL 2012的mAP計算方式,即每個“峰值點”往左畫一條線段直到與上一個峰值點的垂直線相交。這樣畫出來的紅色線段與坐標軸Recall圍起來的面積就是AP值。
2)mAP的計算:
mAP就是得出多個類的檢測好壞的結果
假設分為兩個類:正類和負類,計算得到這兩個類AP之和然后除以2就等於mAP
為什么可以使用mAP來評價目標檢測的效果;
目標檢測的效果取決於預測框的位置和類別是否准確,從mAP的計算過程中可以看出通過計算預測框和真實框的IoU來判斷預測框是否准確預測到了位置信息,同時精確度和召回率指標的引用可以評價預測框的類別是否准確,因此mAP是目前目標檢測領域非常常用的評價指標