close

YOLOv8 與 COCO 資料集完整教學

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

---

1. COCO 資料集介紹

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

資料集結構:

  • 圖片:超過 33 萬張,涵蓋日常生活場景。
  • 標註:邊界框、多邊形分割、關鍵點等。
  • 類別:80 類別,包括人類、動物、交通工具、家居用品等。

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

---

2. YOLOv8 簡介

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

  • 高效的物體檢測模型,支持多任務(分類、檢測、分割)。
  • 輕量且快速,適用於各種應用場景。
  • 內建訓練、推理和部署工具。

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

---

3. 安裝 YOLOv8

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

pip install ultralytics opencv-python matplotlib

驗證 YOLOv8 安裝:

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

---

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

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

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/
            

訓練程式碼:

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 文件內容範例:

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

---

6. 模型評估

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

from ultralytics import YOLO

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

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

---

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

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

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),便於部署至嵌入式設備或伺服器:

from ultralytics import YOLO

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

---

9. 注意事項

  • 確保資料格式符合 YOLO 的要求。
  • 訓練過程中,使用 GPU 加速可大幅提升速度。
  • 如需使用自定義數據,請正確準備 yaml 配置文件。

10. 結語

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

arrow
arrow
    創作者介紹
    創作者 liusming 的頭像
    liusming

    劉老師的跨域創想工坊

    liusming 發表在 痞客邦 留言(0) 人氣()