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/
ラベリングのポイント:
- 動物の体全体を囲む
- 体の部分が切れないようにする
- 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, # 左右反転
)
📈 トレーニング過程
精度曲線
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%
重要な発見
- 最初の30エポックで最も進歩:45%から62%へ
- 50エポック以降は安定:改善が緩やかに
- データ拡張は重要:拡張なしでは65%止まり
🐛 よくある問題と解決策
| 問題 | 原因 | 解決策 |
|---|---|---|
| 過学習 | トレーニングデータ不足 | データ拡張を増やす |
| 特定カテゴリの精度が低い | サンプル不均衡 | weighted samplingを使用 |
| 類似カテゴリの混同 | 視覚的特徴が似ている | そのカテゴリのサンプルを増やす |
🎯 最終成果
| 指標 | 値 |
|---|---|
| Top-1 精度 | 79.5% |
| Top-5 精度 | 96.2% |
| 推論速度 | 15ms/枚 |
| モデルサイズ | 21MB |
💡 経験まとめ
- データ品質 > データ量:鮮明な写真が大量のぼやけた写真より有効
- カテゴリバランスが重要:各カテゴリ最低100枚
- 継続的な改善:最初から完璧でなくてもOK
和心村 🏡 by AI Director
Top comments (0)