モデル学習のための機械学習のベストプラクティスとヒント
はじめに
コンピュータービジョンプロジェクトに取り組む際に最も重要なステップの1つは、モデルのトレーニングです。このステップに到達する前に、目標を定義し、データを収集してアノテーションを付ける必要があります。データがクリーンで一貫性があることを確認するためにデータを前処理した後、モデルのトレーニングに進むことができます。
見る: モデルトレーニングのヒント | 大規模データセットの処理方法 | バッチサイズ、GPU使用率と 混合精度
では、モデルのトレーニングとは何でしょうか?モデルのトレーニングとは、モデルに視覚的なパターンを認識させ、データに基づいて予測を行わせるプロセスです。これは、アプリケーションのパフォーマンスと精度に直接影響します。このガイドでは、コンピュータビジョンモデルを効果的にトレーニングするためのベストプラクティス、最適化手法、およびトラブルシューティングのヒントについて説明します。
機械学習モデルをトレーニングする方法
コンピュータビジョンモデルは、エラーを最小限に抑えるために内部パラメータを調整することでトレーニングされます。最初に、モデルにはラベル付けされた画像の大きなセットが与えられます。モデルはこれらの画像の内容について予測を行い、予測を実際のラベルまたは内容と比較してエラーを計算します。これらのエラーは、モデルの予測が真の値からどれだけずれているかを示します。
トレーニング中、モデルは反復的に予測を行い、誤差を計算し、バックプロパゲーションと呼ばれるプロセスを通じてパラメータを更新します。このプロセスにおいて、モデルは誤差を減らすために内部パラメータ(重みとバイアス)を調整します。このサイクルを何度も繰り返すことで、モデルは徐々に精度を向上させます。時間をかけて、形状、色、テクスチャなどの複雑なパターンを認識することを学習します。

この学習プロセスにより、コンピュータビジョンモデルは、物体検出、インスタンスセグメンテーション、画像分類など、さまざまなタスクを実行できるようになります。最終的な目標は、学習内容を新しい、未知の画像に一般化できるモデルを作成し、現実世界のアプリケーションで視覚データを正確に理解できるようにすることです。
モデルのトレーニング時に何が起こっているかを理解したところで、モデルのトレーニング時に考慮すべき点を見てみましょう。
大規模データセットでの学習
大規模なデータセットを使用してモデルをトレーニングする場合、考慮すべき点がいくつかあります。例えば、バッチサイズを調整したり、GPU 使用率を制御したり、マルチスケールトレーニングを使用したりできます。これらのオプションについて詳しく見ていきましょう。
バッチサイズとGPU使用率
大規模なデータセットでモデルをトレーニングする場合、GPUを効率的に利用することが重要です。バッチサイズは重要な要素です。これは、機械学習モデルが1回のトレーニングイテレーションで処理するデータサンプル数です。 GPUでサポートされている最大バッチサイズを使用すると、その機能を最大限に活用し、モデルのトレーニングにかかる時間を短縮できます。ただし、GPUメモリの不足は避けたいところです。メモリエラーが発生した場合は、モデルがスムーズにトレーニングされるまでバッチサイズを段階的に小さくしてください。
見る: Ultralytics YOLO26でバッチ推論を使用する方法 | pythonでの物体検出を高速化 🎉
YOLO26では、 batch_size におけるパラメータ 学習構成 GPU の容量に合わせて調整します。また、以下を設定します。 batch=-1 トレーニングスクリプトでは、自動的に決定されます。 バッチサイズ デバイスの機能に基づいて効率的に処理できます。バッチサイズを微調整することで、GPUリソースを最大限に活用し、トレーニングプロセス全体を改善できます。
サブセットトレーニング
サブセットトレーニングは、大規模なデータセットを代表する小規模なデータセットでモデルをトレーニングする賢い戦略です。特に初期のモデル開発やテストの際に、時間とリソースを節約できます。時間がない場合や、さまざまなモデル構成を試している場合は、サブセットトレーニングが適しています。
YOLO26では、を使用することで、サブセットトレーニングを簡単に実装できます fraction パラメータ。このパラメータを使用すると、トレーニングに使用するデータセットの割合を指定できます。たとえば、 fraction=0.1 これは、データの10%でモデルをトレーニングします。この手法を使用すると、完全なデータセットを使用してモデルをトレーニングする前に、迅速な反復とモデルの調整を行うことができます。サブセットトレーニングは、迅速な進捗を支援し、潜在的な問題を早期に特定するのに役立ちます。
マルチスケール学習
マルチスケールトレーニングは、異なるサイズの画像でモデルをトレーニングすることで、モデルの汎化能力を向上させる手法です。これにより、モデルは異なるスケールや距離にあるオブジェクトをdetectすることを学習し、より堅牢になります。
例えば、YOLO26をトレーニングする際、を設定することで、マルチスケールトレーニングを有効にできます scale パラメータ。このパラメータは、指定された係数でトレーニング画像のサイズを調整し、さまざまな距離にあるオブジェクトをシミュレートします。たとえば、 scale=0.5 トレーニング中に、トレーニング画像を0.5〜1.5倍の範囲でランダムにズームします。このパラメータを設定することで、モデルはさまざまな画像スケールを経験し、異なるオブジェクトサイズやシナリオにおける検出能力を向上させることができます。
Ultralytics 、画像サイズマルチスケールトレーニングを以下の方法でサポートします: multi_scale パラメータ。とは異なり scale画像を拡大した後、元のサイズにパディング/クロップして戻す imgsz, multi_scale 変更 imgsz 各バッチごとに(モデルストライドに丸められて)それ自体。例えば、 imgsz=640 および multi_scale=0.25トレーニングサイズは480から800までストライド単位でサンプリングされる(例:480, 512, 544, ..., 800)。一方、 multi_scale=0.0 固定サイズを維持する。
キャッシング
キャッシングは、機械学習モデルのトレーニング効率を向上させるための重要なテクニックです。前処理された画像をメモリに保存することで、GPUがディスクからデータをロードするのを待つ時間を短縮します。モデルは、ディスクI/O操作による遅延なしに、継続的にデータを受信できます。
YOLO26のトレーニング時に、を使用してキャッシュを制御できます cache パラメータ:
cache=True:データセットの画像をRAMに保存します。これにより、最速のアクセス速度が得られますが、メモリ使用量が増加します。cache='disk':画像をディスクに保存します。RAMよりは遅いですが、毎回新しいデータをロードするよりは高速です。cache=False: キャッシュを無効にし、ディスクI/Oのみに依存します。これは最も遅いオプションです。
混合精度トレーニング
混合精度トレーニングでは、16ビット(FP16)と32ビット(FP32)の浮動小数点型を組み合わせて使用します。FP16による高速な計算と、必要な箇所でFP32を使用することによる精度の維持という、両者の利点を活用します。ほとんどのニューラルネットワークの演算はFP16で行われ、計算速度の向上とメモリ使用量の削減に貢献します。ただし、モデルの重みのマスターコピーはFP32で保持され、重みの更新ステップ中の精度を保証します。これにより、同じハードウェア制約内で、より大きなモデルやより大きなバッチサイズを扱うことができます。

混合精度トレーニングを実装するには、トレーニングスクリプトを変更し、ハードウェア(GPUなど)がそれをサポートしていることを確認する必要があります。多くの最新の深層学習フレームワーク(PyTorchやTensorFlowなど)は、混合精度に対する組み込みサポートを提供しています。
YOLO26で作業する場合、混合精度トレーニングは簡単です。を使用できます。 amp トレーニング構成のflag。設定 amp=True 自動混合精度(AMP)トレーニングを有効にします。混合精度トレーニングは、モデルのトレーニングプロセスを最適化するためのシンプルかつ効果的な方法です。
事前学習済み重み
事前学習済み重みを使用することは、モデルのトレーニングプロセスを高速化するための賢明な方法です。事前学習済み重みは、大規模データセットで既にトレーニングされたモデルから得られるため、モデルに有利なスタートを切らせることができます。転移学習は、事前学習済みモデルを新しい関連タスクに適応させます。事前学習済みモデルのファインチューニングには、これらの重みから開始し、その後、特定のデータセットでトレーニングを続行することが含まれます。このトレーニング方法は、モデルが基本的な特徴をしっかりと理解した状態で開始するため、トレーニング時間の短縮と多くの場合、より良いパフォーマンスをもたらします。
The pretrained パラメータにより、YOLO26での転移学習が容易になります。設定 pretrained=True デフォルトの事前学習済み重みを使用します。または、カスタムの事前学習済みモデルへのパスを指定することもできます。事前学習済み重みと転移学習を使用することで、モデルの能力を効果的に向上させ、トレーニングコストを削減できます。
大規模なデータセットを扱う際に検討すべきその他の手法
大規模なデータセットを扱う際に検討すべき、いくつかの手法があります。
- 学習率スケジューラ: 学習率スケジューラを実装すると、トレーニング中に学習率が動的に調整されます。適切に調整された学習率は、モデルが最小値をオーバーシュートするのを防ぎ、安定性を向上させることができます。YOLO26をトレーニングする際、
lrfparameterは、初期学習率に対する最終学習率の割合を設定することにより、学習率のスケジューリングを管理するのに役立ちます。 - Distributed Training: 大規模データセットを扱う場合、分散学習は非常に有効です。複数のGPUまたはマシンに学習ワークロードを分散させることで、学習時間を短縮できます。このアプローチは、特に大規模な計算リソースを必要とするエンタープライズ規模のプロジェクトに役立ちます。
トレーニングするエポック数
モデルのトレーニング時、エポックは、トレーニングデータセット全体を1回完全に通過することを指します。 1つのエポック中に、モデルはトレーニングセット内の各サンプルを1回処理し、学習アルゴリズムに基づいてパラメーターを更新します。モデルが学習し、時間の経過とともにパラメーターを改良するには、通常、複数のエポックが必要です。
よくある質問として、モデルをトレーニングするエポック数をどのように決定するかというものがあります。良い出発点は300エポックです。モデルが早期に過学習する場合は、エポック数を減らすことができます。300エポック後に過学習が発生しない場合は、トレーニングを600、1200、またはそれ以上のエポックに延長できます。
ただし、理想的なエポック数は、データセットのサイズとプロジェクトの目標によって異なります。大規模なデータセットでは、モデルが効果的に学習するためにより多くのエポックが必要になる場合がありますが、小規模なデータセットでは、過学習を避けるためにより少ないエポックで済む場合があります。YOLO26では、 epochs トレーニングスクリプトのパラメータ。
早期終了
早期終了は、モデルのトレーニングを最適化するための有効なテクニックです。検証パフォーマンスを監視することで、モデルの改善が停止した時点でトレーニングを停止できます。これにより、計算リソースを節約し、過学習を防ぐことができます。
このプロセスでは、トレーニングを停止する前に、検証メトリクスの改善を待つエポック数を決定する忍耐パラメータを設定します。モデルのパフォーマンスがこれらのエポック内で改善しない場合、時間とリソースの浪費を避けるためにトレーニングは停止されます。

YOLO26では、トレーニング設定でpatienceパラメータを設定することにより、早期停止を有効にできます。例えば、 patience=5 は、検証メトリクスの改善が5エポック連続して見られない場合、トレーニングが停止することを意味します。この方法を使用することで、トレーニングプロセスが効率的になり、過剰な計算なしに最適なパフォーマンスを達成できます。
クラウドとローカル学習の選択
モデルをトレーニングするには、クラウドトレーニングとローカルトレーニングの 2 つのオプションがあります。
クラウドトレーニングは、スケーラビリティと強力なハードウェアを提供し、大規模なデータセットと複雑なモデルの処理に最適です。Google Cloud、AWS、Azure などのプラットフォームは、高性能 GPU および TPU へのオンデマンドアクセスを提供し、トレーニング時間を短縮し、より大きなモデルでの実験を可能にします。ただし、クラウドトレーニングは、特に長期間の場合、高価になる可能性があり、データ転送によってコストと遅延が増加する可能性があります。
ローカルでのトレーニングは、より高度な制御とカスタマイズが可能であり、特定のニーズに合わせて環境を調整し、継続的なクラウドコストを回避できます。長期的なプロジェクトではより経済的であり、データはオンプレミスに保持されるため、より安全です。ただし、ローカルハードウェアにはリソースの制限があり、メンテナンスが必要になる場合があるため、大規模なモデルのトレーニング時間が長くなる可能性があります。
オプティマイザの選択
オプティマイザとは、モデルの性能を測る損失関数を最小化するために、ニューラルネットワークの重みを調整するアルゴリズムのことです。簡単に言うと、オプティマイザは、パラメータを調整してエラーを減らすことで、モデルの学習を支援します。適切なオプティマイザを選択することは、モデルがどれだけ迅速かつ正確に学習するかに直接影響します。
オプティマイザのパラメータを微調整して、モデルのパフォーマンスを向上させることもできます。学習率を調整すると、パラメータを更新する際の手順のサイズが設定されます。安定性を保つために、適度な学習率から始めて、長期的な学習を向上させるために徐々に学習率を下げていくとよいでしょう。さらに、モメンタムを設定することで、過去の更新が現在の更新にどれだけ影響を与えるかを決定します。モメンタムの一般的な値は約 0.9 です。これは一般的に良好なバランスを提供します。
一般的なオプティマイザ
異なるオプティマイザには、さまざまな長所と短所があります。いくつかの一般的なオプティマイザを見てみましょう。
SGD (確率的勾配降下法):
- パラメータに関する損失関数の勾配を使用して、モデルパラメータを更新します。
- シンプルで効率的ですが、収束が遅く、局所的な最小値でスタックする可能性があります。
Adam (Adaptive Moment Estimation):
- モーメンタム付きSGDとRMSPropの両方の利点を組み合わせたものです。
- 勾配の一次モーメントと二次モーメントの推定に基づいて、各パラメータの学習率を調整します。
- ノイズの多いデータやスパースな勾配に適しています。
- 効率的で、一般的にチューニングが少なくて済むため、YOLO26に推奨されるオプティマイザです。
RMSProp (Root Mean Square Propagation):
- 最近の勾配の大きさの移動平均で勾配を除算することにより、各パラメータの学習率を調整します。
- 勾配消失問題の処理に役立ち、リカレントニューラルネットワークに有効です。
YOLO26の場合、 optimizer パラメーターを使用すると、SGD、Adam、AdamW、NAdam、RAdam、RMSPropなど、様々なオプティマイザーから選択できます。または、に設定することも可能です。 auto モデル構成に基づいて自動選択する場合。
コミュニティと繋がる
コンピュータビジョンの愛好家のコミュニティに参加することは、問題を解決し、より速く学習するのに役立ちます。つながり、助けを得て、アイデアを共有するためのいくつかの方法を以下に示します。
コミュニティリソース
- GitHub Issues: YOLO26 GitHubリポジトリにアクセスし、Issuesタブを使用して質問、バグ報告、新機能の提案を行ってください。コミュニティとメンテナーは非常に活発で、いつでもサポートする準備ができています。
- Ultralytics Discordサーバー: Ultralytics Discordサーバーに参加して、他のユーザーや開発者とチャットしたり、サポートを受けたり、あなたの経験を共有しましょう。
公式ドキュメント
- Ultralytics YOLO26ドキュメント: さまざまなコンピュータービジョンプロジェクト向けの詳細なガイドと役立つヒントについては、公式YOLO26ドキュメントをご覧ください。
これらのリソースを使用すると、課題を解決し、コンピュータービジョンコミュニティの最新のトレンドとプラクティスを常に把握できます。
主なポイント
コンピュータビジョンモデルのトレーニングには、ベストプラクティスに従い、戦略を最適化し、発生する問題を解決することが含まれます。バッチサイズの調整、混合精度トレーニング、事前学習済み重みからの開始などのテクニックは、モデルの性能を向上させ、トレーニングを高速化することができます。サブセットトレーニングや早期停止などの方法は、時間とリソースを節約するのに役立ちます。コミュニティとつながり、新しいトレンドに追随することで、モデルトレーニングスキルを向上させ続けることができます。
よくある質問
Ultralytics YOLOで大規模なデータセットをトレーニングする際に、GPU使用率を向上させるにはどうすればよいですか?
GPU の使用率を向上させるには、以下を設定します。 batch_size トレーニング設定のパラメータをGPUがサポートする最大サイズに設定します。これにより、GPUの機能を最大限に活用し、トレーニング時間を短縮できます。メモリエラーが発生した場合は、トレーニングがスムーズに実行されるまでバッチサイズを段階的に減らしてください。YOLO26では、設定することで batch=-1 トレーニングスクリプトでは、効率的な処理のために最適なバッチサイズが自動的に決定されます。詳細については、以下を参照してください。 学習構成.
混合精度トレーニングとは何ですか、またYOLO26でそれを有効にするにはどうすればよいですか?
混合精度トレーニングは、16ビット(FP16)と32ビット(FP32)の浮動小数点型を利用して、計算速度と精度を両立させます。このアプローチにより、モデルの精度を犠牲にすることなく、トレーニングを高速化し、メモリ使用量を削減します。 精度。YOLO26で混合精度トレーニングを有効にするには、を設定します。 amp パラメータを True トレーニング構成内。これにより、Automatic Mixed Precision(AMP)トレーニングが有効になります。この最適化手法の詳細については、以下を参照してください。 学習構成.
マルチスケールトレーニングはYOLO26モデルのパフォーマンスをどのように向上させますか?
マルチスケールトレーニングは、さまざまなサイズの画像でトレーニングすることでモデルのパフォーマンスを向上させ、モデルが異なるスケールや距離に対してより良く汎化できるようにします。YOLO26では、設定することでマルチスケールトレーニングを有効にできます。 scale トレーニング構成におけるパラメータ。例: scale=0.5 0.5から1.5の間のズーム倍率をサンプリングし、その後パディング/クロッピングして元のサイズに戻す imgszこの技術は異なる距離にある物体をシミュレートし、様々なシナリオにおいてモデルの堅牢性を高めます。設定や詳細については、 学習構成.
YOLO26でトレーニングを高速化するために、事前学習済み重みをどのように使用できますか?
事前学習済み重みを使用すると、基礎的な視覚的特徴にすでに慣れているモデルを活用することで、トレーニングを大幅に加速し、モデルの精度を向上させることができます。YOLO26では、単にを設定します。 pretrained パラメータを True または、トレーニング設定でカスタムの事前学習済み重みへのパスを指定します。この転移学習と呼ばれる手法により、大規模データセットでトレーニングされたモデルを特定のアプリケーションに効果的に適応させることができます。事前学習済み重みの使用方法とその利点については、で詳しく学ぶことができます。 トレーニング設定ガイド.
モデルのトレーニングに推奨されるエポック数は何ですか、またYOLO26でこれをどのように設定しますか?
エポック数とは、モデルトレーニング中にトレーニングデータセット全体を通過する回数を指します。一般的な開始点は300エポックです。モデルが早期に過学習する場合は、数を減らすことができます。あるいは、過学習が見られない場合は、トレーニングを600、1200、またはそれ以上のエポックに延長することもできます。YOLO26でこれを設定するには、を使用します。 epochs トレーニングスクリプトのパラメータ。理想的なエポック数を決定するための追加のアドバイスについては、こちらのセクションを参照してください。 エポック数.