2026 YOLO Custom Model 自訂模型完整教學 | 從訓練到推論
YOLO Custom Model 自訂模型是電腦視覺開發者的「救星」!通用 YOLO 模型在工業零件、寵物監控或特殊場景下常常辨識失準,但自訂模型可以針對特定目標重新訓練,大幅提升準確率與穩定性。最新 YOLO 版本不僅推理更快、訓練更省時,連邊緣設備也能輕鬆運行。
這篇教學就是你的「避坑指南 + 操作手冊」:從資料準備、模型訓練,到 PC、雲端或邊緣部署,全程帶代碼、模板與技巧,幫你快速完成 YOLO 自訂模型,少走 99% 彎路,輕鬆實現「想要偵測什麼就偵測什麼」。

內容
什麼是 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.yaml 是 YOLO 自訂模型訓練時最重要的資料集設定檔,用途只有一個:告訴 YOLO:「你的資料集在哪?要訓練哪些類別?」它不是圖片、不是標註,而是 資料集的說明書。
YOLO 在訓練時會做這件事:
- 讀取
coco128.yaml - 找到
path - 依照
train/val路徑載入圖片 - 依照
nc與names建立分類頭(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 中的 train 和 val 影像路徑及標註資料。
輸出
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 是一個可持續演進的工程流程,只要掌握正確的資料組織與訓練節奏,就能穩定將電腦視覺技術落地到實務場景。




