目標檢測演算法之評價標準和常見數據集盤點

  • 2019 年 12 月 9 日
  • 筆記

我的一個github開源項目star數過百了,非常開心,感謝大家。

前言

前面只顧著講演算法,講損失,講訓練參數設置和細節,缺忽視了一個重要的東西,那就是目標檢測的評價標準是什麼?這一節,我們就來搞懂這個問題。

評價指標

1.準確率(Accuracy)

檢測時分對的樣本數除以所有的樣本數。準確率一般被用來評估檢測模型的全局準確程度,包含的資訊有限,不能完全評價一個模型性能。

2.混淆矩陣(Confusion Matrix)

混淆矩陣是以模型預測的類別數量統計資訊為橫軸,真實標籤的數量統計資訊為縱軸畫出的矩陣。對角線代表了模型預測和數據標籤一致的數目,所以準確率也可以用混淆矩陣對角線之和除以測試集圖片數量來計算。對角線上的數字越大越好,在混淆矩陣可視化結果中顏色越深,代表模型在該類的預測結果更好。其他地方自然是預測錯誤的地方,自然值越小,顏色越淺說明模型預測的更好。

3.精確率(Precision)和召回率(Recall)和PR曲線

一個經典例子是存在一個測試集合,測試集合只有大雁和飛機兩種圖片組成,假設你的分類系統最終的目的是:能取出測試集中所有飛機的圖片,而不是大雁的圖片。然後就可以定義:

  • True positives: 簡稱為TP,即正樣本被正確識別為正樣本,飛機的圖片被正確的識別成了飛機。
  • True negatives: 簡稱為TN,即負樣本被正確識別為負樣本,大雁的圖片沒有被識別出來,系統正確地認為它們是大雁。
  • False Positives: 簡稱為FP,即負樣本被錯誤識別為正樣本,大雁的圖片被錯誤地識別成了飛機。
  • False negatives: 簡稱為FN,即正樣本被錯誤識別為負樣本,飛機的圖片沒有被識別出來,系統錯誤地認為它們是大雁。

精確率就是在識別出來的圖片中,True positives所佔的比率。也就是本假設中,所有被識別出來的飛機中,真正的飛機所佔的比例,公式如下: ,其中N代表測試集樣本數。

召回率是測試集中所有正樣本樣例中,被正確識別為正樣本的比例。也就是本假設中,被正確識別出來的飛機個數與測試集中所有真實飛機的個數的比值,公式如下:

所謂PR曲線就是改變識別閾值,使得系統依次能夠識別前K張圖片,閾值的變化同時會導致Precision與Recall值發生變化,從而得到曲線。曲線圖大概如下,這裡有3條PR曲線,周志華機器學習的解釋如下:

在這裡插入圖片描述

4.平均精度(Average-Precision,AP)和mAP

AP就是Precision-recall 曲線下面的面積,通常來說一個越好的分類器,AP值越高。mAP是多個類別AP的平均值。這個mean的意思是對每個類的AP再求平均,得到的就是mAP的值,mAP的大小一定在[0,1]區間,越大越好。該指標是目標檢測演算法中最重要的一個。

5.ROC曲線

如下圖所示:

在這裡插入圖片描述

ROC的橫軸是假正率(False positive rate, FPR),FPR = FP / [ FP + TN] ,代表所有負樣本中錯誤預測為正樣本的概率,假警報率。ROC的縱軸是真正率(True positive rate, TPR),TPR = TP / [ TP + FN] ,代表所有正樣本中預測正確的概率,命中率。ROC曲線的對角線坐標對應於隨即猜測,而坐標點(0,1)也即是左上角坐標對應理想模型。曲線越接近左上角代表檢測模型的效果越好。

那麼ROC曲線是怎麼繪製的呢?有如下幾個步驟:

  • 根據每個測試樣本屬於正樣本的概率值從大到小排序。
  • 從高到低,依次將「Score」值作為閾值threshold,當測試樣本屬於正樣本的概率大於或等於這個threshold時,我們認為它為正樣本,否則為負樣本。
  • 每次選取一個不同的threshold,我們就可以得到一組FPR和TPR,即ROC曲線上的一點。當我們將threshold設置為1和0時,分別可以得到ROC曲線上的(0,0)和(1,1)兩個點。將這些(FPR,TPR)對連接起來,就得到了ROC曲線。當threshold取值越多,ROC曲線越平滑。

6.AUC(Area Uner Curve)

即為ROC曲線下的面積。AUC越接近於1,分類器性能越好。AUC值是一個概率值,當你隨機挑選一個正樣本以及一個負樣本,當前的分類演算法根據計算得到的Score值將這個正樣本排在負樣本前面的概率就是AUC值。當然,AUC值越大,當前的分類演算法越有可能將正樣本排在負樣本前面,即能夠更好的分類。AUC的計算公式如下:

PR曲線和ROC曲線選用時機

目標檢測中用的最多的是MAP值,但我們最好再了解一下PR曲線和ROC曲線的應用場景,在不同的數據集中選擇合適的評價標準更好的判斷我們的模型是否訓好了。

PR曲線

從PR的計算公式可以看出,PR曲線聚焦於正例。類別不平衡問題中由於主要關心正例,所以在此情況下PR曲線被廣泛認為優於ROC曲線。

ROC曲線

當測試集中的正負樣本的分布發生變化時,ROC曲線可以保持不變。因為TPR聚焦於正例,FPR聚焦於與負例,使其成為一個比較均衡的評估方法。但是在關心正例的預測準確性的場景,ROC曲線就不能更好的反應模型的性能了,因為ROC曲線的橫軸採用FPR,根據FPR公式 ,當負例N的數量遠超正例P時,FP的大幅增長只能換來FPR的微小改變。結果是雖然大量負例被錯判成正例,在ROC曲線上卻無法直觀地看出來。

因此,PR曲線和ROC曲線的選用時機可以總結如下:

在這裡插入圖片描述

從目標檢測任務來講,一般關心MAP值即可。

數據集介紹

剛才介紹了目標檢測演算法的常見評價標準,這裡再介紹一下目標檢測常用的數據集。以下介紹來自於github工程整理:DeepLearning-500-questions

PASCAL VOC數據集

VOC數據集是目標檢測經常用的一個數據集,自2005年起每年舉辦一次比賽,最開始只有4類,到2007年擴充為20個類,共有兩個常用的版本:2007和2012。學術界常用5k的train/val 2007和16k的train/val 2012作為訓練集,test 2007作為測試集,用10k的train/val 2007+test 2007和16k的train/val 2012作為訓練集,test2012作為測試集,分別彙報結果。

MSCOCO數據集

COCO數據集是微軟團隊發布的一個可以用來影像recognition+segmentation+captioning的數據集,該數據集收集了大量包含常見物體的日常場景圖片,並提供像素級的實例標註以更精確地評估檢測和分割演算法的效果,致力於推動場景理解的研究進展。依託這一數據集,每年舉辦一次比賽,現已涵蓋檢測、分割、關鍵點識別、注釋等機器視覺的中心任務,是繼ImageNet Chanllenge以來最有影響力的學術競賽之一。相比ImageNet,COCO更加偏好目標與其場景共同出現的圖片,即non-iconic images。這樣的圖片能夠反映視覺上的語義,更符合影像理解的任務要求。而相對的iconic images則更適合淺語義的影像分類等任務。COCO的檢測任務共含有80個類,在2014年發布的數據規模分train/val/test分別為80k/40k/40k,學術界較為通用的劃分是使用train和35k的val子集作為訓練集(trainval35k),使用剩餘的val作為測試集(minival),同時向官方的evaluation server提交結果(test-dev)。除此之外,COCO官方也保留一部分test數據作為比賽的評測集。

Google Open Image數據集

pen Image是Google團隊發布的數據集。最新發布的Open Images V4包含190萬影像、600個種類,1540萬個bounding-box標註,是當前最大的帶物體位置標註資訊的數據集。這些邊界框大部分都是由專業注釋人員手動繪製的,確保了它們的準確性和一致性。另外,這些影像是非常多樣化的,並且通常包含有多個對象的複雜場景(平均每個影像 8 個)。

ImageNet數據集

ImageNet是一個電腦視覺系統識別項目, 是目前世界上影像識別最大的資料庫。ImageNet是美國斯坦福的電腦科學家,模擬人類的識別系統建立的。能夠從圖片識別物體。Imagenet數據集文檔詳細,有專門的團隊維護,使用非常方便,在電腦視覺領域研究論文中應用非常廣,幾乎成為了目前深度學習影像領域演算法性能檢驗的「標準」數據集。Imagenet數據集有1400多萬幅圖片,涵蓋2萬多個類別;其中有超過百萬的圖片有明確的類別標註和影像中物體位置的標註。

DOTA數據集

DOTA是遙感航空影像檢測的常用數據集,包含2806張航空影像,尺寸大約為4kx4k,包含15個類別共計188282個實例,其中14個主類,small vehicle 和 large vehicle都是vehicle的子類。其標註方式為四點確定的任意形狀和方向的四邊形。航空影像區別於傳統數據集,有其自己的特點,如:尺度變化性更大;密集的小物體檢測;檢測目標的不確定性。數據劃分為1/6驗證集,1/3測試集,1/2訓練集。目前發布了訓練集和驗證集,影像尺寸從800x800到4000x4000不等。

後記

本文介紹了目標檢測演算法中的常見標準和常見的目標檢測評測數據集,算是對各種論文解讀文章細節的一個補充,希望能夠熟記最主要的評測指標和常用的幾個數據集,一般來講高峰會論文的實驗部分都會以介紹的這幾個數據集為基準測評表現。

參考

https://www.cnblogs.com/eilearn/p/9071440.html

https://github.com/scutan90/DeepLearning-500-questions

《周志華:機器學習》

Tags: