撰文者/林哲聰 Alex 老師
在電腦視覺中,廣意的影像辨識其實還包含著許多不同的任務,其中物體偵測 (Object Detection)是最廣泛的一種應用之一,自從 2015 年 YOLOv1 橫空出世,在深度學習的世界中,許多人發現模型辨識率不一定要追求極為準確,但速度一定要快,例如在自駕車的應用中,受限於車載硬體效能上的限制,推論速度是最重要的,而只要提升硬體一個等級,意味著製造商的獲利就會限低,因此,YOLO 一直是有即時運算需求物件偵測模型的第一選擇。
2020 年由於 YOLOv1-v3 的原始作者決定離開電腦視覺的研究,中研院的王建堯博士接手了該研究並推出 YOLOv4,在當年是速度與辨識率均衡的最佳模型,後來他還推出了 Scaled-YOLOv4、YOLOR、YOLOv7、YOLOv9 等後續版本,本文將介紹 YOLOv7 到 YOLOv10 的最新發展,以及探索一個最重要的問題,那就是在 YOLOv10 推出後,就物件偵測應用的角度,是否還有使用過去版本的需求。
在正式進入內文前,想與大家分享一個好消息,我在 2022 年開設的深度學習影像辨識 | YOLO物件偵測全解析課程,在 2024 年底新增了 YOLOv10 的內容,未來也將持續地更新教材。如果你想進一步了解 YOLO 物件偵測的應用,歡迎點擊 這裡 查看課程詳情。
YOLOv7 : 此模型是在 2022 年推出的,其主要的特點是提出了 ELAN(Efficient Layer Aggregation Network)特徵萃取的模組與參數重整化(reparameterization),ELAN基於王博士過去所提出的 CSPNet(Cross Stage Partial Network),其能較佳的融合網路模組中的特徵。參數重整化被提出的主要構想來自於有人發現 3×3 convolution 是 CUDA 高度最佳化的模組,但基於 ResNet 的 Skip connection 卻又對效能有極大的提升,然而,過去研究人員發現 skip connection 是可以轉換成 3*3 convolution 的,因此我們可以在訓練時使用 ResNet 的 skip connection,但在推論時轉換成 3*3 convolution 來加快推論的速度。YOLOv7 在物件偵測模型中,號稱是 5 FPS to 160 FPS 中,有著最快的速度以及最高的辨識率,如下圖所示, YOLOv7 的所有次版本,相較於其它模型,是最左上方,而辨識率最高的版本可以達到 56.8% 的辨識率。

YOLOv8 : 近年來在歐洲,有一家公司 Ultralytics 持續的推出一系列原生使用PyTorch 開發的 YOLO(YOLOv1-v4 都是使用開發難度較大,其於 C 語言的Darknet),從 2018 年的 YOLOv3,該公司所開源的 YOLO 一直廣受好評,後續該公司也推出了 YOLOv5 以及 YOLOv8, YOLOv8 的一個最主要的突破是,它將物件的 bounding box 以及機率的方式來描述,主要的觀察是下圖中例如下圖中,滑水冲浪板的左邊以及大象的右邊位置並不明確,如果我們使用機率的方式來描述,就有機會得到較佳的結果,也就是我們將物件偵測轉換成估測 uncertainty 的問題。

YOLOv8 的特點在於,在 640 解析度的影像中,相較於其它的模型,它可以得到略高的辨識率,以及略快的速度,如下圖所示,因此,如果是考量到低解析度影像的應用,YOLOv8 是一個較佳的選擇,而且最重要的是,Ultralytics 此公司對於此開源專案持續維護,在該 repo,只要下不同的指令,就可以輕易串接不同影像來源,例如靜態圖檔或是網路攝影機,還可以將模型轉成在 NVIDIA 嵌入式平台上,可以有較快推論速度的 TensorRT 版模型。

YOLOv9 : 中研院的王博士在 2024 年初推出了 YOLOv9,其應用了PGI(Programmable Gradient Information)的概念來提升 YOLOv9 的效能,PGI 最主要的精神在於,它進一步的在訓練時使用輔助結構,幫助模型萃取出更具代表性的特徵,而該輔助結構在推論時並不需要,因為 YOLOv9 在 640 解析度下,如下圖所示,可以達到接近 56% 的辨識率,然而,下圖中的橫軸是參數的數量而不是速度,在後續我個人的實驗中發現,YOLOv9 在考量到推論速度以及相同辨識率上並不是最快的,在此我們要強調,參數較少不代表速度可以更快,但這只是在 NVIDIA 的 GPU 上分析的結果,如果我們有特規硬體,針對此模型進行最佳化,或許有機會得到更快的速度。

YOLOv10 : 來自對岸清華大學的團隊在 2024 年中,再次推出了 YOLOv10 ,其最主要的觀察就是過去 YOLO 的所有版本,都沒有納入 NMS(Non-Maximal-Suppression)的分析,也就是過去評估推論速度都沒納入 NMS。該團隊為 YOLOv10 設計了兩個 Head,分別是 One-to-Many 與 One-to-One,前者的意思是同一個物體予許模型輸出複數個偵測結果,後者只予許一個,並期待兩個 Head 的預測結果能一致,也許是說,如果模型只輸出一個預測結果,那 NMS 就不需要了。如下圖所示,YOLOv10 可以直接輸出右方的結果,而不需要先得到左邊,針對同一台車得到複數個偵測結果,再使用 NMS 來決定唯一的輸出。

在 YOLOv10 的實驗圖表中,我們可以看到其它模型 Latency 與 Latencyf 就 ms 來說有巨大的差別,例如 YOLOv8-N,如果沒有 NMS,速度會從 6.16ms 降到 1.79ms ,但 YOLOv10-N 使用 One-to-One 以及 One-to-Many 這兩個 head 偵測物體,其辨識率與 Latency 可以達到 38.5AP/1.79ms 以及 39.5AP/1.84ms,也就是說,使用 One-to-Many 其仍需要使用 NMS,所以速度略慢,但使用 one-to-one 的 head,latency 與辨識率都略低,最重要的是,如果把 NMS 的速度也納入考量,YOLOv10 此模型的速度遠大於過去所有模型,雖然 YOLOv10 相較於其它版本,就辨識率的比較略顯不公,但考量到整體速度,YOLOv10 仍然是嵌入式系統或是邊緣設備上的最佳模型。

針對各種應用,在 2024 年底的現在,YOLOv7-YOLOv10 仍有應用的機會,而不是最新一代推出後,過去的 YOLO 版本就完全過時了,在此,我們總結這四代 YOLO 的使用情境。
如果你的應用需要使用大解析度的影像(1280),你可以使用 YOLOv7,如果你的硬體最高只能接受 640 解析度的影像又需要較快的速度,請使用 YOLOv8,如果你追求 640 解析度下的最高辨識率,請使用 YOLOv9,如果在你的應用中,物體時常重疊,請使用 YOLOv10,因為它可以在不需要 NMS下得到更好的結果。
從 2022 年,我在 TibaMe 推出 深度學習影像辨識 | YOLO物件偵測全解析 課程以來,我仍不斷地更新教材,在 2024 年底,若你希望更深入了解物件偵測的實際應用,歡迎你加入課程,與我們一起在 YOLO 的世界裡,一起探索物件偵測模型的極限,成為 YOLO 物件偵測的專家 !

你將能在這堂課程中學習到…
- 多版本運作原理:課程將從理論開始,循序漸進帶你了解 YOLOv1 ~ YOLOv10 的運作原理、模型差異與技術應用。
- 實際操作與應用:透過 20+ 專案實作,掌握 YOLO 模型的使用技巧,將其應用於實際項目中,包含口罩偵測、血液偵測、車輛偵測等。
- 最新版本的特性:持續更新最新版本的介紹與應用,目的就是要幫助你掌握其功能及改進,並了解如何選擇適合的模型來解決不同的問題。
總計 12 小時的內容,邀請你與我們一起探索 YOLO 物件偵測模型的技術 ! 課程詳情 👉 https://bit.ly/3Dauyvn