這幾天媒體報導了YOLOv4的相關新聞,提到其為中研院研究團隊與俄羅斯開發者所共同研發,而這全世界最快最準的物體偵測演算法,其平均準確率為43.5%,於是這43.5%的準確率迅速引來許多不明就裡的人留言批評。
不懂沒有關係,我們可以先查證,再提出質疑,而非只是「我覺得這準確率有夠低」就輕率地批評指責(中研院難道是能隨便誇大其詞的研究機構嗎?),但你可能連state-of-the-art意味什麼都不明白。這對無私貢獻的Open Source開發者一點都不公平,真是站著說話不腰疼、躺著留言不費勁。
什麼是YOLO?
YOLO官網是這麼介紹它自己的:
You only look once (YOLO) is a state-of-the-art, real-time object detection system. On a Pascal Titan X it processes images at 30 FPS and has a mAP of 57.9% on COCO test-dev. (YOLO是最先進的即時物體偵測系統,在Pascal Titan X GPU上以30 FPS的速度處理影像,於COCO測試開發資料集中的mAP為57.9%)
然後我們可能又會疑惑:FPS? COCO? mAP? 別著急,多理解一下物體偵測。
電腦是如何進行物體偵測?一般做法是透過各種選擇性搜索演算法(selective search),偵測、分割出影像中可能有物體存在的區域(region proposal),那麼沒有物體存在的區域就不需要進行無效的運算,也能加快處理速度,接著再對這些可能有物體存在的區域進行辨識分類。如此先搜索region proposal再進行辨識的處理方式稱為Two Stage(e.g. R-CNN)。
但這有個潛在問題,假設系統偵測出影像中有數百個甚至上千個region proposal,那麼就得進行上千次的辨識運算...個人電腦即便有高階GPU亦可能做不到即時運算,更遑論行動裝置。 圖片連結自https://github.com/ouyanghuiyu/darknet_face_with_landmark⬇︎
於是我們有了One Stage(e.g. YOLO),物體偵測和辨識一氣呵成,這樣的做法能大幅提升處理速度。不過有一好沒兩好,要速度快你就得在準確率做點取捨,因此整體辨識準確率相較Two Stage來得差一些,但One Stage在許多應用上仍是可接受範圍內,兩種作法各有其優勢,端看需求。
回到YOLO,自從2015年發佈v1發展至今,最新版本為今年4月底所發佈的v4,處理速度簡直快到沒朋友,但YOLO的創造者Joseph Redmon今年二月於推特宣佈退出電腦視覺研究領域,當時引起相當大的討論,多少人引頸期盼YOLO的下個版本,Joseph Redmon表示自己的工作對人類社會的衝擊性實在太大了,即使熱愛電腦視覺的研究工作,但其終究無法忽視自己的研究成果在軍事科技應用以及個人隱私方面可能導致的問題。因此YOLOv4為俄羅斯開發者、YOLOv3的實現 — Darknet作者Alexey Bochkovskiy與中研院資科所所長Hong-Yuan Liao及博士後研究員Chien-Yao Wang等三人基於後兩位研發的CSPNet,對YOLO的最新研究成果。而Joseph Redmon也更新了YOLOv4的論文與原始碼連結,顯示YOLOv4為官方所認可的後繼版本。
什麼是FPS?
FPS就是影格率或是經常聽到的幀數,維基百科就有寫了沒啥好說:
影格率是用於測量顯示影格數的量度。測量單位為「每秒顯示影格數」(Frame per Second,FPS)或「赫茲」,一般來說FPS用於描述影片、電子繪圖或遊戲每秒播放多少影格。
什麼是COCO資料集?
COCO資料集(Common Objects in Context)是微軟所發佈、擁有33萬張影像的大型開源資料集:
COCO is a large-scale object detection, segmentation, and captioning dataset. COCO has several features:
- Object segmentation
- Recognition in context
- Superpixel stuff segmentation
- 330K images (>200K labeled)
- 1.5 million object instances
- 80 object categories
- 91 stuff categories
- 5 captions per image
- 250,000 people with keypoints
什麼是mAP?
mAP的"m"代表"mean",簡而言之,AP(average precision)是用來評估物體識別模型效能表現的指標之一。我參考維基百科Precison and Recall頁面的說明圖片,重新繪製了下方這張圖(原圖為直向)來說明。 *關於Precision and Recall可參考:心理學和機器學習中的 Accuracy、Precision、Recall Rate 和 Confusion Matrix
假設我現在要從一些含有各種物體的影像中找出狗的圖片,那麼上圖左側深灰色矩形代表狗的圖片集合,右側淺灰色影像代表其他物體的圖片集合,中間的大圓圈則是被判定為狗的圖片的集合,其中包含真的為狗的圖片(分類正確)以及不是狗的圖片(分類錯誤)。所以precision就代表在「所有被判定為狗的圖片」之中有多少比例是「狗的圖片」。
至於average precision的計算則是將precision加總後取平均值:
判定為狗且真的為狗的圖片數 | 判定為狗的圖片數 | Precision |
---|---|---|
1 | 1 | 1 |
1 | 2 | 1/2 |
1 | 3 | 1/3 |
2 | 4 | 2/4 |
2 | 5 | 2/5 |
... | ... | ... |
又物體識別會有許多類別,以COCO資料集而言就有80種object categories,mean average precision便是所有類別AP加總的平均值。
*COCO資料集究竟有多少個類別?網路上有人說80種,也有人說91種,合理推測是將object categories跟stuff categories搞混了,這兩種分類的差異我也是看了某篇論文的摘要才明白,根據COCO-Stuff: Thing and Stuff Classes in Context所述:
Semantic classes can be either things (objects with a well-defined shape, e.g. car, person) or stuff (amorphous background regions, e.g. grass, sky).
object類就是能明確界定形狀的物體,例如汽車、人。stuff類則是沒有特定形狀或邊界的背景區域,例如草地、天空。懂!
效能評估指標
根據COCO資料集的效能評估頁面所述:
Average Precision (AP):
- AP:AP at IoU=.50:.05:.95 (primary challenge metric)
- AP IoU=.50:AP at IoU=.50 (PASCAL VOC metric)
- AP IoU=.75:AP at IoU=.75 (strict metric)
從這段敘述可以確定COCO資料集效能評估指標的AP指的就是mAP:
AP is averaged over all categories. Traditionally, this is called "mean average precision" (mAP). We make no distinction between AP and mAP (and likewise AR and mAR) and assume the difference is clear from context.
說到這兒又得理解一個跟AP有關係的詞:IoU(Intersection over Union,並交比),簡而言之,物體識別的IoU為物體標記範圍與系統偵測範圍這兩個集合的交集和並集之間的比例,有請台北市立動物園的水豚君幫忙示範一下: 假設紅框為影像的原始標記邊界範圍a1,黃框為YOLO所偵測的物體邊界範圍a2,那麼IoU則為a1與a2的交集除以a1與a2的聯集。
因此以COCO資料集的AP指標而言,可以看到其IoU並非一個固定值,而是「.50:.05:.95」,意思是IoU共有{0.5, 0.55,...0.95}10個閾值,以這10個標準做判定、計算AP再取平均,而AP50(IoU=.50)或AP75(IoU=.75)則是傳統的評估方式。
平均準確率
說了一堆,可以來看底下這張效能表現比較圖了。
我直接連結Darknet其GitHub頁面的圖片⬇︎
YOLOv4的效能表現是相當突出的,在FPS為90的時候,v4的AP比v3多了10%,要不光看它和YOLOv3那條線之間有好大一段垂直距離也不難理解。對於一件事情的難易度若是沒有概念,只看43.5%這個數字能看出什麼呢?
YOLOv4論文摘要:
We use new features: WRC, CSP, CmBN, SAT, Mish activation, Mosaic data augmentation, CmBN, DropBlock regularization, and CIoU loss, and combine some of them to achieve state-of-the-art results: 43.5% AP (65.7% AP50) for the MS COCO dataset at a realtime speed of ~65 FPS on Tesla V100.
辨識無數的物體要即時又要快狠準你說容易嗎?