DigiHouse
日本語

TECH ARTICLE · NCU · 6 MIN READ

Blog / NCU

第 39 課|YOLOv8 與 COCO 資料集完整教學

YOLOv8 與 COCO 資料集完整教學。本文已重新整理為適合 DigiHouse 閱讀的課程文章,並保留原始 PIXNET 刊載網址。

YOLOv8 與 COCO 資料集完整教學

本篇文章將帶領你學習如何使用 YOLOv8 與 COCO 資料集進行物體檢測。內容涵蓋 COCO 資料集介紹、YOLOv8 模型的設置、訓練過程以及檢測和評估。

1. COCO 資料集介紹

COCO (Common Objects in Context) 是一個廣泛應用於電腦視覺任務的公開資料集,提供高質量的標註數據,包含 80 種常見物體類別,如 person、car、dog 等。

資料集結構:

• 圖片:超過 33 萬張,涵蓋日常生活場景。

• 標註:邊界框、多邊形分割、關鍵點等。

• 類別:80 類別,包括人類、動物、交通工具、家居用品等。

COCO 資料集可從其官網下載:COCO 官方網站

2. YOLOv8 簡介

YOLOv8 是 YOLO 系列的最新版本,由 Ultralytics 開發,提供以下特性:

• 高效的物體檢測模型,支持多任務(分類、檢測、分割)。

• 輕量且快速,適用於各種應用場景。

• 內建訓練、推理和部署工具。

YOLOv8 支持直接與 COCO 資料集整合,便於進行自定義訓練和評估。

3. 安裝 YOLOv8

首先,安裝必要的 Python 套件:

text
pip install ultralytics opencv-python matplotlib

驗證 YOLOv8 安裝:

text
from ultralytics import YOLO
model = YOLO('yolov8n.pt')  # 測試 YOLOv8 Nano 模型

4. 使用預訓練的 YOLOv8 模型進行檢測

YOLOv8 提供了在 COCO 資料集上預訓練的權重(例如 yolov8n.pt, yolov8m.pt)。以下程式碼演示如何使用預訓練模型進行圖片目標檢測:

python
from ultralytics import YOLO
import cv2

# 加載 YOLOv8 模型
model = YOLO('yolov8n.pt')  # Nano 模型

# 圖片檢測
image_path = 'image.jpg'  # 替換為您的圖片路徑
results = model(image_path)

# 顯示檢測結果
annotated_image = results[0].plot()
cv2.imshow('YOLOv8 Detection', annotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

5. 自定義 YOLOv8 模型的訓練

使用 COCO 資料集或自定義數據進行訓練:

準備資料集:

• 資料格式:YOLO 格式(.txt 文件標註,每行表示一個物體的類別與邊界框座標)。

• 資料目錄結構: datasets/ ├── train/ │ ├── images/ │ ├── labels/ ├── val/

訓練程式碼:

text
from ultralytics import YOLO

# 初始化 YOLO 模型
model = YOLO('yolov8n.pt')  # 使用預訓練的 Nano 模型

# 開始訓練
model.train(data='datasets/coco.yaml', epochs=50, batch=16, imgsz=640)

# 訓練完成後,模型會保存至 runs/train/exp/weights/best.pt

COCO.yaml 文件內容範例:

text
train: datasets/train/images
val: datasets/val/images
nc: 80  # 類別數量
names: [ 'person', 'bicycle', 'car', 'motorcycle', ... ]  # 類別名稱

6. 模型評估

使用 COCO 資料集或驗證數據進行模型評估:

text
from ultralytics import YOLO

# 加載訓練完成的模型
model = YOLO('runs/train/exp/weights/best.pt')

# 評估模型
metrics = model.val(data='datasets/coco.yaml')
print(metrics)  # 輸出 mAP、精度、召回率等指標

7. 使用自定義模型進行檢測

使用訓練完成的模型進行圖片或影片檢測:

text
from ultralytics import YOLO
import cv2

# 加載自定義模型
model = YOLO('runs/train/exp/weights/best.pt')

# 圖片檢測
image_path = 'image.jpg'
results = model(image_path)

# 顯示結果
annotated_image = results[0].plot()
cv2.imshow('Custom YOLOv8 Detection', annotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

8. 部署與應用

YOLOv8 支持導出模型為多種格式(如 ONNX、TensorRT),便於部署至嵌入式設備或伺服器:

text
from ultralytics import YOLO

# 將模型導出為 ONNX 格式
model = YOLO('runs/train/exp/weights/best.pt')
model.export(format='onnx')

9. 注意事項

• 確保資料格式符合 YOLO 的要求。

• 訓練過程中,使用 GPU 加速可大幅提升速度。

• 如需使用自定義數據,請正確準備 yaml 配置文件。

10. 結語

本教學涵蓋了 YOLOv8 與 COCO 資料集的應用,從基礎檢測到模型訓練與部署。如果有其他問題或需要進一步指導,請隨時留言交流!

劉老師的跨域創想工坊

本文亦刊載於 PIXNET

https://liusming.pixnet.net/blog/posts/14222888508