YOLO26のトレーニングレシピ#
はじめに#
このガイドでは、公式の YOLO26 の事前トレーニング済みチェックポイントを COCO で作成するために使用された正確な トレーニング レシピについて説明します。ここに示されているすべての ハイパーパラメータ は、公開されている .pt の重み付けにすでに組み込まれており、プログラムで確認できます。
アーキテクチャだけでなく、パフォーマンスを形作った学習率のスケジュール、データ拡張パイプライン、損失の重みなど、公式チェックポイントに何が組み込まれているかを知ることは、ファインチューニング時に、どのデータ拡張を維持し、どの損失関数の重みを調整し、どのようなオプティマイザ設定がデータセットサイズに最適であるかをより適切に判断するのに役立ちます。
トレーニングの概要#
すべてのYOLO26ベースモデルは、MuSGDオプティマイザーと**batch size 128を使用し、COCOデータセットにて640x640**解像度でトレーニングされました。1回の実行でランダムな重みから開始するのではなく、モデルは中間事前学習済み重みから初期化され、evolutionary searchによって見つかったハイパーパラメータで微調整されました。すべてのモデルサイズの完全なトレーニングログと指標は、Ultralytics Platformでご確認いただけます。
全サイズ共通の重要な設計上の選択:
- NMSフリーの1対1ヘッドを備えたエンドツーエンドトレーニング (
end2end=True) - 重み行列(2D線形重みおよび2Dにリシェイプされる4D畳み込みフィルタ)に対して、SGDとMuonスタイルの直交化更新を組み合わせた**MuSGDオプティマイザ**
- 最後の10エポックで無効化される強力なモザイク拡張(~0.9-1.0の確率) (
close_mosaic=10) - 積極的なスケールオーグメンテーション (0.56-0.95)、様々なサイズのオブジェクトに対応
- 最小限の回転/せん断、ほとんどのサイズで幾何学的歪みを低く抑制
YOLO26チェックポイントのトレーニング引数の確認#
すべてのUltralyticsチェックポイントには、作成に使用された完全なトレーニング設定が保存されているため、このページに記載されている数値を自分で検証できます:
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])出力には、このページで文書化されているすべてのレシピ値を含む、100を超えるエントリの完全な設定がリストされます。yolo26n.pt の抜粋:
batch: 128
...
box: 5.62767
...
close_mosaic: 10
cls: 0.56099
...
dfl: 9.03871
...
epochs: 245
...
lr0: 0.0054
lrf: 0.04952
...
optimizer: MuSGDこれは、公式リリースや自身のファインチューニング済みモデルなど、任意の .pt チェックポイントで機能します。設定可能なトレーニング引数の完全なリストについては、トレーニング設定リファレンスを参照してください。
モデルサイズごとのYOLO26トレーニングハイパーパラメータ#
以下の表は、オプティマイザとスケジュール、損失の重み、データ拡張のカテゴリ別にレシピをグループ化しています。すべての値は、リリースされたチェックポイントに埋め込まれた train_args から直接取得されています。
オプティマイザと学習率#
これらのオプティマイザとスケジュールの設定が各サイズのCOCO事前学習を推進しました。Nモデルが他と異なる点に注目してください:
| 設定 | N | S | M | L | X |
|---|---|---|---|---|---|
optimizer | MuSGD | MuSGD | MuSGD | MuSGD | MuSGD |
lr0 | 0.0054 | 0.00038 | 0.00038 | 0.00038 | 0.00038 |
lrf | 0.0495 | 0.882 | 0.882 | 0.882 | 0.882 |
momentum | 0.947 | 0.948 | 0.948 | 0.948 | 0.948 |
weight_decay | 0.00064 | 0.00027 | 0.00027 | 0.00027 | 0.00027 |
warmup_epochs | 0.98 | 0.99 | 0.99 | 0.99 | 0.99 |
epochs | 245 | 70 | 80 | 60 | 40 |
batch | 128 | 128 | 128 | 128 | 128 |
imgsz | 640 | 640 | 640 | 640 | 640 |
Nモデルは急な減衰を伴うより高い初期学習率を使用し (lrf=0.0495)、S/M/L/Xモデルはより緩やかなスケジュールで大幅に低い初期LRを使用しました (lrf=0.882)。これは、小型モデルと大型モデルの異なる収束ダイナミクスを反映しています。小型モデルは効果的に学習するために、より積極的な更新を必要とします。
損失関数の重み#
損失の重みは、検出損失の3つのコンポーネント(バウンディングボックスIoU回帰 (box)、分類 (cls)、およびボックス距離回帰項 (dfl))のバランスをとります。DFLフリーのYOLO26は、分布焦点損失ではなく、正規化されたボックス距離に対するL1損失に重み付けするために dfl ゲインを再利用していることに注意してください:
| 設定 | N | S | M | L | X |
|---|---|---|---|---|---|
box | 5.63 | 9.83 | 9.83 | 9.83 | 9.83 |
cls | 0.56 | 0.65 | 0.65 | 0.65 | 0.65 |
dfl | 9.04 | 0.96 | 0.96 | 0.96 | 0.96 |
Nモデルは dfl の距離回帰項を優先し、S/M/L/XモデルはIoUベースのボックス回帰に重点を置きます。分類損失は、すべてのサイズで比較的一貫したままです。
オーグメンテーションパイプライン#
各技術の詳細な説明については、YOLOデータ拡張ガイドを参照してください。
| 設定 | N | S | M | L | X |
|---|---|---|---|---|---|
mosaic | 0.909 | 0.992 | 0.992 | 0.992 | 0.992 |
mixup | 0.012 | 0.05 | 0.427 | 0.427 | 0.427 |
copy_paste | 0.075 | 0.404 | 0.304 | 0.404 | 0.404 |
scale | 0.562 | 0.9 | 0.95 | 0.95 | 0.95 |
fliplr | 0.606 | 0.304 | 0.304 | 0.304 | 0.304 |
degrees | 1.11 | ~0 | ~0 | ~0 | ~0 |
shear | 1.46 | ~0 | ~0 | ~0 | ~0 |
translate | 0.071 | 0.275 | 0.275 | 0.275 | 0.275 |
hsv_h | 0.014 | 0.013 | 0.013 | 0.013 | 0.013 |
hsv_s | 0.645 | 0.353 | 0.353 | 0.353 | 0.353 |
hsv_v | 0.566 | 0.194 | 0.194 | 0.194 | 0.194 |
bgr | 0.106 | 0.0 | 0.0 | 0.0 | 0.0 |
~0 として示されている値は、実際のチェックポイントでは0.01未満です(たとえば、Sモデルでは degrees=0.00012)。このデータ拡張は実質的に無効になっています。
大型モデルはより多くの容量を持ち、より強い正則化の恩恵を受けるため、全体的により積極的なデータ拡張(より高いミックスアップ、コピーペースト、スケール)を使用します。Nモデルは、意味のある回転、せん断、およびBGR拡張を持つ唯一のサイズです。
内部トレーニングパラメータ#
上級者向け:内部パイプラインパラメータ
チェックポイントには、内部トレーニングパイプラインで使用されたものの、default.yaml 内でユーザー設定可能な設定として公開されていないパラメータも含まれています:
| 設定 | 説明 | N | S | M | L | X |
|---|---|---|---|---|---|---|
muon_w | MuSGDにおけるMuon更新重み | 0.528 | 0.436 | 0.436 | 0.436 | 0.436 |
sgd_w | MuSGDにおけるSGD更新重み | 0.674 | 0.479 | 0.479 | 0.479 | 0.479 |
cls_w | 内部分類ウェイト | 2.74 | 3.48 | 3.48 | 3.48 | 3.48 |
o2m | One-to-manyヘッド損失ウェイト | 1.0 | 0.705 | 0.705 | 0.705 | 0.705 |
topk | Top-kラベル割り当て | 8 | 5 | 5 | 5 | 5 |
ファインチューニング時のそれらの意味については、これらのパラメータに関するFAQエントリを参照してください。
独自のデータセットでのYOLO26のファインチューニング#
独自のデータセットでYOLO26をファインチューニングする場合、完全な事前学習レシピを再現する必要はありません。事前学習済みの重みには、COCOトレーニングからのデータ拡張と最適化の知識がすでにエンコードされています。より一般的なトレーニングのベストプラクティスについては、モデルトレーニングのヒントを参照してください。
デフォルト設定でのファインチューニング#
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)デフォルト設定でのファインチューニングは強力なベースラインとなります。特定の理由がある場合のみハイパーパラメータを調整してください。
YOLO26のハイパーパラメータを調整するタイミング#
小規模データセット(1,000画像未満):
- データ拡張の強度を下げる:
mosaic=0.5、mixup=0.0、copy_paste=0.0 - 学習率を下げる:
lr0=0.001 - 忍耐力を持ってより少ないエポックを使用する:
epochs=50、patience=20 - バックボーン層の凍結を検討する:
freeze=10
大規模データセット(50,000画像超):
- 事前学習レシピにより近づける
- 長時間の実行には
optimizer=MuSGDの使用を検討する - データ拡張を増やす:
mosaic=1.0、mixup=0.3、scale=0.9
ドメイン固有の画像(航空、医療、水中など):
- 垂直方向の向きが異なる場合は
flipud=0.5を増やす - オブジェクトが任意の回転で表示される場合は
degreesを増やす - 照明条件がCOCOと大きく異なる場合は、
hsv_sとhsv_vを調整する
自動化されたハイパーパラメータ最適化については、ハイパーパラメータチューニングガイドを参照してください。
モデルサイズの選択#
| モデル | 最適な用途 | バッチサイズの指針 |
|---|---|---|
| YOLO26n | エッジデバイス、モバイル、CPUでのリアルタイム推論 | コンシューマー向けGPUでの大きなバッチサイズ (64-128) |
| YOLO26s | 速度と精度のバランス | 中程度のバッチサイズ (32-64) |
| YOLO26m | 中程度の計算リソースでの高い精度 | 小さいバッチサイズ (16-32) |
| YOLO26l | GPU利用時の高い精度 | 小さいバッチサイズ (8-16) またはマルチGPU |
| YOLO26x | 最大の精度、サーバーデプロイ | 小さいバッチサイズ (4-8) またはマルチGPU |
エクスポートおよびデプロイのオプションについては、エクスポートガイドとモデルデプロイオプションを参照してください。
結論#
YOLO26のチェックポイントには完全なトレーニングレシピが埋め込まれているため、すべてのモデルサイズの背後にある正確なハイパーパラメータは、train_args の検索からいつでも取得できます。デフォルトからファインチューニングを開始し、このページの表を使用して意図的に調整し、独自の検証セットに対してすべての変更を確認してください。途中で質問が生じた場合は、Ultralytics GitHubリポジトリまたはUltralytics Discordサーバーでコミュニティに質問してください。
よくある質問 (FAQ)#
torch.load()でチェックポイントをロードし、train_argsキーにアクセスするか、Ultralytics APIでmodel.ckpt["train_args"]を使用します。完全な例については、YOLO26チェックポイントのトレーニング引数の検査を参照してください。大型モデルは容量が大きいため収束が早くなり、一般にCOCOでのエポック数が少なくなります(XモデルはNの245エポックに対して40エポックでトレーニングされました)。ただし、カウントは厳密に単調ではありません(Sは70、Mは80を使用)。独自のデータセットでファインチューニングする場合、最適なエポック数はモデルサイズではなく、データセットのサイズと複雑さによって異なります。適切な停止点を自動的に見つけるために、早期終了 (
patience) を使用してください。通常、選択する必要はありません。デフォルトの
optimizer=autoを使用すると、Ultralyticsは長時間のトレーニング実行(>10,000イテレーション)には MuSGD を、短時間の実行には AdamW を自動的に選択します。必要に応じて、明示的にoptimizer=MuSGDを設定できます。MuSGDの動作の詳細については、トレーニングドキュメントを参照してください。これらは、ベースチェックポイントを生成したトレーニングパイプラインからの内部パラメータであり、再現性のために
train_argsに記録されます。これらはdefault.yamlのユーザー設定可能な設定ではなく、model.train()に渡すと無効な引数エラーが発生します。パブリックパッケージはこれらを読み取りません。ファインチューニング時にこれらを設定する必要はありません。モデルサイズごとの値については、内部トレーニングパラメータを参照してください。正確にはそうではありません。チェックポイントは、パブリックコードベースにない追加機能(設定可能な
o2mの重みやcls_wなど)を備えた内部トレーニングブランチを使用して生成されました。このページに文書化されているハイパーパラメータをパブリックUltralyticsパッケージで使用することで非常に近い結果を得ることができますが、正確な再現には内部ブランチが必要です。