一、目標檢測之性能指標
對於目標檢測,我們從兩個方向來進行評估,一方面是:檢測精度,也就是檢測的准確程度,另一方面是檢測速度,也就是返回檢測結果的快慢。
1.1檢測精度:
- Precision(准確率,精度), Recall(召回率), F1 score(精確率和召回率的調和平均數,最大為1,最小為0。)
- loU(Intersection over Union)(交並比)
- P-R curve(Precision-Recall curve)(精度召回曲線)
- AP(Average Precision)(平均正確率)
- mAP(mean Average Precision)(平均精度均值)
1.1.1 Precision, Recall, F1 score
我們將預測情況與實際情況作為兩個維度進行考慮,其中預測會有兩種結果,也即為Positive(肯定的)與Negative(否定的);同時實際情況也分為兩種,即為True(是)或False(否),分別將兩個維度下的四種結果進行兩兩疊加即得下列的混淆矩陣:
在這個矩陣中,第一位T/F:表示預測的對錯,第二位P/N:表示預測的結果。
若假設我們對蘋果、香蕉、西瓜進行訓練和預測,
那么由此,就可以得出以下分析:
TP:TP即為預測正確,且預測結果與真實結果一致。
舉例說明就是,當前真實值為蘋果,由於模型收斂的還算不錯,正確預測為蘋果,
且預測結果與真實值都是蘋果,這就是我們期望得到的結果。
FP:FP即為預測錯誤,且預測結果與真實結果一致。
舉例說明就是,當前真實值為香蕉,但由於模型和參數訓練等問題,原本正確的預測應為蘋果,
但錯誤預測為香蕉,反而使得預測結果與真實值都是香蕉,這屬於是誤打誤撞的成功。
FN:FN即為預測錯誤,且預測結果與真實結果不一致。
舉例說明就是,當前真實值為香蕉,但由於某種原因和問題,
導致錯誤預測的結果為蘋果,此時與真實結果不一致。
TN:TN即為預測正確,且預測結果與真實結果不一致。
舉例說明就是,當前真實值為香蕉,根據預測的置信度和類別標簽卻正確預測為蘋果,
那么此時預測結果與真實結果也不一致。
從而就有:
- 精度Precision(查准率)是評估預測的准不准(看預測行)
- 召回率Recall(查全率)是評估找的全不全(看實際行)
- F1 score是精確率和召回率的調和平均數
再來看下面這張圖或許也能幫助大家理解:
可以看到圖中有若干個實心點和空心點,其中左邊綠色部分的半圓形區域為TP(True Postives),左邊剩余部分的區域則為FN(False Negatives),類似地,右邊紅色部分的半圈形區域為FP(False Positives),右邊剩余部分的區域則為TN(True Negatives)。
那么在圖中怎么表示精度和召回率呢?
可以看到,若我們將整個圓形部分作為分母,以TP綠色部分作為分子,那么這時候FP紅色部分的面積和點數量越小,則整體的精度就越高。
同樣地,若我們將全部的綠色部分作為分母,綠色圓形部分TP作為分母,這時若綠寶圓形部分占整體綠色面積的比率越大,也就是綠色圓形部分覆蓋的實心點數量越多,則整體查找的范圍就越大。
1.1.2 IoU(Intersection over Union)
當然,對於目標檢測任務而言,不僅包含分類,同時還有邊界框回歸。
為了評估邊界框回歸准確與否,這里使用IoU(交並比)指標進行評估。
由圖所示,我們令藍色邊框部分為Ground truth(基本事實)為標定的框,黃色邊框部分為Prediction(預測結果),那么如何來描述預測結果與基本事實之間吻合的程度呢?這里用一個參數比率IoU:兩個框的交集/兩個框的並集來進行衡量,也稱作交並比。若交並比,也就是兩個框之前的重疊程度越高,則說明預測的框體越准確。
Iou表示預測的邊界框和真實邊界框之間的重疊程度。您可以為 Iou 設置閾值以確定對象檢測是否有效。假設您將 Iou 設置為 0.5,在這種情況下
- 如果Iou ≥ 0.5,則將對象檢測分類為True Positive(TP)。
- 如果Iou ≤ 0.5,那么這是一個錯誤的檢測並將其歸類為False Positive(FP)。
- 當圖像中存在Ground Truth(基本事實)並且模型未能檢測到對象時,將其分類為False Negative(FN)。
- True Negative(TN)是我們沒有預測對象的圖像的每個部分,這個指標對對象檢測沒有用,因此我們忽略了 TN。
從IoU的角度來看Precision、Recall等
1.1.3 P-R curve
P-R曲線是以召回率R為橫軸,准確率P為縱軸,然后根據模型的預測結果對樣本進行排序,把最有可能是正樣本的個體排在前面,而后面的則是模型認為最不可能為正例的樣本,再按此順序逐個把樣本作為“正例”進行預測並計算出當前的准確率和召回率得到的曲線。
通過上圖我們可以看到,當我們只把最可能為正例的個體預測為正樣本時,其准確率最高位1.0,而此時的召回率則幾乎為0,而我們如果把所有的個體都預測為正樣本的時候,召回率為1.0,此時准確率則最低。
1.1.4 AP(Average Precision)
用一個簡單的例子來演示平均精度(AP)的計算。
假設數據集中總共有5個蘋果。我們收集模型為蘋果作的所有預測,並根據預測的置信水平(從最高到最低)對其進行排名。
第二列表示預測是否正確。如果它與ground truth匹配並且IoU$\ge$0.5,則是正確的。
AP計算之11點法
對於PASCAL VOC挑戰來說,如果Iou>0.5,則預測為正樣本(TP)。
但是,如果檢測到同一目標的多個檢測,則視第一個檢測為正樣本(TP),而視其余檢測為負樣本(FP)。
上面的計算方法是2010年以前的計算方法,2010年之后則改用了積分的方法來進行計算最后的AP值,相較於之前更加准確。
將上圖進行划分為四個不同面積大小的區域,則總體的AP就等於四者之和。
最后做一個小結:
-
Pascal VOC2007 uses 11 Recall Points on PR curve.
在PR曲線上使用11個回憶點。 -
Pascal VOC2010-2012 uses(all points)Area Under Curve(AUC)on PR curve.
在PR曲線上使用(所有點)曲線下面積(AUC)。 -
MS COCO uses 101 Recall points on PR curve as well as different IoU thresholds。
在PR曲線上使用101個召回點以及不同的IoU閾值,划分更加精細。
1.1.5 mAP(mean Average Precision)
Average Precision(AP)衡量出來的是學習出來的模型在每個類別上的好壞;
mean Average Precision(mAP)衡量的是學出的模型在所有類別上的好壞,實際上mAP就是取所有類別上AP的平均值。
下面來看這張表,這里呈現的是,對於不同的網絡,例如:VGG-16、ResNet-101、ResNet-101在相同數據下的不同類別精度數據表現以及平均精度表現。
1.1.6COCO AP
以COCO數據集為例,AP是多個IOU的平均值(考慮Positive匹配的最小IOU)
mAP@[.5:.95]對應於Iou的平均AP,從0.5到0.95,步長為0.05。
在COCO競賽中,AP是80個類別中超過10個Iou levels的平均值
mAP@.75的意思是Iou的平均檢測精度mAP為0.75。
-
這里可以引申出一個問題:是否Iou越大越好?
從下圖可以看出,隨着Iou的增加,Precision-Recall曲線中Recall的也隨之下降,即為增加Iou后的查全率下降了,也就是說查找的框體隨着Iou邊界逼近重疊而減少了,很多預測框不准的都不認為是重要的。
下面是關於COCO數據集AP的一些簡單介紹
其中AP at IoU=.95:.05:.95(primary challenge metric)是主要的一種指標。
IoU=0.50的時,與PASCAL VOC的AP metric相同。若IoU=0.75時,則相對比較嚴格。
不同尺度大小下的AP
這里將small(小)、medium(中)、large(大)進行不同的區分
其中Small小目標的定義是:像素面積area<32^2;
medium中等目標的定義是:像素面積area > 32^2且area < 96^2
large大目標的定義是:像素面積area > 96^2
平均召回率
下面max對應的分別是每張圖片下包含的目標個數
1.2 檢測速度
- 前傳耗時
- 每秒幀數FPS(Frames Per Second)(每秒傳輸幀率)
- 浮點運算量(FLOPS)
1.2.1 前傳耗時
從輸入一張圖像到輸出最終結果所消耗的時間,包含前處理耗時(如圖像歸一化)、網絡前傳耗時、后處理耗時(如非極大值抑制nms)。
1.2.2 FPS(Frames Per Second)
FPS是圖像領域中的定義,是指畫面每秒傳輸幀數,通俗來講就是指動畫或視頻的畫面數。FPS是測量用於保存、顯示動態視頻的信息數量。每秒鍾幀數越多,所顯示的動作就會越流暢。通常,要避免動作不流暢的最低是30。某些計算機視頻格式,每秒只能提供15幀。
FPS也可以理解為我們常說的“刷新率(單位為Hz)”,例如我們常在游戲里說的“FPS值”。我們在裝機選購顯卡和顯示器的時候,都會注意到“刷新率”。一般我們設置缺省刷新率都在75Hz(即75幀/秒)以上。例如:75Hz的刷新率刷也就是指屏幕一秒內只掃描75次,即75幀/秒。而當刷新率太低時我們肉眼都能感覺到屏幕的閃爍,不連貫,對圖像顯示效果和視覺感觀產生不好的影響。
電影以每秒24張畫面的速度播放,也就是一秒鍾內在屏幕上連續投射出24張靜止畫面。有關動畫播放速度的單位是fps,其中的f就是英文單詞Frame(畫面、幀),p就是Per(每),s就是Second(秒)。用中文表達就是多少幀每秒,或每秒多少幀。電影是24fps,通常簡稱為24幀。
結合以上性能指標描述,下面可以更容易理解下列表格中不同模型之間的性能差異及表現效果。
1.2.3 浮點運算量(FLOPS)
處理一張圖像所需要的浮點運算數量,跟具體軟硬件沒有關系,可以公平地比較不同算法之間的檢測速度。