モデル評価とファインチューニングに関する知見#
YOLOモデルをトレーニングした後は、次にその性能を測定し、ギャップを埋めるためにファインチューニングを行います。評価ではmAPやIoUなどのメトリクスを使用して精度を定量化し、ファインチューニングではトレーニングパラメータを調整して弱点を強化し、モデルがプロジェクトの目標を満たせるようにします。このガイドでは、主要な評価メトリクス、その読み取り方、そして結果に基づく対応方法を説明します。
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
評価とファインチューニングは、コンピュータビジョンプロジェクトのワークフローの終盤に位置します。トレーニングが進み、モデルが正確かつ効率的で、デプロイ可能な状態かを確認する段階です。
主要な評価メトリクス#
モデルの性能をどれだけ効果的に発揮できているかは、さまざまなメトリクスで測定します。これらの性能メトリクスは、明確で数値化された知見を提供し、モデルが想定した目標を確実に達成できるよう改善を導きます。
信頼度スコア#
信頼度スコアは、検出したオブジェクトが特定のクラスに属するとモデルが確信する度合いを表します。値は0から1の範囲で、高いスコアほど信頼度が高いことを示します。信頼度スコアは予測のフィルタリングに役立ち、指定したしきい値を超える信頼度スコアの検出結果のみが有効とみなされます。
推論を実行していて、ほかのすべてを確認したにもかかわらず予測結果が表示されない場合は、信頼度のしきい値を下げてみてください。しきい値が高すぎると、モデルが有効な予測を無視することがあります。しきい値を下げると、モデルはより多くの可能性を検討できるようになります。これは最終的なプロジェクトの目標を満たさない可能性がありますが、モデルの能力を確認し、どのようにファインチューニングするかを判断する良い方法です。
Intersection over Union#
Intersection over Union (IoU)は、オブジェクト検出において、予測されたバウンディングボックスがグラウンドトゥルースのバウンディングボックスとどの程度重なっているかを測定するメトリクスです。IoUの値は0から1の範囲で、1は完全一致を表します。IoUは、予測された境界が実際のオブジェクトの境界とどの程度一致しているかを測定するため重要です。
Mean Average Precision#
Mean Average Precision (mAP)は、オブジェクト検出モデルの全体的な性能を測定します。各オブジェクトクラスの検出精度を調べ、それらのスコアを平均して、モデルがオブジェクトをどの程度正確に識別・分類できるかを示す単一の数値を算出します。
一般的に報告されるmAPメトリクスは、主に次の2つです。
- mAP@.5: 単一のIoUしきい値0.5における平均適合率を測定します。このメトリクスは、緩やかな精度要件でモデルがオブジェクトを正しく検出できるかを確認します。オブジェクトがほぼ正しい位置にあるかに焦点を当てており、完全な位置一致までは必要としないため、モデルが全般的にオブジェクトの検出に優れているかを把握するのに役立ちます。
- mAP@.5:.95: 0.5から0.95まで、0.05刻みの複数のIoUしきい値で計算したmAP値を平均します。このメトリクスは、より詳細で厳格です。さまざまな厳格さのレベルでモデルがオブジェクトをどの程度正確に検出できるかをより包括的に示し、精密なオブジェクト検出が必要なアプリケーションで特に役立ちます。
その他のmAPメトリクスには、より厳しいIoUしきい値0.75を使用するmAP@0.75や、サイズの異なるオブジェクト全体で精度を評価するmAP@small、medium、largeがあります。
YOLO26モデルの評価#
検証モードを使用して、トレーニング済みのYOLO26モデルを評価できます。各メトリクスの計算方法と解釈を詳しく確認するには、YOLO26性能メトリクスガイドを参照してください。
可変画像サイズの処理#
異なるサイズの画像でモデルを評価すると、多様なデータセットにおける性能を理解しやすくなります。rect=true検証パラメータは、アスペクト比に基づいて画像をグループ化し、各バッチを収められる最小の形状にパディングするため、長方形の画像を正方形に無理に変換せずに評価できます。
imgszパラメータは、検証時に使用する画像サイズを正方形として設定します。明示的に設定しない場合、YOLO26はモデルの設定に保存された値を再利用します(公式の事前トレーニング済みモデルでは640、カスタムチェックポイントではトレーニング時に使用したサイズ)。rect=trueを使用すると、YOLO26は長辺をimgszに制限し、アスペクト比を維持したまま短辺をストライドの倍数までパディングします。データセットの寸法と利用可能なGPUメモリに応じて、imgszを調整してください。
YOLO26メトリクスへのアクセス#
モデルの性能を詳しく理解するには、数行のPythonコードで特定の評価メトリクスにアクセスできます。以下のスニペットはモデルを読み込み、検証を実行して、最も有用なメトリクスを出力します。
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run validation on your dataset
results = model.val(data="coco8.yaml")
# Overall metrics
print("mAP50-95:", results.box.map) # mAP at IoU 0.50:0.95
print("mAP50:", results.box.map50) # mAP at IoU 0.50
print("mAP75:", results.box.map75) # mAP at IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness()) # weighted score used for model selection
# Per-class metrics
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)
# Per-image precision, recall, F1, TP, FP, and FN
print("Per-image metrics:", results.box.image_metrics)
# Per-stage timing breakdown in milliseconds per image
print("Timing breakdown (ms/image):", results.speed)fitness()はメソッドであり、括弧を付けて呼び出す必要があります。一方、map、map50、mpなどのメトリクスは、直接アクセスするプロパティです。
results.box.image_metrics属性は、画像ファイル名をキーとする画像ごとの辞書です。各画像について、IoU 0.5におけるprecision、recall、f1、tp、fp、fnを保持します。前処理、推論、損失、後処理の時間は、results.speed辞書に個別に報告されます。これらを組み合わせることで、モデルが苦手とする画像を特定し、それに応じてファインチューニングできます。
モデルのファインチューニング#
ファインチューニングでは、事前トレーニング済みモデルのパラメータを調整し、特定のタスクやデータセットにおける性能を向上させます。モデルの再トレーニングとも呼ばれ、実際のアプリケーションで遭遇するデータに対する理解と予測の精度を高められます。評価結果に基づき、ファインチューニングガイドで説明しているトレーニング引数を調整しながら、自分のデータでモデルを再トレーニングします。
小さなオブジェクトの画像タイリング#
画像タイリングにより、小さなオブジェクトの検出精度を向上させられます。大きな画像を小さなセグメントに分割し、たとえば1280x1280の画像を複数の640x640セグメントに分割することで、元の解像度を維持しながら、モデルが高解像度の断片から学習できるようになります。Ultralyticsは、SAHIタイル推論を通じて推論時にこの機能をサポートしています。タイル化した画像でトレーニングする場合は、新しい各セグメントに合わせてラベルを正しく調整してください。
まとめ#
評価とファインチューニングによって、トレーニング済みモデルは信頼性が高くデプロイ可能なモデルになります。mAPやIoUなどのメトリクスで弱点を明らかにし、対象を絞ったパラメータ変更で対処します。まず検証モードでモデルのベンチマークを行い、次にファインチューニングガイドで説明している引数を使って再トレーニングし、新しいパラメータ、手法、データセットで反復を続けてください。途中で疑問が生じた場合は、Ultralytics GitHubリポジトリまたはUltralytics Discordサーバーのコミュニティで質問してください。
FAQ#
YOLO26モデルの性能を評価するには、信頼度スコア、Intersection over Union (IoU)、Mean Average Precision (mAP)などの重要なメトリクスがあります。信頼度スコアは、検出した各オブジェクトクラスに対するモデルの確信度を測定します。IoUは、予測されたバウンディングボックスがグラウンドトゥルースとどの程度重なっているかを評価します。Mean Average Precision (mAP)はクラス全体の適合率スコアを集約したもので、mAP@.5とmAP@.5:.95は、異なるIoUしきい値における一般的な2種類です。これらのメトリクスの詳細は、YOLO26性能メトリクスガイドで確認できます。
事前トレーニング済みYOLO26モデルのファインチューニングでは、特定のタスクやデータセットにおける性能を向上させるためにパラメータを調整します。まずメトリクスでモデルを評価し、次に事前トレーニング済みの重みから自分のデータセットで再トレーニングします。評価時には、
rect=trueなどのパラメータが異なる画像サイズを効果的に処理するのに役立ちます。調整するトレーニング引数については、ファインチューニングガイドを参照してください。評価時に可変画像サイズを処理するには、YOLO26の
rect=trueパラメータを使用します。このパラメータは画像をアスペクト比でグループ化し、すべての画像を正方形に無理に変換するのではなく、各バッチにパディングを適用します。imgszパラメータは検証用の画像サイズを設定します。上書きしない場合、YOLO26はモデルに保存された値を再利用します(公式の事前トレーニング済みモデルでは640)。データセットとGPUメモリに合わせてimgszを調整してください。詳細については、可変画像サイズの処理に関するセクションを参照してください。YOLO26モデルのmean average precision (mAP)を向上させるには、次のようないくつかの手順があります。
- ハイパーパラメータの調整: さまざまな学習率、バッチサイズ、画像オーグメンテーションを試します。
- データオーグメンテーション: MosaicやMixUpなどの手法を使用して、多様なトレーニングサンプルを作成します。
- 画像タイリング: 大きな画像を小さなタイルに分割し、小さなオブジェクトの検出精度を向上させます。
手順1と2で使用するトレーニング引数についてはファインチューニングガイドを、手順3については画像タイリングを参照してください。
検証の実行後、Pythonを使用してYOLO26モデルの評価メトリクスにアクセスできます。
使用方法from ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # Run validation results = model.val(data="coco8.yaml") # Access key metrics print("Mean average precision at IoU=0.50:", results.box.map50) print("Mean average precision at IoU=0.50:0.95:", results.box.map) print("Mean recall:", results.box.mr) print("Class indices evaluated:", results.box.ap_class_index)これらのメトリクスを分析すると、YOLO26モデルのファインチューニングと最適化に役立ちます。詳しくは、YOLO性能メトリクスに関するガイドを参照してください。