Machine Learning Concept(一):Mean Average Precision(mAP)
2018/05/08
前言:
R-CNN 系列已經看了一陣子,YOLO 系列是目前正在看的。要知道這些演算法有多好,你得先知道「好」的標準何在?
Summary:
物件偵測 [1] 的第一步應該是瞭解 mAP 的計算方式 [2]-[11]。本文從基本觀念 [2]-[6] 出發,另外找了相關討論 [7]-[9] 與原始碼 [10],最後是補充資料 [11]。相關資料再配上本文的說明,讀者應可對物件偵測有初步的瞭解。
-----
Fig. 1. Object detection [1].
-----
Outline
一、Object Detection
二、IoU
三、Precision / Recall
四、Average Precision(11-point interpolated average precision)
五、Average Precision(PASCAL VOC 2010)
六、Mean Average Precision
七、mAP@[.5 .95]
八、公式(程式)
-----
一、Object Detection
Mean average precision(mAP)是 object detection 演算法的評估標準。
Object detection,一般翻譯為物件偵測或物體偵測。如圖1 所示,一張圖片,或一個影片的停格,先框出物件,再根據框框裡的物件加以分類,標示名稱,這就是 object detection。
傳統較有名的物件偵測演算法有 DPM、Selective Search 等,新一代的深度學習演算法則有 R-CNN 系列與 YOLO 系列 [1]。
-----
二、IoU
一般 object detection 演算法會先在一些資料集上進行訓練與測試,例如 PASCAL 等 [4]。資料集先由人工(或專家)將物件的框框與類別設定好。
演算法選出的框框,不會(不一定會)百分之百與人工設定的框框符合,將這兩個框框的交集除以聯集,是一個判斷標準,一般是設定為 0.5,高於這個值,則表示演算法「偵測」到一個物件,如圖2 所示 [2]。
至於偵測的「物件」是否「存在」,或者這個物件是否被標示為正確的類別,這在下方會繼續說明。
Fig. 2. Intersection over union [2].
-----
三、Precision / Recall
Precision / Recall 有一些不同的翻譯名稱,在此直接以英文跟圖片加以理解。
Precision / Recall,看圖3 則一目了然。
圓圈裡,是所有檢測到的物件(positives),淺綠色的部分是標示正確的(true positives),粉紅色的部分是標示錯誤的(false positives)。
左邊的矩形,是所有應該檢測出來的物件,半圓裡的部分是檢測出來的(true positives),半圓以外的部分,是沒有檢測出來的(false negatives)。
Precision,是演算法偵測到的物件總數裡,有幾成是正確的物件。
Recall 則是全部該偵測出來的物體,演算法檢測出幾成。
Fig. 3. Precision and Recall [3].
-----
四、Average Precision(11-point interpolated average precision)
圖4.1a 是一個測試結果,類別假定為汽車好了。
你偵測出「可能」有 20 輛汽車,其「可能性」從 0.91 遞減到 0.01。但是實際上,真正的汽車只有 4 號的 0.91、2 號的 0.76、9 號的 0.38 等六輛。
Fig. 4.1a. Top 20 [4].
以圖4.1b 為例,假定你「選」前五名好了,那你的正確率就是 2 / 5,也就是 0.4。
Fig. 4.1b. Top 5 [4].
「實際多類別分類任務中,我們通常不滿足只通過 top-5 來衡量一個模型的好壞,而是需要知道從 top-1到 top-N(N 是所有測試樣本個數,本文中為20)對應的 precision 和 recall。顯然隨著我們選定的樣本越來也多,recall 一定會越來越高,而 precision 整體上會呈下降趨勢。把 recall 當成橫坐標,precision 當成縱坐標,即可得到常用的 precision-recall 曲線。」[4]
Fig. 4.1c. Top 6 - 20 [4].
圖4.2 可以看到,Top 1 是 1 / 1,Top 2 是 2 / 2。
Top 3 到 Top 5 分別是 2 / 3、2 / 4、2 / 5。垂直遞減。
Top 6 與 Top 7 分別是 3 / 6、4 / 7。遞增。
Top 8 到 Top 20 以此類推。
Fig. 4.2. Average Precision(11-point interpolated average precision)[4].
-----
五、Average Precision(PASCAL VOC 2010)
PASCAL 競賽在 2010 年開始,使用不同的計算方式。
圖4.3 跟 圖4.1 是同一份資料,但呈現、與計算的方式不同。主要是它沒有遞增的片段,全部是單調遞減。
執行上是以 Recall 為主,同樣 Recall 的取為一組,這組後面如果有更大的 Precision,就以後面為主。
以圖4.3為例。第三組的 Precision 是 3/6,但因為第四組的 4/7 更高,所以就採用第四組的 Precision 當成第三組的。因此得到圖4.4。
Fig. 4.3. Top 20 [4].
Fig. 4.4. Average Precision(PASCAL VOC 2010)[4].
-----
圖4.5 可以看出兩種方法的差別。AP 則是計算藍色部分所佔的比率。
Fig. 4.5. Precision monotonically decreasing [2].
-----
六、Mean Average Precision
瞭解了 AP 之後,mAP 其實就是把多個類別的 AP 再取平均。如圖5.1 所示。
Fig. 5.1 mAP [2].
圖5.2 則是 FP 跟 TP 個數的統計。這邊會有一個小問題,就是每個類別的物件要一樣多才公平嗎?
Fig. 5.2. Detected classes (36) [2].
-----
七、mAP@[.5 .95]
mAP@[.5:.95](someone denoted mAP@[.5,.95]) means average mAP over different IoU thresholds, from 0.5 to 0.95, step 0.05 (0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95). [6]
IoU 取 0.5 可以計算 mAP,從 0.5 到 0.95 每 0.05 都來算一次 mAP 再平均,又是一種衡量的標準。
-----
八、公式(程式)
以上的觀念都瞭解之後,程式部分請自行參考 [7], [10]。
-----
Conclusion
瞭解 mAP 是 object detection 的第一步,至於如果同一物件被重複偵測,有好幾個類似的框框,那要如何處理?這也是很重要,後續會再討論!
-----
References
一、背景
[1] 關於影像辨識,所有你應該知道的深度學習模型 – Steven Shen – Medium
https://medium.com/@syshen/%E7%89%A9%E9%AB%94%E5%81%B5%E6%B8%AC-object-detection-740096ec4540
二、基本
[2] GitHub - Cartucho_mAP mean Average Precision - This code will evaluate the performance of your neural net for object recognition
https://github.com/Cartucho/mAP
[3] Precision and recall - Wikipedia
https://en.wikipedia.org/wiki/Precision_and_recall
[4] 多标签图像分类任务的评价方法-mAP_花心大罗博_新浪博客
http://blog.sina.com.cn/s/blog_9db078090102whzw.html
[5] The PASCAL Visual Object Classes Challenge 2010 (VOC2010)
http://host.robots.ox.ac.uk/pascal/VOC/voc2010/
[6] computer vision - What does the notation mAP@[.5 .95] mean - Data Science Stack Exchange
https://datascience.stackexchange.com/questions/16797/what-does-the-notation-map-5-95-mean
-----
三、討論
[7] mean average precision(MAP)在计算机视觉中是如何计算和应用的? - 知乎
https://www.zhihu.com/question/41540197
[8] machine learning - mAP metric in object detection and computer vision - Stack Overflow
https://stackoverflow.com/questions/36274638/map-metric-in-object-detection-and-computer-vision
[9] machine learning - How to calculate mAP for detection task for the PASCAL VOC Challenge - Data Science Stack Exchange
https://datascience.stackexchange.com/questions/25119/how-to-calculate-map-for-detection-task-for-the-pascal-voc-challenge
-----
四、code
[10] 深度学习 mAP (Mean Average Precision) - CSDN博客
https://blog.csdn.net/JNingWei/article/details/78955536
-----
五、其他
[11] What you wanted to know about Mean Average Precision - FastML
http://fastml.com/what-you-wanted-to-know-about-mean-average-precision/
No comments:
Post a Comment