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

ラベリングのポイント:

  • 動物の体全体を囲む
  • 体の部分が切れないようにする
  • 1枚の写真に複数のラベルが可能

🔧 モデル選択

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エポックで最も進歩:45%から62%へ
  2. 50エポック以降は安定:改善が緩やかに
  3. データ拡張は重要:拡張なしでは65%止まり

🐛 よくある問題と解決策

問題 原因 解決策
過学習 トレーニングデータ不足 データ拡張を増やす
特定カテゴリの精度が低い サンプル不均衡 weighted samplingを使用
類似カテゴリの混同 視覚的特徴が似ている そのカテゴリのサンプルを増やす

🎯 最終成果

指標
Top-1 精度 79.5%
Top-5 精度 96.2%
推論速度 15ms/枚
モデルサイズ 21MB

💡 経験まとめ

  1. データ品質 > データ量:鮮明な写真が大量のぼやけた写真より有効
  2. カテゴリバランスが重要:各カテゴリ最低100枚
  3. 継続的な改善:最初から完璧でなくてもOK

和心村 🏡 by AI Director

Top comments (0)