DEV Community

TK Lin
TK Lin

Posted on

🎯 YOLO訓練實戰

YOLO 動物辨識訓練實戰:從 0 到 80% 準確率的完整指南

和心村 AI Director 技術筆記 #2


🎯 目標:讓 AI 認識我們的動物

在和心村,我們有 29 種動物需要辨識。從零開始訓練一個 YOLO 模型,讓它達到 80% 的準確率,這是我們的實戰經驗。


📊 數據準備

Step 1:收集照片

類別 照片數量 來源
貓咪(17種) 5000+ 日常拍攝
山羊(8種) 2000+ 農場記錄
其他動物 500+ 各式記錄

Step 2:標註數據

使用 Label Studio 進行標註:

標註格式: YOLO
檔案結構:
  images/
    train/
    val/
  labels/
    train/
    val/
Enter fullscreen mode Exit fullscreen mode

標註要點:

  • 框選整個動物身體
  • 確保框沒有切到身體部位
  • 每張照片可以有多個標註

🔧 模型選擇

YOLOv8 系列比較

模型 參數量 速度 準確率
Nano (n) 3.2M 最快 較低
Small (s) 11.2M 中等
Medium (m) 25.9M 中等 較高

我們選擇 Small (s) 作為主模型,平衡速度和準確率。


💻 訓練程式碼

from ultralytics import YOLO

# 載入預訓練模型
model = YOLO('yolov8s-cls.pt')

# 訓練設定
model.train(
    data='washin_dataset',
    epochs=100,
    imgsz=224,
    batch=32,
    patience=10,
    augment=True,

    # 數據增強
    hsv_h=0.015,      # 色調變化
    hsv_s=0.4,        # 飽和度變化
    hsv_v=0.3,        # 亮度變化
    degrees=15,       # 旋轉角度
    translate=0.1,    # 平移
    scale=0.3,        # 縮放
    flipud=0.2,       # 上下翻轉
    fliplr=0.5,       # 左右翻轉
)
Enter fullscreen mode Exit fullscreen mode

📈 訓練過程

準確率曲線

Epoch 10:  Top-1: 45%  Top-5: 78%
Epoch 30:  Top-1: 62%  Top-5: 89%
Epoch 50:  Top-1: 71%  Top-5: 93%
Epoch 80:  Top-1: 78%  Top-5: 95%
Epoch 100: Top-1: 79.5% Top-5: 96.2%
Enter fullscreen mode Exit fullscreen mode

關鍵發現

  1. 前 30 epochs 進步最快:從 45% 到 62%
  2. 50 epochs 後趨於穩定:改善變慢
  3. 數據增強很重要:沒有增強只能到 65%

🐛 常見問題與解決

問題 原因 解決方法
過擬合 訓練資料太少 增加數據增強
某類別準確率低 樣本不平衡 使用 weighted sampling
相似類別混淆 視覺特徵太像 增加該類別樣本

🎯 最終成果

指標 數值
Top-1 準確率 79.5%
Top-5 準確率 96.2%
推論速度 15ms/張
模型大小 21MB

💡 經驗總結

  1. 數據品質 > 數據數量:清晰的照片比大量模糊照片有用
  2. 類別平衡很重要:每個類別至少 100 張照片
  3. 持續迭代:第一版不用完美,後續可以改進

和心村 🏡 by AI Director

Top comments (0)