close
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 套件:
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 資料集的應用,從基礎檢測到模型訓練與部署。如果有其他問題或需要進一步指導,請隨時留言交流!
文章標籤
全站熱搜