目標檢測性能評價——關於mAP計算的思考


1. 基本要求

從直觀理解,一個目標檢測網絡性能好,主要有以下表現:

  • 把畫面中的目標都檢測到——漏檢少
  • 背景不被檢測為目標——誤檢少
  • 目標類別符合實際——分類准
  • 目標框與物體的邊緣貼合度高—— 定位准
  • 滿足運行效率的要求——算得快

下圖是從 Tensorflow Object Detection API 的 Model Zoo 中截取的部分模型列表。

image-20210416164552086

算得快這一點通過 Speed 來體現。而其他因素,使用了mAP (mean average Precision) 這一個指標來綜合體現。

mean 和 average 都有平均的意思,因此從字面理解,mAP 指標至少從兩個方面進行了平均。

2. mAP指標計算

mAP 的計算大致可以分解為以下幾步:

階段 輸出 關鍵變量
針對單個目標 TP、FP、FN IOU(交並比)
針對單個類別 PR-Curve、AP Confidence(置信度)
針對測試集全集 mAP

2.1 輸出檢測結果

針對不同類型的目標檢測網絡,模型推理的原始輸出可能的形式多種多樣。

首先需要完成目標解碼,生成標准化的目標列表,至少包含每個目標的:

  • 類別
  • 2DBBox
  • 置信度

這里的置信度與推理使用時的置信度閾值有差別,沒有固定的閾值,只要在該通道有響應,都輸出為目標。

不同類型的網絡,置信度數值的含義也不同,因此也無法設定一個統一的閾值。

2.2 針對單個目標

針對單個目標,問題簡化為分類結果的判定。

首先將 GT (Ground Truth) 和 Predictions 分別按照各自的類別分組。

在每一個類別內,對 GTPredictions 兩組數據進行匹配,匹配的依據是 IOU

匹配結果可能有如下幾種:

  • TP (True Positive):一個正確的檢測,IOU ≥ threshold。即預測的目標分類正確,且邊框與 GT 重合度夠高。

  • FP (False Positive):一個錯誤的檢測,沒有匹配上 GT 的目標,或IOU < threshold。即預測的目標分類不正確,或邊框與 GT 重合度不夠高。

  • FN (False Negative):漏檢的 GT。即沒有被匹配上目標的 Ground Truth。

2.3 針對單個類別

完成對整個測試集上每個目標的判斷后,分類別統計 PrecisionRecall

  • Precision:准確率(查准率),模型只找正確目標的能力。

    Precision = TP / (TP + FP),其中 TP+FP 即模型找到的所有目標。

  • Recall:召回率(查全率),模型找到所有目標的能力。

    Recall = TP / (TP + FN),其中 TP+FN 即所有的 GT

在單個目標的處理步驟中,只需要記錄TP。則對於所有檢測目標,非TP即為FP,對於所有 GT,非TP即為FN。

當設定不同的 Confidence 閾值時,輸出的檢測目標數量不同,由此計算得到的 PrecisionRecall 也不同。

根據不同的閾值,可以得到一系列 PrecisionRecall 的值,連起來即可得到PR曲線。

在實際操作中,將所有目標按照置信度從高到低排序,每一步都只累加一個目標,統計當前的P-R值。

PR-Curve

PR曲線示例如上圖所示。

PR曲線會有折線的原因。每累加一步,如果:

  • 當前累加的目標是FP,則 Recall 值不變, Precision 值變小,對應圖中豎直向下的線段;

  • 當前累加的目標是TP,則 Recall 和 Precision 都變大,對應圖中斜向右上方的線段。

2.4 針對全集

至此,針對每一個類別,都計算得到一條PR曲線。

PR曲線與x軸所圍成的面積,即為當前類別的AP值。

Average 是指對不同 Confidence 閾值下的結果進行平均。

所有類別AP值的均值,即為 mAP。

mean 是指對不同類別之間結果進行平均。

3. 存在問題及改進思路

3.1 問題

(1)誤檢/漏檢少、分類准、定位准,這些要求並沒有在 mAP 的整個計算過程中一直傳導到最終結果。

首先按照目標類別進行分類處理。

在對單個目標的處理中,將IOU作為匹配的指標,將檢測到的目標二分類為TP/FP。在選定IOU閾值后,TP/FP的分配也就確定了。在后續的步驟中,目標被抽象為正確/錯誤兩類,但正確或錯誤的程度被忽略了。

下圖為 IOU=0.5 時的極限情況示意:

image-20210417102807265

類似的IOU值實際可能代表的不同情況:

image-20210417102909987

在對所有目標的處理中,主要考察不同的 Confidence 閾值下,檢測出正確目標的能力。

因此,誤檢/漏檢少、分類准、定位准這幾個要求是按照一種串行的方式,分階段組織起來的。

(2)問題是多樣化的,只用一個指標,沒法知道目前的性能瓶頸在哪里。

根據 mAP 的高低,我們只能較為概括地知道網絡整體性能的好壞,但比較難分析問題具體在哪。

舉幾個例子:

  • 如果網絡輸出的框很貼合,選擇合適的 Confidence 閾值時,檢出和召回也較均衡,但是目標的類別判斷錯誤較多。由於首先根據類別結果分類處理,只要類別錯了,定位、檢出和召回都很好,mAP 指標也不會高。但從結果觀察,並不能很明確知道,問題出在類別判斷上。

    比如 Faster-RCNN 系列網絡,如果 RPN 部分效果很好,但是 RCNN 部分效果很差,只根據 mAP, 是無法判斷出來的。

  • 如果兩個網絡的其他性能表現都類似,但是輸出框的定位精度不同。對於大部分判定為 TP 的目標,一個網絡的目標 IOU 值很高,框非常貼合 GT;另一個網絡的目標 IOU 值剛剛超過閾值。理論上這樣兩個網絡計算出來的 mAP 值是類似的,但實際使用的表現是有差別的。

(3)mAP 指標關注的點,與實際應用時關注的點,並不完全吻合

mAP 會統計所有 Confidence 值下的 PR值,而實際使用時,會設定一個 Confidence 閾值,低於該閾值的目標會被丟棄,這部分目標在統計 mAP 時也會有一定的貢獻。部分針對比賽刷榜的漲點技巧,會關注這部分檢測結果對 mAP 的影響。

此外,在 ADAS 應用(特別是車輛檢測)中一些比較關心的點,mAP 指標並沒有很好地體現。比如:

  • 最關心正前方近處的目標,對遠處側面的目標關注度相對低
  • 關注目標框的下沿和寬度,而對上沿的要求不高
  • 關注連續幀中,同一個目標檢測結果的穩定性和連續性
  • 不同的類別錯判,嚴重程度不同(比如卡車誤判為客車問題不大,行人誤判為車輛問題就比較大)

3.2 改進

(1)考察不同 IOU 閾值下的性能表現

在 VOC 標准的 mAP 計算中,只取 IOU=0.5 一個閾值。

MS-COCO 標准對此進行了改進,取0.5:0.05:0.95等間隔的11個閾值,分別統計:

  • AP:在所有11個 IOU 閾值上計算出來的 mAP 的均值(最主要的度量指標)
  • AP@.5IOU:閾值取0.5時的 mAP 值(等價於 VOC mAP)
  • AP@.75IOU:閾值取0.75時的 mAP 值

此外還針對目標大小分別進行了統計:

  • AP(small):像素面積小於32^2的目標,在所有11個 IOU 閾值上的AP
  • AP(medium):像素面積介於322和962之間的目標,在所有11個 IOU 閾值上的AP
  • AP(large):像素面積大於96^2的目標,在所有11個 IOU 閾值上的AP

此外,還有 AR (Average Recall) 相關的一系列指標。

可見, COCO mAP 對檢測性能進行了更全面的評估,改進了單一 IOU 閾值的問題。

COCO mAP 的計算可以直接使用pycocotools,將檢測結果按照規定的格式提供,即可自動完成計算。

(2)統一訓練和評測的指標

在網絡訓練過程中,location 分支的輸出通常會用IOU Loss去進行優化,目前已經升級到DIOUCIOU

那么在測試過程中,也可以將 IOU 指標替換為類似 DIOU 或 CIOU 的版本,實現更合理的評價,以及訓練和評測的統一。

(3)設計更多自定義的指標

mAP 是一個基准指標,屬於規定動作,可以用來比較不同網絡,包括與開源模型、外部團隊開發的模型等進行比較。

此外,基於我們關心的模型性能表現,可以設計一些額外的指標。包括:

  • mAP 計算過程中,可拆分出來的的一些中間指標
  • mAP 沒有涵蓋到的指標

(4)模型使用時的閾值選擇

使用模型進行推理時,在目標解碼過程中涉及 Confidence 閾值的選取。通常是采用一刀切的方式,選擇一個統一的閾值。

在 mAP 的計算過程中,會輸出每個類別的PR曲線。一個典型PR曲線的示意如下:

img

根據PR曲線,既可以找到一個數學意義上的最優點,也可以根據實際使用時,對於誤檢和漏檢的不同容忍程度,選定一個權衡值。

可以根據每個類別的不同情況,選取不同的 Confidence 閾值,來讓每一個類別的檢測結果達到最優。

在實際操作中,可先根據 class 通道的結果,判定類別,再根據 conf 通道的結果和不同的閾值,篩選檢出的目標。

對於類別性質差異較大,類別不均衡現象較為嚴重的案例,可以實現更理想的輸出。

比如,在ADAS應用中,對於車輛目標、行人目標、交通標識目標的識別要求可能存在差異。根據各自的PR曲線去定制閾值,是一個更合理的選擇。

參考:

  1. https://zhuanlan.zhihu.com/p/94597205
  2. https://www.jianshu.com/p/d7a06a720a2b
  3. https://www.cnblogs.com/laozhanghahaha/p/12383363.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM