Ultralytics YOLO ハイパーパラメータ調整ガイド
はじめに
ハイパーパラメータのチューニングは、単に1回限りの設定ではなく、精度、精度、想起などの機械学習モデルの性能指標を最適化することを目的とした反復プロセスである。Ultralytics YOLO の文脈では、これらのハイパーパラメータは、学習率から、層の数や使用する活性化関数の種類などのアーキテクチャの詳細まで、多岐にわたる。
見るんだ: モデル性能を向上させるハイパーパラメータのチューニング方法 🚀 🚀 モデル性能を向上させるハイパーパラメータのチューニング方法
ハイパーパラメータとは何か?
ハイパーパラメータは、アルゴリズムのハイレベルで構造的な設定である。これらは学習フェーズの前に設定され、学習フェーズ中は一定である。以下は、Ultralytics YOLO でよく調整されるハイパーパラメータです:
- 学習率
lr0
:の最小値に向かって移動しながら、各反復でステップサイズを決定する。 損失関数. - バッチサイズ
batch
:フォワードパスで同時に処理される画像の数。 - エポック数
epochs
:エポックとは、すべての学習例を完全に前進・後退させることである。 - アーキテクチャの仕様:チャンネル数、層数、活性化関数の種類など。
YOLO11 で使用されるオーグメンテーション・ハイパーパラメータの完全なリストについては、コンフィギュレーション・ページを参照されたい。
遺伝的進化と突然変異
Ultralytics YOLO 遺伝的アルゴリズムを使ってハイパーパラメータを最適化する。遺伝的アルゴリズムは、自然淘汰と遺伝学のメカニズムに着想を得ている。
- 突然変異:Ultralytics YOLO の文脈では、突然変異は、既存のハイパーパラメータに小さなランダムな変更を加え、評価のための新しい候補を生成することによって、ハイパーパラメータ空間を局所的に探索するのに役立つ。
- クロスオーバー:クロスオーバーは一般的な遺伝的アルゴリズム技法であるが、Ultralytics YOLO では現在、ハイパーパラメータのチューニングには使用されていない。主に、新しいハイパーパラメータセットを生成するための突然変異に焦点が当てられている。
ハイパーパラメータのチューニングの準備
チューニング・プロセスを始める前に、重要なことがある:
- 測定基準を特定する:モデルのパフォーマンスを評価するために使用する指標を決定します。これは、AP50、F1スコア、またはその他である。
- チューニング予算の設定:どれだけの計算リソースを割り当てるかを定義する。ハイパーパラメータのチューニングは計算量が多くなることがあります。
ステップ
ハイパーパラメータの初期化
初期ハイパーパラメータの妥当なセットから始める。これは、Ultralytics YOLO によって設定されたデフォルトのハイパーパラメータでもよいし、ドメイン知識や過去の実験に基づいたものでもよい。
ハイパーパラメータの変異
を使用する。 _mutate
メソッドを使って、既存のハイパーパラメータに基づいて新しいハイパーパラメータを生成する。その チューナークラス はこの処理を自動的に行う。
鉄道模型
トレーニングは、ハイパーパラメータの変異セットを使用して実行されます。トレーニングのパフォーマンスは、選択したメトリクスを使って評価されます。
モデルの評価
モデルのパフォーマンスを評価するために、AP50、F1スコア、またはカスタム・メトリクスなどのメトリクスを使用します。評価プロセスは、現在のハイパーパラメータが以前のものよりも優れているかどうかを決定するのに役立ちます。
ログ結果
パフォーマンス・メトリクスと対応するハイパー・パラメータの両方を記録し、将来参照できるようにすることは非常に重要です。Ultralytics YOLO 、これらの結果をCSV形式で自動的に保存します。
リピート
このプロセスは、設定された反復回数に達するか、パフォーマンス指標が満足のいくものになるまで繰り返される。各反復は、以前の実行で得られた知識を基に構築される。
デフォルトの検索スペース
次の表は、YOLO11 におけるハイパーパラメータのチューニングのためのデフォルトの探索空間パラメータの一覧です。各パラメータは、タプル (min, max)
.
パラメータ | タイプ | 値の範囲 | 説明 |
---|---|---|---|
lr0 |
float |
(1e-5, 1e-1) |
トレーニング開始時の初期学習率。値が小さいほど学習は安定するが、収束は遅くなる。 |
lrf |
float |
(0.01, 1.0) |
lr0に対する最終学習率の割合。学習率がトレーニング中にどの程度減少するかを制御する。 |
momentum |
float |
(0.6, 0.98) |
SGD運動量係数。値が大きいほど勾配の方向が一定に保たれ、収束が早くなります。 |
weight_decay |
float |
(0.0, 0.001) |
オーバーフィッティングを防ぐためのL2正則化係数。値が大きいほど正則化が強くなる |
warmup_epochs |
float |
(0.0, 5.0) |
線形学習率ウォームアップのエポック数。初期トレーニングの不安定性を防ぐ |
warmup_momentum |
float |
(0.0, 0.95) |
ウォームアップ期の初期運動量。最終運動量まで徐々に増加 |
box |
float |
(0.02, 0.2) |
全損失関数におけるバウンディングボックス損失の重み。バウンディングボックス回帰と分類のバランス |
cls |
float |
(0.2, 4.0) |
全損失関数における分類損失の重み。値が大きいほど、正しいクラス予測が強調される。 |
hsv_h |
float |
(0.0, 0.1) |
HSV色空間におけるランダムな色相拡張範囲。カラーバリエーション全体におけるモデルの一般化を支援 |
hsv_s |
float |
(0.0, 0.9) |
HSV空間のランダムな彩度増加範囲。異なる照明条件をシミュレート |
hsv_v |
float |
(0.0, 0.9) |
乱数値(輝度)増大範囲。モデルが異なる露光レベルに対応しやすくなる |
degrees |
float |
(0.0, 45.0) |
度単位での最大回転増大。モデルがオブジェクトの向きに対して不変になるのを助ける |
translate |
float |
(0.0, 0.9) |
画像サイズに占める並進補強の割合を最大化。オブジェクトの位置に対するロバスト性を向上 |
scale |
float |
(0.0, 0.9) |
ランダムな拡大縮小範囲。モデルが異なるサイズの物体を検出するのを助ける |
shear |
float |
(0.0, 10.0) |
度単位で最大剪断増大。トレーニング画像に遠近法のような歪みを加える |
perspective |
float |
(0.0, 0.001) |
ランダムなパースペクティブ拡張範囲。異なる視野角をシミュレート |
flipud |
float |
(0.0, 1.0) |
トレーニング中に画像が垂直方向に反転する確率。俯瞰/空撮画像に有効。 |
fliplr |
float |
(0.0, 1.0) |
画像が水平方向に反転する確率。物体の方向に対してモデルが不変になるのを助ける |
mosaic |
float |
(0.0, 1.0) |
4枚の画像を合成するモザイク補強を使用する確率。特に小さな物体の検出に有効 |
mixup |
float |
(0.0, 1.0) |
2つの画像をブレンドするミックスアップ補強を使用する確率。モデルのロバスト性を向上させることができる |
copy_paste |
float |
(0.0, 1.0) |
コピーペースト補強を使用する確率。インスタンスのセグメンテーション性能の向上に役立つ |
カスタム検索スペースの例
ここでは、探索空間を定義して model.tune()
メソッドを利用する。 Tuner
COCO8上でAdamWオプティマイザを使用し、30エポックのYOLO11nのハイパーパラメータチューニングを行うクラスで、チューニングを高速化するために、最終エポック以外のプロット、チェックポイント、検証をスキップする。
例
from ultralytics import YOLO
# Initialize the YOLO model
model = YOLO("yolo11n.pt")
# Define search space
search_space = {
"lr0": (1e-5, 1e-1),
"degrees": (0.0, 45.0),
}
# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
data="coco8.yaml",
epochs=30,
iterations=300,
optimizer="AdamW",
space=search_space,
plots=False,
save=False,
val=False,
)
結果
ハイパーパラメータのチューニング・プロセスが正常に完了すると、チューニングの結果をカプセル化したいくつかのファイルとディレクトリが得られます。以下、それぞれについて説明します:
ファイル構成
結果のディレクトリ構造はこうなる。トレーニング・ディレクトリ train1/
個々のチューニング反復、つまり1セットのハイパーパラメータで訓練された1つのモデルが含まれる。つまり tune/
ディレクトリには、すべての個別モデルトレーニングのチューニング結果が含まれています:
runs/
└── detect/
├── train1/
├── train2/
├── ...
└── tune/
├── best_hyperparameters.yaml
├── best_fitness.png
├── tune_results.csv
├── tune_scatter_plots.png
└── weights/
├── last.pt
└── best.pt
ファイルの説明
best_hyperparameters.yaml
このYAMLファイルには、チューニングプロセスで見つかった最適なハイパーパラメータが含まれます。このファイルを使用して、最適化された設定で将来の学習を初期化することができます。
- フォーマットYAML
- 使い方ハイパーパラメータの結果
-
例
# 558/900 iterations complete ✅ (45536.81s) # Results saved to /usr/src/ultralytics/runs/detect/tune # Best fitness=0.64297 observed at iteration 498 # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297} # Best fitness model is /usr/src/ultralytics/runs/detect/train498 # Best fitness hyperparameters are printed below. lr0: 0.00269 lrf: 0.00288 momentum: 0.73375 weight_decay: 0.00015 warmup_epochs: 1.22935 warmup_momentum: 0.1525 box: 18.27875 cls: 1.32899 dfl: 0.56016 hsv_h: 0.01148 hsv_s: 0.53554 hsv_v: 0.13636 degrees: 0.0 translate: 0.12431 scale: 0.07643 shear: 0.0 perspective: 0.0 flipud: 0.0 fliplr: 0.08631 mosaic: 0.42551 mixup: 0.0 copy_paste: 0.0
ベストフィットネス.png
これは反復回数に対するフィットネス(通常AP50のような性能指標)を表示するプロットです。これは、遺伝的アルゴリズムが時間とともにどの程度うまくいったかを視覚化するのに役立ちます。
- フォーマットPNG
- 使い方パフォーマンスの可視化
tune_results.csv
チューニング中の各反復の詳細な結果を含むCSVファイル。ファイルの各行は1回の反復を表し、フィットネス・スコア、精度、リコールなどのメトリクスと、使用されたハイパーパラメータが含まれる。
- フォーマットCSV
- 使い方:反復ごとの結果追跡。
- 例:
fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste 0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0 0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0 0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0
tune_scatter_plots.png
このファイルには tune_results.csv
これは、異なるハイパーパラメータとパフォーマンス・メトリクスの関係を視覚化するのに役立ちます。0に初期化されたハイパーパラメータはチューニングされないことに注意してください。 degrees
そして shear
の下にある。
- フォーマットPNG
- 使い方探索的データ分析
ウェイト
このディレクトリには PyTorchこのディレクトリには、ハイパーパラメータ・チューニング・プロセスの最後の反復と最良の反復のために保存されたモデルが含まれます。
last.pt
:last.ptはトレーニングの最後のエポックからの重みである。best.pt
:最高のフィットネススコアを達成した反復のbest.pt重み。
これらの結果を使用することで、将来のモデルのトレーニングや分析において、より多くの情報に基づいた決定を下すことができます。これらの成果物を自由に参照し、あなたのモデルがどの程度うまくいったか、またどのようにすればさらに改善できるかを理解してください。
結論
Ultralytics YOLO のハイパーパラメータ・チューニング・プロセスは、突然変異に焦点を当てた遺伝的アルゴリズム・ベースのアプローチのおかげで、簡素化されていながら強力である。このガイドに概説されているステップに従うことで、より良いパフォーマンスを達成するためにモデルを体系的にチューニングすることができます。
さらに読む
より深い洞察については Tuner
クラス ソースコードと付属のドキュメントをご覧ください。ご質問、機能リクエスト、その他サポートが必要な場合は、お気軽に下記までご連絡ください。 ギットハブ または ディスコード.
よくあるご質問
ハイパーパラメータのチューニング中にUltralytics YOLO の学習率を最適化するには?
Ultralytics YOLO の学習レートを最適化するには、まず、次のようにして初期学習レートを設定する。 lr0
パラメータを使用します。一般的な値は 0.001
への 0.01
.ハイパーパラメータのチューニングの過程で、この値は最適な設定を見つけるために変更される。あなたは model.tune()
メソッドを使ってこのプロセスを自動化することができる。例えば
例
詳しくは、Ultralytics YOLO の 設定ページをご覧ください。
YOLO11 、ハイパーパラメータのチューニングに遺伝的アルゴリズムを使用する利点は何ですか?
Ultralytics YOLO11 における遺伝的アルゴリズムは、ハイパーパラメータ空間を探索するためのロバストな方法を提供し、高度に最適化されたモデル性能をもたらす。主な利点は以下のとおりである:
- 効率的な探索:突然変異のような遺伝的アルゴリズムは、大規模なハイパーパラメータのセットを素早く探索することができる。
- ローカル・ミニマムの回避:ランダム性を導入することで、ローカル・ミニマムを回避し、より良い大域的最適化を保証する。
- パフォーマンス指標:AP50やF1スコアなどのパフォーマンス指標に基づいて適応する。
遺伝的アルゴリズムがどのようにハイパーパラメータを最適化できるかについては、ハイパーパラメータ進化ガイドをご覧ください。
Ultralytics YOLO の場合、ハイパーパラメータのチューニングにかかる時間は?
Ultralytics YOLO によるハイパーパラメータのチューニングに要する時間は、データセットのサイズ、モデルアーキテクチャの複雑さ、反復回数、利用可能な計算リソースなど、いくつかの要因に大きく依存する。例えば、COCO8 のようなデータセットで YOLO11n を 30 エポック チューニングするには、ハードウェアにもよるが、数時間から数日かかる。
チューニング時間を効果的に管理するために、あらかじめ明確なチューニング予算を定義しておく(内部セクションのリンク)。これは、リソース配分と最適化目標のバランスをとるのに役立ちます。
YOLO 、ハイパーパラメータのチューニング中にモデルのパフォーマンスを評価するには、どのような指標を使用すればよいでしょうか?
YOLO でハイパーパラメータのチューニングを行う際にモデルのパフォーマンスを評価する場合、いくつかの主要なメトリクスを使用することができます:
- AP50: IoU閾値0.50における平均精度。
- F1スコア:精度と想起の調和平均。
- PrecisionとRecall:真陽性と偽陽性および偽陰性を識別するモデルの精度を示す個々の測定基準。
これらのメトリクスは、モデルのパフォーマンスのさまざまな側面を理解するのに役立ちます。包括的な概要については、Ultralytics YOLO パフォーマンス・メトリクス・ガイドをご参照ください。
YOLO11高度なハイパーパラメータ最適化のためにRay Tuneを使用できますか?
はい、Ultralytics YOLO11 11は高度なハイパーパラメーター最適化のためにRay Tuneと統合されています。Ray Tuneは、ベイズ最適化やハイパーバンドなどの洗練された探索アルゴリズムと、チューニング・プロセスを高速化する並列実行機能を提供します。
レイ・チューンをYOLO11使用するには、次のように設定するだけです。 use_ray=True
パラメータを model.tune()
メソッドを呼び出す。詳細と例については レイ・チューン統合ガイド.