什么是 YOLOv8?
YOLOv8 是來自 Ultralytics 的最新的基于 YOLO 的對象檢測模型系列,提供最先進的性能。
利用以前的 YOLO 版本, YOLOv8 模型更快、更準確 ,同時為訓練模型提供統(tǒng)一框架,以執(zhí)行
- 物體檢測
- 實例分割
- 圖像分類
在撰寫本文時,許多功能尚未添加到 Ultralytics YOLOv8 存儲庫中。這包括訓練模型的完整導出功能集。此外,Ultralytics 將在 Arxiv 上發(fā)布一篇論文,將 YOLOv8 與其他最先進的視覺模型進行比較。
YOLOv8 的新特性
Ultralytics 為 YOLO 模型發(fā)布了一個全新的存儲庫。它被構建為 用于訓練對象檢測、實例分割和圖像分類模型的統(tǒng)一框架。
以下是有關新版本的一些主要功能:
- 用戶友好的 API(命令行 + Python)
- 更快更準確
- 支持
- 物體檢測
- 實例分割
- 圖像分類
- 可擴展到所有以前的版本
- 新骨干網絡
- 新的 Anchor-Free head
- 新的損失函數(shù)
YOLOv8 還高效靈活地支持多種導出格式,并且該模型可以在 CPU 和 GPU 上運行。
YOLOv8 中可用的模型
YOLOv8 模型的每個類別中有五個模型用于檢測、分割和分類。YOLOv8 Nano 是最快和最小的,而 YOLOv8 Extra Large (YOLOv8x) 是其中最準確但最慢的。
<table><tbody><tr><td>YOLOv8n</td><td>YOLOv8s</td><td>YOLOv8m</td><td>YOLOv8l</td><td>YOLOv8x</td></tr></tbody></table>
YOLOv8 捆綁了以下預訓練模型:
- 在圖像分辨率為 640 的 COCO 檢測數(shù)據(jù)集上訓練的對象檢測檢查點。
- 在圖像分辨率為 640 的 COCO 分割數(shù)據(jù)集上訓練的實例分割檢查點。
- 在圖像分辨率為 224 的 ImageNet 數(shù)據(jù)集上預訓練的圖像分類模型。
讓我們看一下使用 YOLOv8x 檢測和實例分割模型的輸出。
如何使用 YOLOv8?
要充分發(fā)揮 YOLOv8 的潛力,需要從存儲庫和ultralytics包中安裝要求。
要安裝要求,我們首先需要克隆存儲庫。
git clone https://github.com/ultralytics/ultralytics.git
接下來,安裝requirements
pip install -r requirements.txt
在最新版本中,Ultralytics YOLOv8 提供了完整的命令行界面 (CLI) API 和 Python SDK,用于執(zhí)行訓練、驗證和推理。
要使用yoloCLI,我們需要安裝ultralytics包。
pip install ultralytics
如何使用命令行界面 (CLI) 使用 YOLOv8?
安裝必要的包后,我們可以使用命令訪問 YOLOv8 CLI yolo。以下是使用yoloCLI 運行對象檢測推理的示例。
yolo task=detect \
mode=predict \
model=yolov8n.pt \
source='image.jpg'
該task標志可以接受三個參數(shù):detect、classify和segment。同樣,模式可以是train、val或之一predict。我們也可以像export導出經過訓練的模型時一樣傳遞模式。
下圖顯示了所有可能的yoloCLI 標志和參數(shù)。
如何使用 Python API 使用 YOLOv8?
我們還可以創(chuàng)建一個簡單的 Python 文件,導入 YOLO 模塊并執(zhí)行我們選擇的任務。
from ultralytics import YOLO
model = YOLO('yolov8n.pt') # 加載預訓練的 YOLOv8n 模型
model.train(data='coco128.yaml') # 訓練模型model.val() # 在驗證集
模型
上評估模型性能.predict(source='https://ultralytics.com/images/bus.jpg') # 對圖像進行預測
model.export(format='onnx') # 將模型導出為 ONNX 格式
例如,上述代碼首先會在COCO128數(shù)據(jù)集上訓練YOLOv8 Nano模型,在驗證集上進行評估,并對樣本圖像進行預測。
讓我們使用yoloCLI 并使用對象檢測、實例分割和圖像分類模型進行推理。
物體檢測的推理結果
以下命令使用 YOLOv8 Nano 模型對視頻運行檢測。
yolo task=detect mode=predict model=yolov8n.pt source='input/video_3.mp4' show=True
推理在筆記本電腦 GTX 1060 GPU 上以接近105 FPS 的速度運行。我們得到以下輸出。
<video src="https://learnopencv.com/wp-content/uploads/2023/01/yolov8-nano-detection-inference-1.mp4" control></video>
Clip 1. 使用 YOLOv8 Nano 模型進行檢測推理。
YOLOv8 Nano 模型在幾幀中將貓混淆為狗。讓我們使用 YOLOv8 Extra Large 模型對同一視頻運行檢測并檢查輸出。
yolo task=detect mode=predict model=yolov8x.pt source='input/video_3.mp4' show=True
Extra Large 模型在 GTX 1060 GPU 上的平均運行速度為 17 FPS。
<video src="https://learnopencv.com/wp-content/uploads/2023/01/yolov8-x-detection-inference.mp4" control></video>
Clip 2. 使用 YOLOv8 超大模型進行檢測推理。
雖然這次錯誤分類稍微少一些,但模型仍然在一些幀中錯誤地檢測到長凳。
實例分割的推理結果
使用 YOLOv8 實例分割模型運行推理同樣簡單。我們只需要更改上面命令中的task和model名稱。
yolo task=segment mode=predict model=yolov8x-seg.pt source='input/video_3.mp4' show=True
因為實例分割與對象檢測相結合,所以這次的平均 FPS 約為 13。
<video src="https://learnopencv.com/wp-content/uploads/2023/01/yolov8x-segment.mp4" control></video>
Clip 3. 使用 YOLOv8 超大模型的分割推理。
分割圖在輸出中看起來非常干凈。即使貓在最后幾幀中躲在方塊下,模型也能夠檢測并分割它。
圖像分類的推理結果
最后,由于 YOLOv8 已經提供了預訓練的分類模型,讓我們使用該yolov8x-cls模型對同一視頻進行分類推理。這是存儲庫提供的最大分類模型。
yolo task=classify mode=predict model=yolov8x-cls.pt ource='input/video_3.mp4' show=True
<video src="https://learnopencv.com/wp-content/uploads/2023/01/yolov8-x-cls-1.mp4" control></video>
Clip 4. 使用 YOLOv8 超大模型進行分類推理。
默認情況下,視頻使用模型預測的前 5 個類進行注釋。在沒有任何后處理的情況下,注釋直接匹配 ImageNet 類名。
YOLOv8 對比 YOLOv7 對比 YOLOv6 對比 YOLOv5
與之前的 YOLO 模型相比,YOLOv8 模型的表現(xiàn)似乎要好得多。不僅是 YOLOv5 模型,YOLOv8 也領先于 YOLOv7 和 YOLOv6 模型。
YOLOv8 與其他 YOLO 模型的對比。與以 640 圖像分辨率訓練的其他 YOLO 模型相比,所有 YOLOv8 模型在參數(shù)數(shù)量相似的情況下都具有更好的吞吐量。
現(xiàn)在,讓我們詳細了解最新的 YOLOv8 模型與 Ultralytics 的 YOLOv5 模型的性能對比。下表顯示了 YOLOv8 和 YOLOv5 之間的綜合比較。
整體比較
YOLOv8 模型與 YOLOv5 模型的對比。物體檢測比較
YOLOv8 與 YOLOv5 對象檢測模型。實例分割比較
YOLOv8 與 YOLOv5 實例分割模型。圖像分類比較
YOLOv8 與 YOLOv5 圖像分類模型。很明顯,除了其中一個分類模型外,最新的 YOLOv8 模型與 YOLOv5 相比要好得多。
YOLOv8目標檢測模型的演進
下圖顯示了 YOLO 對象檢測模型的時間線以及 YOLOv8 的演變過程。
YOLOv8目標檢測模型的演進。YOLOv1
YOLO 目標檢測的第一個版本,即 YOLOv1,由 Joseph Redmon 等人發(fā)布。2015 年。它是第一個單階段目標檢測 (SSD) 模型,它催生了 SSD 和所有后續(xù)的 YOLO 模型。
YOLO 9000(v2)
YOLOv2,也稱為 YOLO 9000,由 YOLOv1 的原作者 Joseph Redmon 發(fā)布。它通過引入錨框的概念和更好的骨干網 Darknet-19 改進了 YOLOv1。
YOLOv3
2018 年,Joseph Redmon 和 Ali Farhadi 發(fā)表了 YOLOv3。它與其說是架構上的飛躍,不如說是技術報告,但仍然是 YOLO 家族的重大改進。YOLOv3 使用 Darknet-53 主干、殘差連接、更好的預訓練和圖像增強技術帶來改進。
Ultralytics YOLO 對象檢測模型
YOLOv3 之前的所有 YOLO 目標檢測模型都是使用 C 編程語言編寫的,并使用 Darknet 框架。新手發(fā)現(xiàn)很難遍歷代碼庫和微調模型。
與 YOLOv3 大約同時,Ultralytics 發(fā)布了第一個使用 PyTorch 框架實現(xiàn)的 YOLO (YOLOv3)。對于遷移學習,它也更容易訪問和使用。
在發(fā)布 YOLOv3 后不久,Joseph Redmon 離開了計算機視覺研究社區(qū)。YOLOv4(由 Alexey 等人開發(fā))是最后一個用 Darknet 編寫的 YOLO 模型。之后,YOLO object detections 出現(xiàn)了很多次。Scaled YOLOv4、YOLOX、PP-YOLO、YOLOv6 和 YOLOv7 是其中一些突出的。
在 YOLOv3 之后,Ultralytics 還發(fā)布了 YOLOv5,它比所有其他 YOLO 模型更好、更快、更易于使用。
截至目前(2023 年 1 月),Ultralytics 在ultralytics存儲庫下發(fā)布了 YOLOv8,這可能是迄今為止最好的 YOLO 模型。
結論
在本文中,我們探討了最新一期的 YOLO 模型,即 YOLOv8。我們介紹了新模型、它們的性能以及軟件包附帶的命令行界面。除此之外,我們還對視頻進行了推理。
本文由mdnice多平臺發(fā)布






