Ultralytics YOLOによるモデルトレーニング
はじめに
深層学習モデルのトレーニングでは、モデルにデータを入力し、パラメータを調整することで正確な予測ができるようにします。Ultralytics YOLO26のTrainモードは、最新のハードウェア機能を最大限に活用し、物体検出モデルを効果的かつ効率的にトレーニングできるように設計されています。本ガイドでは、YOLO26の強力な機能を使用して独自のモデルのトレーニングを開始するために必要な詳細を網羅します。
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
なぜトレーニングにUltralytics YOLOを選ぶのか?
YOLO26のTrainモードを選択すべき魅力的な理由をいくつか紹介します。
- 効率性: シングルGPU環境でも、複数のGPUにスケールアップする場合でも、ハードウェアの能力を最大限に引き出します。
- 汎用性: COCO、VOC、ImageNetなどのすぐに利用可能なデータセットに加え、カスタムデータセットでもトレーニングが可能です。
- ユーザーフレンドリー: シンプルでありながら強力なCLIおよびPythonインターフェースにより、直感的なトレーニング体験を提供します。
- ハイパーパラメータの柔軟性: モデルのパフォーマンスを微調整するための幅広いカスタマイズ可能なハイパーパラメータを備えています。より詳細な制御が必要な場合は、トレーナー自体をカスタマイズできます。
- クラウドトレーニング: Ultralytics Platformを通じてクラウドGPU上でトレーニングを行い、リアルタイムメトリクスと自動チェックポイント保存を利用できます。
Trainモードの主な機能
以下は、YOLO26のTrainモードにおける注目すべき機能です。
- データセットの自動ダウンロード: COCO、VOC、ImageNetなどの標準データセットは、初回使用時に自動的にダウンロードされます。
- マルチGPUサポート: 複数のGPU間でトレーニングをシームレスにスケールさせ、処理を高速化します。
- ハイパーパラメータ設定: YAML設定ファイルまたはCLI引数を通じてハイパーパラメータを変更できます。
- 可視化とモニタリング: トレーニングメトリクスのリアルタイム追跡と学習プロセスの可視化により、詳細な洞察を得られます。
- COCO、VOC、ImageNetなどのYOLO26用データセットは、初回使用時に自動的にダウンロードされます(例:
yolo train data=coco.yaml)。
使用例
COCO8データセットでYOLO26nを画像サイズ640で100エポックトレーニングします。トレーニングデバイスはdevice引数を使用して指定できます。引数が指定されない場合、GPUが利用可能であればdevice=0が使用され、そうでない場合はdevice='cpu'が使用されます。トレーニング引数の全リストについては、以下の「引数」セクションを参照してください。
Windows上でスクリプトとしてトレーニングを実行する際に、RuntimeErrorが発生する場合があります。この問題を解決するには、トレーニングコードの前にif __name__ == "__main__":ブロックを追加してください。
デバイスは自動的に決定されます。GPUが利用可能な場合はそれが使用され(デフォルトはCUDAデバイス0)、そうでない場合はCPUでトレーニングが開始されます。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.yaml") # build a new model from YAML
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt") # build from YAML and transfer weights
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)マルチGPUトレーニング
マルチGPUトレーニングでは、複数のGPUにトレーニング負荷を分散させることで、利用可能なハードウェアリソースをより効率的に活用できます。この機能はPython APIとコマンドラインインターフェースの両方で利用可能です。マルチGPUトレーニングを有効にするには、使用したいGPUデバイスIDを指定してください。
2台のGPU(CUDAデバイス0と1)を使用してトレーニングするには、以下のコマンドを使用します。必要に応じてGPUを追加してください。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])
# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])複数のデバイス(例:device=[0, 1])を指定すると、Ultralyticsは内部で新しいトレーナーインスタンスを生成し、バックグラウンドでtorch.distributed.runを実行します。これは標準的なCLI使用や変更されていないPythonスクリプトであればシームレスに動作します。
ただし、スクリプトにカスタムトレーナー、バリデーター、データセット、拡張パイプラインなどのカスタムコンポーネントが含まれている場合、これらのオブジェクトはDDPサブプロセスに自動的にシリアライズおよび転送できません。この場合、スクリプトをtorch.distributed.runで直接起動する必要があります。
python -m torch.distributed.run --nproc_per_node 2 your_training_script.pyアイドルGPUトレーニング
アイドルGPUトレーニングは、マルチGPUシステムにおいて最も使用率の低いGPUを自動選択し、手動でGPUを選択することなくリソース使用を最適化します。この機能は、使用率メトリクスとVRAMの空き状況に基づいて利用可能なGPUを識別します。
To automatically select and use the most idle GPU(s) for training, use the -1 device parameter. This is particularly useful in shared computing environments or servers with multiple users.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)
# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])自動選択アルゴリズムは、以下の条件のGPUを優先します:
- 現在の使用率が低い
- 利用可能なメモリ(空きVRAM)が多い
- 温度と消費電力が低い
この機能は、共有コンピューティング環境や、異なるモデル間で複数のトレーニングジョブを実行する場合に非常に有益です。システムの状態変化に自動的に適応し、手動介入なしで最適なリソース割り当てを確保します。
Apple Silicon MPSトレーニング
Ultralytics YOLOモデルにAppleシリコンチップのサポートが統合されたことで、強力なMetal Performance Shaders (MPS)フレームワークを利用するデバイス上でモデルをトレーニングできるようになりました。MPSは、Appleのカスタムシリコン上で計算および画像処理タスクを実行するための高性能な手段を提供します。
Appleシリコンチップ上でトレーニングを有効にするには、トレーニング開始時にデバイスとして'mps'を指定します。以下は、Pythonおよびコマンドラインでの指定方法の例です。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")Appleシリコンチップの計算能力を活用することで、トレーニングタスクの処理効率が向上します。詳細なガイドや高度な設定オプションについては、PyTorch MPSドキュメントを参照してください。
中断されたトレーニングの再開
深層学習モデルを扱う際、以前に保存された状態からトレーニングを再開することは重要な機能です。これは、トレーニングプロセスが予期せず中断された場合や、新しいデータでトレーニングを継続したい場合、あるいはエポック数を増やしたい場合など、様々な状況で役立ちます。
トレーニングが再開されると、Ultralytics YOLOは最後に保存されたモデルからウェイトを読み込み、オプティマイザの状態、学習率スケジューラー、エポック数を復元します。これにより、中断した場所からシームレスにトレーニングプロセスを継続できます。
You can easily resume training in Ultralytics YOLO by setting the resume argument to True when calling the train method, and specifying the path to the .pt file containing the partially trained model weights.
以下は、Pythonおよびコマンドラインを使用して中断されたトレーニングを再開する例です:
from ultralytics import YOLO
# Load a model
model = YOLO("path/to/last.pt") # load a partially trained model
# Resume training
results = model.train(resume=True)resume=Trueに設定すると、train関数は'path/to/last.pt'ファイルに保存された状態を使用して、中断した場所からトレーニングを続行します。resume引数が省略されるかFalseに設定されている場合、train関数は新しいトレーニングセッションを開始します。
チェックポイントはデフォルトで各エポックの終了時、またはsave_period引数を使用した固定間隔で保存されるため、トレーニングを再開するには最低1エポックを完了させる必要があることに注意してください。
学習設定
YOLOモデルのトレーニング設定には、トレーニングプロセスで使用される様々なハイパーパラメータや構成が含まれます。これらの設定は、モデルのパフォーマンス、速度、精度に影響を与えます。主要なトレーニング設定には、バッチサイズ、学習率、モメンタム、ウェイトディケイがあります。さらに、オプティマイザ、損失関数、トレーニングデータセット構成の選択もトレーニングプロセスに影響します。パフォーマンスを最適化するためには、これらの設定を注意深く調整・実験することが不可欠です。
MuSGDオプティマイザ
YOLO26において、MuSGDは標準的なSGD更新とMuon形式の直交化更新を組み合わせたハイブリッドオプティマイザです。
これはYOLO26の長時間のトレーニング実行や大規模なデータセットに推奨されており、直交化されたMuon更新が最適化の安定化に寄与します。
param.ndim >= 2のパラメータ(畳み込みウェイトなど)のみがSGDとともにMuon形式の更新を受け取り、バッチ正規化層やバイアス項などの低次元パラメータは標準的なSGDのままとなります。
optimizer=autoが使用される場合、Ultralyticsは長時間のトレーニング(通常は10,000イテレーション以上)に対して自動的にMuSGDを選択します。短時間のトレーニングでは、トレーナーはAdamWに戻ります。
使用例:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD実装はultralytics/optim/muon.pyを、オプティマイザの自動選択ロジックはBaseTrainer.build_optimizerを参照してください。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
model | str | None | 学習用のモデルファイルを指定します。.pt の事前学習済みモデルまたは .yaml 構成ファイルのいずれかへのパスを受け入れます。モデル構造の定義やウェイトの初期化に不可欠です。 |
data | str | None | データセット構成ファイル(例:coco8.yaml)へのパス。このファイルには、学習データや検証データへのパス、クラス名、クラス数など、データセット固有のパラメータが含まれています。 |
epochs | int | 100 | 学習エポックの総数。各エポックは、データセット全体の1回の完全なパスを表します。この値を調整すると、学習期間とモデルのパフォーマンスに影響を与える可能性があります。 |
time | float | None | 時間単位での最大学習時間。設定した場合、epochs 引数が上書きされ、指定された時間経過後に学習が自動的に停止します。時間制限のある学習シナリオで役立ちます。 |
patience | int | 100 | 検証メトリクスの改善が見られない場合に学習を早期終了するまでのエポック数。パフォーマンスが停滞した際に学習を停止させることで、過学習を防ぎます。 |
batch | int または float | 16 | バッチサイズ。整数値での指定(例:batch=16)、GPUメモリ使用率60%を目標とする自動モード(batch=-1)、または指定した使用率(batch=0.70)を使用するモードの3つがあります。 |
imgsz | int | 640 | 学習用ターゲット画像サイズ。画像は指定された値(rect=Falseの場合)の一辺を持つ正方形にリサイズされます。YOLOモデルではアスペクト比が保持されますが、RT-DETRでは保持されません。モデルの精度と計算量に影響します。 |
save | bool | True | 学習チェックポイントと最終モデルウェイトの保存を有効にします。学習の再開やモデルデプロイに役立ちます。 |
save_period | int | -1 | モデルチェックポイントを保存する間隔(エポック単位)。-1は無効化を意味します。長時間学習中に中間モデルを保存するのに便利です。 |
cache | bool | False | メモリ(True/ram)またはディスク(disk)へのデータセット画像キャッシュを有効にするか、無効(False)にします。ディスクI/Oを減らして学習速度を向上させますが、メモリ消費量が増加します。 |
device | int または str または list | None | 学習に使用する計算デバイスを指定します。単一GPU(device=0)、マルチGPU(device=[0,1])、CPU(device=cpu)、Appleシリコン用MPS(device=mps)、Huawei Ascend NPU(device=npu または device=npu:0)、あるいは最も空いているGPU(device=-1)や複数の空きGPU(device=[-1,-1])の自動選択が可能です。 |
workers | int | 8 | データローディングに使用するワーカースレッド数(マルチGPU学習時は RANK ごと)。データ前処理とモデルへのデータ供給速度に影響し、特にマルチGPU構成で有効です。 |
project | str | None | 学習の出力が保存されるプロジェクトディレクトリ名。異なる実験を整理して保存できます。 |
name | str | None | 学習実行の名前。プロジェクトフォルダ内にサブディレクトリを作成し、そこに学習ログと出力が保存されます。 |
exist_ok | bool | False | Trueの場合、既存のプロジェクト/名前ディレクトリの上書きを許可します。手動で以前の出力を削除せずに繰り返し実験を行う場合に便利です。 |
pretrained | bool または str | True | 事前学習済みウェイトから学習を開始するかどうかを決定します。ブール値、または読み込むウェイトへのパスを指定できます。pretrained=False はモデルアーキテクチャを維持しつつ、ランダムに初期化されたウェイトから学習します。 |
optimizer | str | 'auto' | 学習用最適化手法の選択。SGD、MuSGD、Adam、Adamax、AdamW、NAdam、RAdam、RMSProp、またはモデル構成に基づいて自動選択する auto が利用可能です。収束速度と安定性に影響を与えます。 |
seed | int | 0 | 学習用の乱数シードを設定し、同じ設定での実行結果の再現性を確保します。 |
deterministic | bool | True | 決定論的なアルゴリズムの使用を強制し、再現性を確保します。ただし、非決定論的アルゴリズムの制限により、パフォーマンスや速度に影響を与える可能性があります。 |
verbose | bool | True | 学習中の冗長な出力を有効にします。コンソールに進行状況バー、エポックごとのメトリクス、および追加の学習情報を表示します。 |
single_cls | bool | False | 学習中にマルチクラスデータセットのすべてのクラスを単一クラスとして扱います。二値分類タスクや、分類よりも物体の存在に焦点を当てたい場合に便利です。 |
classes | list[int] | None | トレーニング対象とするクラスIDのリストを指定します。トレーニング中に特定のクラスのみを抽出して焦点を当てる場合に便利です。 |
rect | bool | False | 最小パディング戦略を有効にします。バッチ内の画像は、最も長い辺が imgsz と等しくなるように共通のサイズまで最小限にパディングされます。効率と速度は向上しますが、モデルの精度に影響を与える可能性があります。 |
multi_scale | float | 0.0 | 各バッチで imgsz を +/- multi_scale でランダムに変動させ(例: 0.25 の場合 0.75x から 1.25x まで)、モデルのストライドの倍数に丸めます。0.0 を設定するとマルチスケールトレーニングは無効になります。 |
cos_lr | bool | False | コサイン学習率スケジューラを利用し、エポックにわたってコサイン曲線に従って学習率を調整します。より良い収束のために学習率を管理するのに役立ちます。 |
close_mosaic | int | 10 | 完了前の最後のNエポックにおいて、モザイクデータ拡張を無効にしてトレーニングを安定させます。0を設定するとこの機能は無効になります。 |
resume | bool | False | 最後に保存されたチェックポイントからトレーニングを再開します。モデルの重み、オプティマイザの状態、エポック数を自動的に読み込み、シームレスにトレーニングを継続します。 |
amp | bool | True | 自動混合精度 (AMP) トレーニングを有効にし、メモリ使用量を削減し、精度への影響を最小限に抑えながらトレーニングを高速化できる可能性があります。 |
fraction | float | 1.0 | トレーニングに使用するデータセットの割合を指定します。フルデータセットの一部でトレーニングを可能にし、実験やリソースが限られている場合に便利です。 |
profile | bool | False | トレーニング中のONNXおよびTensorRTの速度プロファイリングを有効にします。モデルのデプロイ最適化に役立ちます。 |
freeze | int または list | None | モデルの最初のN層またはインデックスで指定された層をフリーズし、トレーニング可能なパラメータ数を減らします。微調整(ファインチューニング)や転移学習に役立ちます。 |
lr0 | float | 0.01 | 初期学習率です(例: SGD=1E-2、Adam=1E-3)。この値を調整することは最適化プロセスにおいて非常に重要であり、モデルの重みがどれだけ迅速に更新されるかに影響します。 |
lrf | float | 0.01 | 初期学習率の割合としての最終学習率 = (lr0 * lrf) です。スケジューラと組み合わせて時間の経過とともに学習率を調整するために使用されます。 |
momentum | float | 0.937 | SGD用のモーメンタム係数、またはAdamオプティマイザ用のbeta1です。現在の更新に過去の勾配をどの程度組み込むかに影響します。 |
weight_decay | float | 0.0005 | L2正則化項であり、過学習を防ぐために大きな重みにペナルティを課します。 |
warmup_epochs | float | 3.0 | 学習率ウォームアップを行うエポック数です。初期段階でトレーニングを安定させるため、学習率を低い値から初期学習率まで徐々に増加させます。 |
warmup_momentum | float | 0.8 | ウォームアップフェーズの初期モーメンタムです。ウォームアップ期間中に設定したモーメンタムまで徐々に調整されます。 |
warmup_bias_lr | float | 0.1 | ウォームアップフェーズ中のバイアスパラメータの学習率です。初期エポックでのモデルトレーニングの安定化を助けます。 |
box | float | 7.5 | 損失関数におけるボックス損失成分の重みです。バウンディングボックス座標の正確な予測にどれだけ重点を置くかに影響します。 |
cls | float | 0.5 | 合計損失関数における分類損失の重みです。他の成分と比較して、正確なクラス予測の重要性に影響します。 |
cls_pw | float | 0.0 | 逆クラス頻度を使用してクラスの不均衡を処理するための、クラス重み付けのべき乗です。0.0 はクラス重み付けを無効にし、1.0 は完全な逆頻度重み付けを適用します。0から1の間の値は部分的な重み付けを提供します。 |
dfl | float | 1.5 | 分布焦点損失(Distribution Focal Loss)の重みです。特定のYOLOバージョンで細粒度の分類に使用されます。 |
pose | float | 12.0 | 姿勢推定のためにトレーニングされるモデルにおけるポーズ損失の重みです。ポーズキーポイントの正確な予測にどれだけ重点を置くかに影響します。 |
kobj | float | 1.0 | 姿勢推定モデルにおけるキーポイントオブジェクトネス損失の重みです。検出の信頼度とポーズ精度のバランスを取ります。 |
rle | float | 1.0 | 姿勢推定モデルにおける残差対数尤度推定損失の重みです。キーポイントの局所化の精度に影響します。 |
angle | float | 1.0 | OBBモデルにおける角度損失の重みです。指向性バウンディングボックスの角度予測の精度に影響します。 |
nbs | int | 64 | 損失の正規化のための公称バッチサイズです。 |
overlap_mask | bool | True | オブジェクトマスクをトレーニングのために単一のマスクにマージするか、各オブジェクトに対して個別に保持するかを決定します。重なりがある場合、マージ中に小さいマスクが大きいマスクの上に重ねられます。 |
mask_ratio | int | 4 | セグメンテーションマスクのダウンサンプル比率です。トレーニング中に使用されるマスクの解像度に影響します。 |
dropout | float | 0.0 | 分類タスクにおける正則化のためのドロップアウト率です。トレーニング中にランダムにユニットを省略することで過学習を防ぎます。 |
val | bool | True | トレーニング中のバリデーションを有効にし、別個のデータセットでモデルのパフォーマンスを定期的に評価できるようにします。 |
plots | bool | True | トレーニングおよびバリデーションのメトリクス、ならびに予測例のプロットを生成・保存し、モデルのパフォーマンスと学習進捗に関する視覚的な洞察を提供します。 |
compile | bool または str | False | Enables PyTorch 2.x torch.compile graph compilation with backend='inductor'. Accepts True → "default", False → disables, or a string mode such as "default", "reduce-overhead", "max-autotune-no-cudagraphs". Falls back to eager with a warning if unsupported. |
max_det | int | 300 | トレーニングのバリデーションフェーズ中に保持されるオブジェクトの最大数を指定します。 |
batch引数は以下の3つの方法で設定できます:
- 固定バッチサイズ:整数値を設定して(例:
batch=16)、バッチあたりの画像数を直接指定します。 - オートモード(GPUメモリの60%):
batch=-1を使用すると、CUDAメモリ使用率が約60%になるようにバッチサイズを自動調整します。 - 利用率指定のオートモード:小数値を設定して(例:
batch=0.70)、指定したGPUメモリ使用率の割合に基づいてバッチサイズを調整します。 - OOM自動再試行:最初のエポック中にCUDAメモリ不足エラーが発生した場合、トレーナーは自動的にバッチサイズを半分にして(最大3回まで)再試行します。これはシングルGPUトレーニングにのみ適用され、マルチGPU(DDP)トレーニングではエラーが即座に発生します。
拡張設定とハイパーパラメータ
拡張(オーグメンテーション)技術は、トレーニングデータに変動性を持たせることでYOLOモデルの堅牢性とパフォーマンスを向上させ、未知のデータに対するモデルの汎化性能を高めるために不可欠です。以下の表は、各拡張引数の目的と効果をまとめたものです。
| 引数 | タイプ | デフォルト | サポートされているタスク | 範囲 | 説明 |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 画像の色相をカラーホイールの割合で調整し、色に変動性を持たせます。様々な照明条件下でのモデルの汎化に役立ちます。 |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 画像の彩度を割合で変更し、色の強さを変化させます。様々な環境条件をシミュレートするのに役立ちます。 |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 画像の明度を割合で修正し、様々な照明条件下でモデルが適切に動作するようにします。 |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | 指定された度数範囲内で画像をランダムに回転させ、様々な向きのオブジェクトを認識するモデルの能力を向上させます。 |
translate | float | 0.1 | detect, segment, pose, obb | 0.0 - 1.0 | 画像を画像サイズの割合で水平および垂直に平行移動させ、部分的にしか見えないオブジェクトを検出する学習を支援します。 |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | ゲイン係数で画像をスケールし、カメラからの距離が異なるオブジェクトをシミュレートします。 |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | 指定された度数で画像をせん断(歪ませ)し、異なる角度から見たオブジェクトの効果を模倣します。 |
perspective | float | 0 | detect, segment, pose, obb | 0.0 - 0.001 | 画像にランダムな透視変換を適用し、3D空間におけるオブジェクトの理解力を高めます。 |
flipud | float | 0 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 指定された確率で画像を上下反転させ、オブジェクトの特性を変えずにデータの多様性を増加させます。 |
fliplr | float | 0.5 | detect, segment, pose, obb, classify | 0.0 - 1.0 | 指定された確率で画像を左右反転させ、対称的なオブジェクトの学習やデータセットの多様性向上に役立ちます。 |
bgr | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | 指定された確率で画像のチャンネルをRGBからBGRに反転させ、誤ったチャンネル順序に対する堅牢性を向上させるのに役立ちます。 |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | 4つのトレーニング画像を1つに組み合わせることで、さまざまなシーンの構成やオブジェクトの相互作用をシミュレートします。複雑なシーンの理解に非常に効果的です。 |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | 2つの画像とそのラベルをブレンドし、合成画像を作成します。ラベルノイズと視覚的な多様性を導入することで、モデルの汎化能力を向上させます。 |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | 2つの画像の一部を組み合わせ、個別の領域を維持しつつ部分的なブレンドを作成します。オクルージョン(遮蔽)シナリオを作成することで、モデルの堅牢性を高めます。 |
copy_paste | float | 0 | segment | 0.0 - 1.0 | オブジェクトを画像間でコピー&ペーストして、オブジェクトのインスタンス数を増やします。 |
copy_paste_mode | str | flip | segment | - | 使用する copy-paste 戦略を指定します。オプションには 'flip' や 'mixup' があります。 |
auto_augment | str | randaugment | classify | - | 事前定義された拡張ポリシー('randaugment'、'autoaugment'、または 'augmix')を適用し、視覚的な多様性を通じてモデルのパフォーマンスを向上させます。 |
erasing | float | 0.4 | classify | 0.0 - 1.0 | トレーニング中にランダムに画像領域を消去し、モデルがより目立たない特徴に注目するように促します。 |
augmentations | list | `` | detect, segment, pose, obb | - | 高度なデータ拡張のためのカスタムAlbumentations変換(Python APIのみ)。特殊な拡張ニーズに合わせて変換オブジェクトのリストを受け入れます。 |
これらの設定は、データセットや実行するタスクの具体的な要件に合わせて調整可能です。さまざまな値を試すことで、最高のモデルパフォーマンスにつながる最適な拡張戦略を見つけることができます。
トレーニングの拡張操作に関する詳細については、リファレンスセクションを参照してください。
ロギング
YOLO26モデルをトレーニングする際、時間の経過に伴うモデルのパフォーマンスを追跡することは有益です。ここでロギングが役立ちます。Ultralytics YOLOは、Comet、ClearML、TensorBoardという3種類のロガーをサポートしています。
ロガーを使用するには、上記コードスニペットのドロップダウンメニューから選択して実行します。選択したロガーがインストールおよび初期化されます。
Comet
Cometは、データサイエンティストや開発者が実験やモデルを追跡、比較、説明、最適化できるプラットフォームです。リアルタイムメトリクス、コード差分、ハイパーパラメータ追跡などの機能を提供します。
Cometを使用するには:
# pip install comet_ml
import comet_ml
comet_ml.init()Cometのウェブサイトでアカウントにサインインし、APIキーを取得することを忘れないでください。実験をログに記録するには、このキーを環境変数またはスクリプトに追加する必要があります。
ClearML
ClearMLは、実験の追跡を自動化し、リソースの効率的な共有を支援するオープンソースプラットフォームです。チームが機械学習作業をより効率的に管理、実行、再現できるように設計されています。
ClearMLを使用するには:
# pip install clearml
import clearml
clearml.browser_login()このスクリプトを実行した後、ブラウザでClearMLアカウントにサインインし、セッションを認証する必要があります。
TensorBoard
TensorBoardは、TensorFlow用の可視化ツールキットです。TensorFlowグラフの可視化、グラフ実行に関する定量的メトリクスのプロット、そこを通過する画像などの追加データの表示が可能です。
Google ColabでTensorBoardを使用するには:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryローカルでTensorBoardを使用するには、以下のコマンドを実行し、localhost:6006で結果を表示します。
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryこれによりTensorBoardが読み込まれ、トレーニングログが保存されているディレクトリが参照されます。
ロガーを設定した後、モデルのトレーニングに進むことができます。すべてのトレーニングメトリクスは選択したプラットフォームに自動的にログ記録され、これらのログにアクセスして時間の経過に伴うモデルのパフォーマンスを監視したり、異なるモデルを比較したり、改善点を見つけたりすることができます。
FAQ
ローカルGPUなしでトレーニングできますか?
はい。Ultralytics Platformでは、無料クレジットを利用したクラウドトレーニングをサポートしています。データセットをアップロードし、モデルとGPUを選択して、ブラウザから直接トレーニングできます。詳細はクラウドトレーニングガイドを参照してください。
Ultralytics YOLO26を使用して物体検出モデルをトレーニングするにはどうすればよいですか?
Ultralytics YOLO26を使用して物体検出モデルをトレーニングするには、Python APIまたはCLIを使用できます。以下に両方の例を示します。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # load a pretrained model (recommended for training)
# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)詳細はトレーニング設定セクションを参照してください。
Ultralytics YOLO26のトレーニングモードの主な特徴は何ですか?
Ultralytics YOLO26のトレーニングモードの主な特徴は以下の通りです:
- 自動データセットダウンロード: COCO、VOC、ImageNetなどの標準データセットを自動的にダウンロードします。
- マルチGPUサポート: 複数のGPU間でトレーニングをスケールし、処理を高速化します。
- ハイパーパラメータ設定: YAMLファイルやCLI引数を通じてハイパーパラメータをカスタマイズします。
- 可視化と監視: トレーニングメトリクスのリアルタイム追跡により、詳細な洞察を得られます。
これらの機能により、ニーズに合わせた効率的でカスタマイズ可能なトレーニングが可能です。詳細はトレーニングモードの主な特徴セクションを参照してください。
Ultralytics YOLO26で中断されたトレーニングセッションを再開するにはどうすればよいですか?
中断されたトレーニングを再開するには、resume引数をTrueに設定し、最後に保存されたチェックポイントへのパスを指定します。
from ultralytics import YOLO
# Load the partially trained model
model = YOLO("path/to/last.pt")
# Resume training
results = model.train(resume=True)詳細については、中断されたトレーニングの再開セクションを確認してください。
不均衡なデータセットでモデルをトレーニングするにはどうすればよいですか?
クラスの不均衡は、トレーニングデータにおいて一部のクラスの例が他のクラスよりも大幅に少ない場合に発生します。これにより、モデルがまれなクラスに対してうまく機能しなくなる可能性があります。Ultralytics YOLOは、この問題に対処するためにcls_pw引数を通じたクラス重み付けをサポートしています。
cls_pw引数は、逆クラス頻度に基づくクラス重み付けの強度を制御します:
cls_pw=0.0(デフォルト):クラスの重み付けを無効にしますcls_pw=1.0:完全な逆頻度重み付けを適用します0.0から1.0の間の値:中程度の不均衡に対して部分的な重み付けを提供します
クラスの重みは (1.0 / class_counts) ^ cls_pw として計算され、平均が1.0になるように正規化されます。
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)
# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)中程度に不均衡なデータセットには cls_pw=0.25 から開始し、まれなクラスのパフォーマンスがまだ低い場合は 1.0 まで上げてください。トレーニングログで計算されたクラスの重みを確認して、重み分布を検証できます。
AppleシリコンチップでYOLO26モデルをトレーニングできますか?
はい、Ultralytics YOLO26はMetal Performance Shaders (MPS)フレームワークを利用してAppleシリコンチップ上でのトレーニングをサポートしています。トレーニングデバイスとして 'mps' を指定してください。
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")詳細はAppleシリコンMPSトレーニングセクションを参照してください。
一般的なトレーニング設定とは何ですか、またそれらをどのように設定しますか?
Ultralytics YOLO26では、バッチサイズ、学習率、エポック数など、さまざまなトレーニング設定を引数を通じて構成できます。概要は以下の通りです:
| 引数 | デフォルト | 説明 |
|---|---|---|
model | None | トレーニング用モデルファイルへのパス。 |
data | None | データセット設定ファイル(例:coco8.yaml)へのパス。 |
epochs | 100 | トレーニングエポックの総数。 |
batch | 16 | バッチサイズ。整数または自動モードで調整可能。 |
imgsz | 640 | トレーニング用のターゲット画像サイズ。 |
device | None | cpu、0、0,1、または mps のような、トレーニングに使用する計算デバイス。 |
save | True | トレーニングチェックポイントと最終的なモデルの重みの保存を有効にします。 |
トレーニング設定の詳細ガイドについては、トレーニング設定セクションを確認してください。