Link to this sectionUltralytics YOLOによるモデルトレーニング#
Link to this sectionはじめに#
ディープラーニングモデルのトレーニングには、モデルにデータを入力し、正確な予測を行えるようにパラメータを調整するプロセスが含まれます。Ultralytics YOLO26のトレーニングモードは、最新のハードウェア機能を最大限に活用し、物体検出モデルを効果的かつ効率的にトレーニングするように設計されています。本ガイドでは、YOLO26の強力な機能を活用して独自のモデルをトレーニングするための必要な詳細をすべて網羅することを目的としています。
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Link to this sectionなぜトレーニングにUltralytics YOLOを選ぶのか?#
YOLO26のトレーニングモードを選択すべき有力な理由は以下の通りです。
- 効率性: シングルGPU構成であっても、複数のGPUにスケーリングする場合でも、ハードウェアの能力を最大限に活用できます。
- 汎用性: COCO、VOC、ImageNetなどのすぐに利用できるデータセットに加え、カスタムデータセットを使用したトレーニングが可能です。
- ユーザーフレンドリー: シンプルでありながら強力なCLIおよびPythonインターフェースにより、直感的なトレーニング体験を提供します。
- ハイパーパラメータの柔軟性: モデルのパフォーマンスを微調整するための幅広いカスタマイズ可能なハイパーパラメータを備えています。より詳細な制御が必要な場合は、トレーナー自体をカスタマイズすることも可能です。
- クラウドトレーニング: Ultralytics Platformを介してクラウドGPU上でトレーニングを行い、リアルタイムメトリクスや自動チェックポイント機能を利用できます。
Link to this sectionトレーニングモードの主要機能#
以下は、YOLO26のトレーニングモードの注目すべき機能です。
- 自動データセットダウンロード: COCO、VOC、ImageNetなどの標準的なデータセットは、初回使用時に自動的にダウンロードされます。
- マルチGPUサポート: 複数のGPU間でトレーニングをシームレスにスケールアップし、処理を高速化できます。
- ハイパーパラメータ設定: YAML設定ファイルまたはCLI引数を介してハイパーパラメータを変更するオプションを提供します。
- 視覚化とモニタリング: トレーニングメトリクスのリアルタイム追跡や学習プロセスの視覚化により、より詳細な洞察を得られます。
- COCO、VOC、ImageNetなど、YOLO26のデータセットは初回使用時に自動的にダウンロードされます(例:
yolo train data=coco.yaml)。
Link to this section使用例#
COCO8データセットでYOLO26nを100エポック、画像サイズ640でトレーニングします。トレーニングデバイスは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)Link to this sectionマルチ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.pyLink to this sectionアイドルGPUトレーニング#
アイドルGPUトレーニングは、マルチGPUシステムにおいて最も利用率の低いGPUを自動的に選択し、手動選択の手間を省きながらリソース使用を最適化します。この機能は、利用率メトリクスとVRAMの空き状況に基づいて利用可能なGPUを特定します。
トレーニングに最もアイドル状態のGPUを自動的に選択して使用するには、-1デバイスパラメータを使用します。これは共有コンピューティング環境や複数のユーザーが利用するサーバーで特に役立ちます。
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)が多いもの
- 温度と消費電力が低いもの
この機能は、共有コンピューティング環境や、異なるモデルで複数のトレーニングジョブを実行する場合に特に価値があります。システムの状態変化に自動的に適応し、手動操作なしで最適なリソース割り当てを保証します。
Link to this sectionApple Silicon MPSトレーニング#
Ultralytics YOLOモデルにApple Siliconチップのサポートが統合されたことで、強力なMetal Performance Shaders (MPS)フレームワークを利用するデバイスでモデルをトレーニングできるようになりました。MPSは、Appleのカスタムシリコン上で計算および画像処理タスクを実行するための高性能な手段を提供します。
Apple Siliconチップ上でトレーニングを有効にするには、トレーニング開始時にデバイスとして'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 Siliconチップの計算能力を活用することで、トレーニングタスクの処理効率が向上します。詳細なガイダンスや高度な設定オプションについては、PyTorch MPSドキュメントを参照してください。
Link to this section中断されたトレーニングの再開#
以前に保存された状態からトレーニングを再開することは、ディープラーニングモデルを扱う上で極めて重要な機能です。これは、トレーニングプロセスが予期せず中断された場合や、新しいデータでモデルのトレーニングを継続したい場合、あるいはエポック数を増やしたい場合など、さまざまな場面で役立ちます。
トレーニングが再開されると、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エポックを完了する必要があります。
Link to this sectionトレーニング設定#
YOLOモデルのトレーニング設定は、トレーニングプロセス中に使用されるさまざまなハイパーパラメータや設定を網羅しています。これらの設定は、モデルのパフォーマンス、速度、精度に影響を与えます。主なトレーニング設定には、バッチサイズ、学習率、モーメンタム、重み減衰(Weight Decay)があります。さらに、オプティマイザー、損失関数、トレーニングデータセット構成の選択もトレーニングプロセスに影響を及ぼします。これらの設定を慎重に調整・試行することは、パフォーマンスを最適化する上で極めて重要です。
Link to this sectionMuSGDオプティマイザー#
YOLO26では、MuSGDは標準的なSGD更新とMuonスタイルの直交化更新を組み合わせたハイブリッドオプティマイザーです。
これはYOLO26の長時間トレーニングや大規模データセットに対して推奨され、直交化されたMuon更新が最適化の安定化を助けます。
param.ndim >= 2のパラメータ(畳み込み重みなど)のみがMuonスタイル更新とSGDを同時に受け取り、バッチ正規化層やバイアス項などの低次元パラメータは標準のSGDのままとなります。
optimizer=autoが使用されると、Ultralyticsは長時間トレーニング(通常は反復回数が10000を超える場合)に対して自動的にMuSGDを選択します。短時間のトレーニングでは、トレーナーはAdamWに戻ります。
使用例:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDultralytics/optim/muon.pyの実装と、BaseTrainer.build_optimizer内のオプティマイザー自動選択ロジックを参照してください。
| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
model | str | None | トレーニング用のモデルファイルを指定します。.pt事前学習済みモデルまたは.yaml設定ファイルのいずれかへのパスを受け付けます。モデル構造の定義や重みの初期化に不可欠です。 |
data | str | None | データセット設定ファイル(例:coco8.yaml)へのパスです。このファイルには、トレーニングおよび検証データへのパス、クラス名、クラス数など、データセット固有のパラメータが含まれています。 |
epochs | int | 100 | トレーニングエポックの合計数です。各エポックはデータセット全体を一度通過することを意味します。この値を調整すると、トレーニング期間とモデルのパフォーマンスに影響を与える可能性があります。 |
time | float | None | 最大トレーニング時間を時間単位で指定します。設定された場合、これはepochs引数を上書きし、指定された期間後に自動的にトレーニングを停止させます。時間制限のあるトレーニングシナリオで有用です。 |
patience | int | 100 | 検証メトリクスの改善が見られない場合に、トレーニングを早期終了するまでのエポック数です。パフォーマンスが停滞したときにトレーニングを停止することで、過学習を防ぐのに役立ちます。 |
batch | intまたはfloat | 16 | バッチサイズには3つのモードがあります。整数として設定(例:batch=16)、GPUメモリ使用率60%の自動モード(batch=-1)、または指定した使用率(batch=0.70)の自動モードです。 |
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 Silicon用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 | 姿勢推定モデルにおけるキーポイント物体性損失(keypoint objectness loss)の重み。検出の信頼性と姿勢精度のバランスをとります。 |
rle | float | 1.0 | 姿勢推定モデルにおける残差対数尤度推定損失(residual log-likelihood estimation loss)の重み。キーポイント配置の精度に影響します。 |
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 | PyTorch 2.x の torch.compile グラフコンパイルを backend='inductor' で有効にします。True → "default"、False → 無効、または "default"、"reduce-overhead"、"max-autotune-no-cudagraphs" などの文字列モードを受け入れます。非対応の場合は警告と共に Eager モードにフォールバックします。 |
max_det | int | 300 | トレーニングのバリデーションフェーズ中に保持される最大物体数を指定します。 |
batch 引数は以下の3つの方法で設定できます。
- 固定 バッチサイズ: 整数値(例:
batch=16)を設定し、バッチあたりの画像数を直接指定します。 - 自動モード (GPUメモリ 60%):
batch=-1を使用すると、CUDA メモリ使用量が約 60% になるようにバッチサイズが自動調整されます。 - 利用率割合による自動モード: 小数値(例:
batch=0.70)を設定し、GPU メモリ使用量の指定割合に基づいてバッチサイズを調整します。 - OOM 自動リトライ: 最初のエポック中に CUDA メモリ不足エラーが発生した場合、トレーナーは自動的にバッチサイズを半分にして(最大3回まで)リトライします。これは単一 GPU トレーニングにのみ適用されます。マルチ GPU (DDP) トレーニングの場合は直ちにエラーが発生します。
Link to this sectionデータ拡張設定とハイパーパラメータ#
データ拡張手法は、トレーニングデータ に多様性をもたらし、モデルが未知のデータに対しても汎化できるようにすることで、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のみ)。特殊な拡張ニーズのために変換オブジェクトのリストを受け入れます。 |
これらの設定は、データセットと対象のタスクの特定の要件を満たすように調整できます。さまざまな値を試すことで、最高のモデルパフォーマンスにつながる最適な拡張戦略を見つける助けになります。
トレーニング拡張操作の詳細については、リファレンスセクションを参照してください。
Link to this sectionログ記録#
YOLO26モデルのトレーニングにおいて、モデルの経時的なパフォーマンスを追跡することは価値があります。ここでログ記録が役立ちます。Ultralytics YOLOは、Comet、ClearML、TensorBoardという3種類のロガーをサポートしています。
ロガーを使用するには、上記のコードスニペットのドロップダウンメニューから選択して実行します。選択したロガーがインストールおよび初期化されます。
Link to this sectionComet#
Cometは、データサイエンティストや開発者が実験やモデルを追跡、比較、説明、最適化できるプラットフォームです。リアルタイムのメトリクス、コード差分、ハイパーパラメータ追跡などの機能を提供します。
Cometを使用するには:
# pip install comet_ml
import comet_ml
comet_ml.init()Cometのウェブサイトでアカウントにサインインし、APIキーを取得することを忘れないでください。実験を記録するために、これを環境変数またはスクリプトに追加する必要があります。
Link to this sectionClearML#
ClearMLは、実験の追跡を自動化し、リソースの効率的な共有を支援するオープンソースプラットフォームです。チームがMLワークをより効率的に管理、実行、再現できるように設計されています。
ClearMLを使用するには:
# pip install clearml
import clearml
clearml.browser_login()このスクリプトを実行した後、ブラウザでClearMLアカウントにサインインし、セッションを認証する必要があります。
Link to this sectionTensorBoard#
TensorBoardは、TensorFlow用の視覚化ツールキットです。TensorFlowグラフの視覚化、グラフ実行に関する定量的なメトリクスのプロット、そこを通過する画像などの追加データの表示が可能です。
Google ColabでTensorBoardを使用するには:
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryTensorBoardをローカルで使用するには、以下のコマンドを実行し、localhost:6006で結果を表示します。
tensorboard --logdir ultralytics/runs # replace with 'runs' directoryこれによりTensorBoardが読み込まれ、トレーニングログが保存されているディレクトリにアクセスします。
ロガーの設定が完了したら、モデルのトレーニングに進むことができます。すべてのトレーニングメトリクスは選択したプラットフォームに自動的に記録され、これらのログにアクセスしてモデルのパフォーマンスを長期的に監視し、異なるモデルを比較し、改善点を特定できます。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionローカルのGPUなしでトレーニングできますか?#
はい。Ultralytics Platformは、無料クレジットを使用してクラウドトレーニングをサポートしています。データセットをアップロードし、モデルとGPUを選択して、ブラウザから直接トレーニングを開始できます。詳細はクラウドトレーニングガイドを参照してください。
Link to this sectionUltralytics 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)詳細については、トレーニング設定セクションを参照してください。
Link to this sectionUltralytics YOLO26のトレーニングモードの主な機能は何ですか?#
Ultralytics YOLO26のトレーニングモードの主な機能は以下の通りです:
- 自動データセットダウンロード: COCO、VOC、ImageNetなどの標準データセットを自動的にダウンロードします。
- マルチGPUサポート: 複数のGPUでトレーニングをスケールさせて、処理を高速化します。
- ハイパーパラメータ設定: YAMLファイルまたはCLI引数を介してハイパーパラメータをカスタマイズします。
- 視覚化と監視: 洞察を深めるためのトレーニングメトリクスのリアルタイム追跡。
これらの機能により、ニーズに合わせて効率的かつカスタマイズ可能なトレーニングが可能になります。詳細については、トレーニングモードの主な機能セクションを参照してください。
Link to this sectionUltralytics 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)詳細については、中断されたトレーニングの再開セクションを確認してください。
Link to this section不均衡なデータセットでモデルをトレーニングする方法は?#
クラスの不均衡は、トレーニングデータにおいて一部のクラスの例が他のクラスよりも大幅に少ない場合に発生します。これにより、モデルが希少なクラスでうまく機能しなくなる可能性があります。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 まで上げてください。トレーニングログで計算されたクラスの重みを確認して、重み付け分布を検証できます。
Link to this sectionAppleシリコンチップで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トレーニングセクションを参照してください。
Link to this section一般的なトレーニング設定にはどのようなものがあり、どのように構成しますか?#
Ultralytics YOLO26では、バッチサイズ、学習率、エポックなどのさまざまなトレーニング設定を引数を介して構成できます。概要は以下の通りです:
| 引数 | デフォルト | 説明 |
|---|---|---|
model | None | トレーニングに使用するモデルファイルへのパス。 |
data | None | データセット設定ファイルへのパス (例: coco8.yaml)。 |
epochs | 100 | トレーニングエポックの総数。 |
batch | 16 | バッチサイズ。整数または自動モードで調整可能。 |
imgsz | 640 | トレーニングのターゲット画像サイズ。 |
device | None | cpu、0、0,1、または mps のような、トレーニング用の計算デバイス。 |
save | True | トレーニングチェックポイントと最終的なモデル重みの保存を有効にする。 |
トレーニング設定の詳細ガイドについては、トレーニング設定セクションを確認してください。