📝 はじめに
こんにちは、piyovateです。
YOLO(Ultralytics系)は学習時に指定できるパラメータが非常に多く、
「動かしてはいるけど、各パラメータの意味を毎回思い出すのが大変」
という状態になりがちです。
本記事では、
- YOLOの
model.train()でよく使うパラメータ - それぞれの役割・意図
- どんなときに調整するか
を 完全に備忘録目的 でまとめます。
(GPU / CPU 問わず使える考え方に絞ります)
🎯 今回まとめる対象
以下のような学習設定を前提にしています。
model = YOLO("yolo11x.pt")
model.train(
data=DATA_YAML,
project="runs/detect",
name="train-x",
device="cpu", # ※ device自体の意味のみ扱う
imgsz=960,
batch=8,
epochs=300,
patience=50,
mosaic=1.0,
mixup=0.15,
copy_paste=0.3,
close_mosaic=30,
optimizer="AdamW",
lr0=0.001,
lrf=0.01,
warmup_epochs=5,
)
🖥️ 基本パラメータ
device
device="cpu" / device=0
- 学習を実行するデバイス指定
-
0や0,1→ GPU -
"cpu"→ CPU
👉 後からGPUで学習する場合でもコードは同じ
👉 環境に応じて切り替えるだけ
imgsz
imgsz=960
- 学習時の入力画像サイズ
- 大きいほど 小物体検出に有利
- 計算量・メモリ消費が急激に増える
目安:
| imgsz | 特徴 |
|---|---|
| 640 | 標準・高速 |
| 960 | 精度と負荷のバランス |
| 1280 | 高精度(重い) |
batch
batch=8
- 1 stepで処理する画像枚数
- 大きいほど勾配が安定
- メモリ制約を強く受ける
👉 OOMが出たら batch → imgsz の順で下げる
📚 学習制御系パラメータ
epochs
epochs=300
- 学習の最大epoch数
- 実際には Early Stopping が止める
👉 多めに設定しておくのが安全
patience(Early Stopping)
patience=50
- validation指標が改善しないepoch数
- 大きいほど粘る
用途別目安:
- 軽い学習:20〜30
- 本腰学習:50以上
🎨 データ拡張系パラメータ
mosaic
mosaic=1.0
- 4枚の画像を合成
- 汎化性能向上に非常に効果的
👉 基本ON推奨
mixup
mixup=0.15
- 2枚の画像をブレンド
- 過学習防止・境界の滑らかさ向上
注意:
- 強すぎると収束が遅くなる
copy_paste
copy_paste=0.3
- オブジェクト単位でコピー
- 少数クラス対策に有効
👉 クラス不均衡がある場合は積極的に使う
close_mosaic
close_mosaic=30
- 最後のN epochでmosaicを無効化
- 実画像分布に寄せる最終調整
👉 mAP安定にかなり効く
⚙️ 最適化・学習率系
optimizer
optimizer="AdamW"
- Adam + Weight Decay
- 初期収束が安定
lr0 / lrf
lr0=0.001
lrf=0.01
- lr0:初期学習率
- lrf:最終学習率の倍率
👉 後半しっかり減衰させたい場合は lrf を小さく
warmup_epochs
warmup_epochs=5
- 学習初期のlrを徐々に上げる
- loss爆発防止
📝 まとめ(自分用チェックリスト)
- imgsz / batch は精度と計算量のトレードオフ
- epochsは多め、止めるのはpatience
- mosaic + close_mosaic の組み合わせは鉄板
- クラス不均衡があれば copy_paste
- 学習率系は触る前に データと損失を見る
🔜 次にまとめたい内容
- 小物体検出特化パラメータ
- クラス不均衡時の調整指針
- 学習が発散・収束しない時のチェックポイント
- いいね 👍 やストック 📦 してもらえると励みになります!
- それでは、また次回の記事でお会いしましょう ✨