2026 YOLO Custom Model 自訂模型完整教學 | 從訓練到推論


YOLO Custom Model 自訂模型是電腦視覺開發者的「救星」!通用 YOLO 模型在工業零件、寵物監控或特殊場景下常常辨識失準,但自訂模型可以針對特定目標重新訓練,大幅提升準確率與穩定性。最新 YOLO 版本不僅推理更快、訓練更省時,連邊緣設備也能輕鬆運行。

這篇教學就是你的「避坑指南 + 操作手冊」:從資料準備、模型訓練,到 PC、雲端或邊緣部署,全程帶代碼、模板與技巧,幫你快速完成 YOLO 自訂模型,少走 99% 彎路,輕鬆實現「想要偵測什麼就偵測什麼」。

Custom Model

什麼是 YOLO Custom Model?

YOLO Custom Model(YOLO 自訂模型)指的是在 YOLO 原有的即時目標偵測架構上,使用自有資料集重新訓練模型,讓模型專注於特定場景、特定物件或特定需求的辨識任務。
相較於官方提供的通用模型(如 COCO 預訓練模型),自訂模型能大幅提升在專用場景下的準確率與穩定性。

在實務應用中,通用模型往往無法滿足需求,例如:

  • 工業檢測中只需辨識特定零件或缺陷
  • 智慧監控中只關注人臉、手勢或特定行為
  • 醫療、農業、零售等場景的客製化辨識需求

透過 YOLO Custom Model,我們可以讓模型只學習「真正重要的目標」,減少不必要的類別干擾,同時在速度與精度之間取得更好的平衡。

核心運作模式

YOLO Custom Model 的核心流程可以拆解為四個階段:

  • 資料準備
    • 收集實際場景影像或影片
    • 使用標註工具建立符合 YOLO 格式的標籤(Bounding Box + Class)
  • 模型選擇與初始化
    • 選擇適合的 YOLO 模型版本(如 YOLOv8n / s / m)
    • 使用官方或社群提供的預訓練權重作為起點(Transfer Learning)
  • 自訂訓練(Fine-tuning)
    • 使用自有資料集進行訓練
    • 調整訓練參數(epochs、batch size、image size)
  • 推論與部署
    • 使用訓練完成的權重進行影像、影片或即時串流推論
    • 依需求部署於本地端、邊緣裝置或雲端環境

這種流程設計讓 YOLO Custom Model 具備高度彈性,非常適合快速迭代與落地應用。

開發環境

Ultralytics 已提供官方的 Python 套件與命令列工具,安裝與環境建置都非常簡單,只需要幾個步驟就能開始使用。

系統需求 :

項目建議配置
作業系統Windows / macOS / Linux
Python 版本Python 3.8 以上
GPU 支援建議使用 NVIDIA GPU(CUDA 11+)以加速訓練與推論
框架依賴PyTorch(自動安裝)

建立 YOLO 虛擬環境

為了保持開發環境乾淨、避免與其他 Python 專案的套件衝突,建議先建立一個專屬的虛擬環境:

python -m venv yoloenv

接著啟用環境:

# macOS / Linux
source yoloenv/bin/activate

# Windows
yoloenv\Scripts\activate


當你看到命令列前方出現 (yoloenv) 時,就表示虛擬環境已經啟用成功。

安裝 YOLO 套件

Ultralytics 提供官方的 YOLO 工具包,其中已包含該模型模型與命令列介面。只需一行指令即可安裝:

pip install ultralytics

安裝完成後,你可以使用以下指令檢查是否成功:

yolo version

若顯示版本號為如 8.3.x,就代表安裝完成 。

資料集準備

coco128 是 YOLO 官方提供的小型示範資料集,適合用來測試流程是否正確。

下載並解壓:

mkdir -p datasets
cd datasets
curl -L -o coco128.zip https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip
unzip coco128.zip

確認結構:

datasets/coco128/
├── images/train2017/
├── labels/train2017/
└── coco128.yaml

產生 coco128.yaml

coco128.yamlYOLO 自訂模型訓練時最重要的資料集設定檔,用途只有一個:告訴 YOLO:「你的資料集在哪?要訓練哪些類別?」它不是圖片、不是標註,而是 資料集的說明書

YOLO 在訓練時會做這件事:

  1. 讀取 coco128.yaml
  2. 找到 path
  3. 依照 train / val 路徑載入圖片
  4. 依照 ncnames 建立分類頭(classification head)

建立檔案 :

nano datasets/coco128/coco128.yaml

貼上以下內容 :

# COCO128 dataset (128 images from COCO train2017)

path: datasets/coco128

train: images/train2017
val: images/train2017   # coco128 沒有 val,用 train 代替

names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

儲存方式:

Ctrl + O → Enter → Ctrl + X

專案結構

完整的專案結構:

yolo_custom_demo/
├── datasets/
│   └── coco128/
│       ├── images/
│       │   └── train2017/
│       ├── labels/
│       │   └── train2017/
│       └── coco128.yaml
├── yoloenv/              # Python 虛擬環境
├── runs/                 # 訓練與推論輸出結果
├── yolov8n.pt            # 官方預訓練模型

Code

先回到專案根目錄再執行

yolo detect train \
  model=yolov8n.pt \
  data=datasets/coco128/coco128.yaml \
  epochs=3 \
  imgsz=640
  • yolo detect train:啟動 YOLO 目標偵測模型的訓練模式。
  • model=yolov8n.pt:指定使用官方預訓練的 YOLOv8n 模型作為起點。
  • data=datasets/coco128/coco128.yaml:指定訓練資料集的設定檔,裡面包含訓練集、驗證集及類別名稱。
  • epochs=3:訓練總迭代次數,可根據資料量與需求調整。
  • imgsz=640:輸入影像大小為 640×640,YOLO 會自動調整影像尺寸。

訓練流程

訓練期間會自動計算損失值、精度 (mAP) 以及各種指標,並將結果儲存在 runs/detect/train 目錄中。

YOLO 會自動讀取 datasets/coco128/coco128.yaml 中的 trainval 影像路徑及標註資料。

輸出

Ultralytics 8.3.241 🚀 Python-3.9.6 torch-2.8.0 CPU (Apple M4 Pro)
Model summary (fused): 72 layers, 3,151,904 parameters, 0 gradients, 8.7 GFLOPs
  • 72 layers:模型共有 72 層神經網路。
  • 3,151,904 parameters:模型總共有約 315 萬個可訓練參數。
  • 0 gradients:這裡表示目前是推論/評估模式,不更新權重。
  • 8.7 GFLOPs:每次前向運算約需 8.7 億次浮點運算。

結論

YOLO Custom Model 自訂模型訓練,本質上是「將通用電腦視覺能力轉化為特定場景解決方案」的工程流程。透過明確的資料結構、標準化的資料集設定(如 coco128.yaml)以及一致的訓練與推論指令,我們可以在本地快速完成從資料準備、模型訓練到推論驗證的完整閉環。即使是輕量級資料集,也能短時間驗證模型是否「學得到、用得起」,對工業檢測、特定物件識別或內部 PoC 專案特別實用。

更重要的是,自訂模型的價值在於可控性與可重現性,而非追求極致指標。透過本地虛擬環境、清晰的專案結構與可追蹤的訓練輸出,我們可以持續調整資料品質、訓練參數與模型版本,使模型逐步貼近實際應用需求。YOLO Custom Model 是一個可持續演進的工程流程,只要掌握正確的資料組織與訓練節奏,就能穩定將電腦視覺技術落地到實務場景。