Skip to main content

YOLO26 トレーニングレシピ

はじめに

このガイドでは、COCO 上で公式の YOLO26 事前学習済みチェックポイントを生成するために使用された正確な トレーニング レシピを説明します。ここに示すすべての ハイパーパラメータ はリリースされた .pt ウェイトにすでに組み込まれており、プログラムで検査できます。

ベースモデルがどのようにトレーニングされたかを理解することで、ファインチューニング 時により良い判断ができます: どの データ拡張 を保持するか、どの 損失関数 ウェイトを調整するか、そしてデータセットサイズに対してどのオプティマイザ設定が最適かを判断できます。

このガイドの対象者

このガイドは、公式YOLO26チェックポイントに何が含まれているかを理解したい実践者向けです。アーキテクチャだけでなく、パフォーマンスを形作った 学習率 スケジュール、拡張パイプライン、損失ウェイトも含みます。この情報を活用して、独自のデータでファインチューニングする際に適切な選択をしてください。

トレーニング引数の検査

すべてのUltralyticsチェックポイントには、それを生成するために使用した完全なトレーニング設定が保存されています。これらの設定はいつでも検査できます。

チェックポイントのトレーニング引数を検査する
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
print(model.ckpt["train_args"])

これは任意の .pt チェックポイントで機能します。公式リリースと独自のファインチューニング済みモデルの両方に対応しています。設定可能なトレーニング引数の完全なリストについては、トレーニング設定リファレンス をご覧ください。

トレーニング概要

すべてのYOLO26ベースモデルは、MuSGD オプティマイザと バッチサイズ 128 を使用して、640x640 解像度でCOCOでトレーニングされました。モデルは中間の事前学習済みウェイトから初期化され、進化的探索で見つかったハイパーパラメータで精緻化されました。すべてのモデルサイズの完全なトレーニングログとメトリクスは Ultralytics Platform で確認できます。

すべてのサイズで共通の主要設計上の選択:

  • エンドツーエンドトレーニング (end2end=True) NMSフリーの1対1ヘッドを使用
  • MuSGD オプティマイザ SGDとMuonスタイルの直交化更新をconv重みに組み合わせた
  • ヘビー モザイク 拡張 (~0.9-1.0確率) 最後の10エポックで無効化 (close_mosaic=10)
  • 積極的なスケール拡張 (0.56-0.95) 異なるサイズのオブジェクトを扱うため
  • 最小限の回転/せん断 ほとんどのサイズで、幾何学的歪みを低く保つ

モデルサイズ別ハイパーパラメータ

オプティマイザと学習率

設定NSMLX
optimizerMuSGDMuSGDMuSGDMuSGDMuSGD
lr00.00540.000380.000380.000380.00038
lrf0.04950.8820.8820.8820.882
momentum0.9470.9480.9480.9480.948
weight_decay0.000640.000270.000270.000270.00027
warmup_epochs0.980.990.990.990.99
epochs24570806040
batch128128128128128
imgsz640640640640640
学習率戦略

Nモデルは急勾配な減衰を伴う高い初期学習率 (lrf=0.0495) を使用しましたが、S/M/L/Xモデルははるかに低い初期学習率とゆるやかなスケジュール (lrf=0.882) を使用しました。これはより小さいモデルとより大きなモデルの異なる収束ダイナミクスを反映しています。小さいモデルは効果的に学習するためにより積極的な更新が必要です。

損失ウェイト

設定NSMLX
box5.639.839.839.839.83
cls0.560.650.650.650.65
dfl9.040.960.960.960.96

NモデルはDFL損失を優先しますが、S/M/L/Xモデルは バウンディングボックス 回帰に重点を移します。分類損失はすべてのサイズで比較的一定です。

拡張パイプライン

各技術の詳細な説明については、YOLOデータ拡張ガイド をご覧ください。

設定NSMLX
mosaic0.9090.9920.9920.9920.992
mixup0.0120.050.4270.4270.427
copy_paste0.0750.4040.3040.4040.404
scale0.5620.90.950.950.95
fliplr0.6060.3040.3040.3040.304
degrees1.11~0~0~0~0
shear1.46~0~0~0~0
translate0.0710.2750.2750.2750.275
hsv_h0.0140.0130.0130.0130.013
hsv_s0.6450.3530.3530.3530.353
hsv_v0.5660.1940.1940.1940.194
bgr0.1060.00.00.00.0

大きなモデルは全体的により積極的な拡張を使用します(より高い mixupcopy-pastescale)。これはより多くのキャパシティを持ち、より強い 正則化 から恩恵を受けるためです。Nモデルは意味のある 回転せん断、および BGR 拡張を持つ唯一のサイズです。

内部トレーニングパラメータ

上級: 内部パイプラインパラメータ

チェックポイントには、内部トレーニングパイプラインで使用されたが default.yaml でユーザー設定可能な設定として公開されていないパラメータも含まれています。

設定説明NSMLX
muon_wMuSGDにおけるMuon更新ウェイト0.5280.4360.4360.4360.436
sgd_wMuSGDにおけるSGD更新ウェイト0.6740.4790.4790.4790.479
cls_w内部分類ウェイト2.743.483.483.483.48
o2m1対多ヘッド損失ウェイト1.00.7050.7050.7050.705
topkTop-kラベル割り当て85555

これらは再現性のために記録されていますが、ファインチューニング時に設定する必要はありません。詳細については FAQ をご覧ください。

ファインチューニングのガイダンス

独自のデータセットでYOLO26をファインチューニングする場合、完全な事前学習レシピを複製する必要はありません。事前学習済みウェイトはすでにCOCOトレーニングからの拡張と最適化の知識をエンコードしています。より一般的なトレーニングのベストプラクティスについては、モデルトレーニングのヒント をご覧ください。

シンプルに始める

デフォルトでファインチューニング
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(data="your-dataset.yaml", epochs=100, imgsz=640)

デフォルトでのファインチューニングは強力なベースラインです。特定の理由がある場合のみハイパーパラメータを調整してください。

調整のタイミング

小さいデータセット (< 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_shsv_v を調整する

自動ハイパーパラメータ最適化については、ハイパーパラメータチューニングガイド をご覧ください。

モデルサイズの選択

モデル最適な用途バッチサイズのガイダンス
YOLO26nエッジデバイス、モバイル、CPUでのリアルタイムコンシューマGPUで大きいバッチ (64-128)
YOLO26s速度と精度のバランス中程度のバッチ (32-64)
YOLO26m適度な計算量でより高い精度小さいバッチ (16-32)
YOLO26lGPUが利用可能な場合の高精度小さいバッチ (8-16) またはマルチGPU
YOLO26x最大精度、サーバーデプロイメント小さいバッチ (4-8) またはマルチGPU

エクスポートとデプロイオプションについては、エクスポートガイドモデルデプロイオプション をご覧ください。

FAQ

任意のチェックポイントに使用された正確なハイパーパラメータを確認するには?

torch.load() でチェックポイントを読み込んで train_args キーにアクセスするか、Ultralytics APIで model.ckpt["train_args"] を使用してください。完全な例については トレーニング引数の検査 をご覧ください。

なぜエポック数がモデルサイズによって異なるのですか?

大きなモデルはより多くのキャパシティを持つため、COCOで速く収束します。NモデルはCOCOで245エポック必要でしたが、Xモデルは40エポックしか必要ありませんでした。独自のデータセットでファインチューニングする場合、最適なエポック数はモデルサイズではなく、データセットのサイズと複雑さによります。早期停止 (patience) を使用して適切な停止点を自動的に見つけてください。

ファインチューニングにMuSGDを使用すべきですか?

optimizer=auto(デフォルト)の場合、Ultralyticsはより長いトレーニングラン(>10,000イテレーション)に対して自動的に MuSGD を、短いものには AdamW を選択します。希望する場合は明示的に optimizer=MuSGD を設定できます。オプティマイザ選択の詳細については、トレーニングドキュメント をご覧ください。

チェックポイント内の muon_wsgd_wcls_wo2mtopk とは何ですか?

これらはベースチェックポイントを生成したトレーニングパイプラインの内部パラメータです。再現性のために保存されていますが、default.yaml ではユーザー設定可能な設定ではありません。ファインチューニング時に設定する必要はありません。詳細については 内部トレーニングパラメータ をご覧ください。

正確な事前学習をゼロから複製できますか?

チェックポイントは、公開コードベースにない追加機能(設定可能な o2m ウェイトと cls_w など)を持つ内部トレーニングブランチを使用して生成されました。公開Ultralyticsパッケージでこのページに文書化されたハイパーパラメータを使用して非常に近い結果を得ることができますが、正確な再現には内部ブランチが必要です。

コメント