モデルの評価とファインチューニングに関する知見#
YOLOモデルのトレーニングを行った後、次のステップはそのパフォーマンスを測定し、ギャップを埋めるための微調整(ファインチューニング)を行うことです。評価では、mAPやIoUなどの指標を使用して精度を数値化し、微調整によってトレーニングパラメータを調整して弱点を補強することで、モデルがプロジェクトの目的を満たすようにします。このガイドでは、主要な評価指標、その読み方、およびモデルの機能を高める微調整のテクニックについて説明します。
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
評価と微調整は、コンピュータビジョンプロジェクトのワークフローの終盤近くに位置し、トレーニングが進行中で、モデルが正確で効率的であり、デプロイの準備ができていることを確認する必要がある段階で行われます。
主要な評価指標#
さまざまな指標によって、モデルがどれほど効果的に機能しているかを測定します。これらのパフォーマンス指標は、モデルが意図した目標を確実に達成できるように改善を導く、明確な数値による洞察を提供します。
信頼度スコア (Confidence Score)#
信頼度スコアは、検出されたオブジェクトが特定のクラスに属しているというモデルの確信度を表します。スコアは0から1の範囲で、数値が高いほど自信が高いことを示します。信頼度スコアは予測のフィルタリングに役立ちます。指定されたしきい値を超える信頼度スコアを持つ検出のみが有効とみなされます。
推論を実行した際に予測結果が表示されず、他の項目をすべて確認済みの場合は、信頼度しきい値(confidence threshold)を下げてみてください。しきい値が高すぎて、モデルが有効な予測を無視している場合があります。しきい値を下げることで、モデルはより多くの可能性を考慮できるようになります。これは最終的なプロジェクト目標には適合しないかもしれませんが、モデルの能力を確認し、どのように微調整すべきかを判断するための良い方法です。
Intersection over Union (IoU)#
Intersection over Union (IoU) は、予測された bounding box が正解の bounding box とどの程度重なっているかを測定する、object detection の指標です。IoU の値は 0 から 1 の範囲で、1 は完璧な一致を表します。IoU は、予測された境界が実際のオブジェクトの境界とどれほど正確に一致しているかを測定するために不可欠です。
Mean Average Precision#
Mean Average Precision(mAP)は、物体検出モデル全体のパフォーマンスを測定します。各物体クラスの検出精度を調べ、これらのスコアを平均して、モデルがどれほど正確に物体を識別および分類できるかを示す単一の数値を導き出します。
一般的に、以下の2つのmAP指標がよく報告されます:
- mAP@.5: 0.5という単一のIoUしきい値における平均精度を測定します。この指標は、比較的緩やかな精度要件でモデルが正しく物体を見つけられるかを確認します。完璧な配置を必要とせず、物体がおおよそ正しい位置にあるかどうかに焦点を当て、モデルが一般的に物体を検出する能力に優れているかを確認するのに役立ちます。
- 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辞書に個別にレポートされます。これらを組み合わせることで、モデルが苦戦している画像を特定し、それに応じて微調整を行うことができます。
モデルの微調整#
微調整(ファインチューニング)は、学習済みモデルのパラメータを調整し、特定のタスクやデータセットでのパフォーマンスを向上させる手法です。モデルの再学習とも呼ばれ、現実世界で遭遇するデータに対してより優れた理解と予測を可能にします。評価結果に基づき、いくつかの主要なパラメータとテクニックに注意を払いながらモデルを再学習させ、最適な結果を目指します。
より高い学習率から始める#
通常のトレーニングでは、学習率は低い状態から始まり、初期の更新を安定させるために最初の数エポックにかけて徐々に増加します。微調整を行う場合、モデルはすでに事前トレーニングからの有用な特徴を保持しているため、このウォームアップをスキップして、すぐに新しいデータへの適応を開始できます。
ウォームアップフェーズを無効にするには、model.train() 内の warmup_epochs トレーニング引数を 0 に設定します。これにより、学習率を徐々に上げるのではなく、設定されたベース学習率 (lr0) で事前学習済みウェイトからのトレーニングが継続され、新しいデータのニュアンスに適応します。
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Fine-tune with the warmup phase disabled
model.train(data="coco8.yaml", epochs=10, warmup_epochs=0)小さなオブジェクトのための画像タイリング#
画像タイリングは、小さな物体の検出精度を向上させることができます。1280x1280の画像を複数の640x640のセグメントに分割するなど、大きな画像を小さなセグメントに分割することで、元の解像度を維持し、高解像度の断片からモデルに学習させることができます。Ultralyticsは、SAHIタイルド推論を通じて、推論時にこれをサポートしています。タイル化された画像でトレーニングを行う場合は、新しいセグメントごとにラベルを正しく調整するようにしてください。
結論#
評価と微調整は、トレーニング済みのモデルを信頼性が高くデプロイ可能なモデルに変えるものです。mAPやIoUなどの指標によって弱点が明らかになり、ターゲットを絞ったパラメータ変更によってそれらが対処されます。検証モードから始めてモデルのベンチマークを行い、上記の微調整テクニックを適用し、新しいパラメータ、テクニック、データセットで反復処理を続けてください。途中で質問が生じた場合は、Ultralytics GitHubリポジトリやUltralytics Discordサーバーでコミュニティに質問してください。
よくある質問 (FAQ)#
YOLO26モデルのパフォーマンスを評価するための主要な指標は何ですか?#
YOLO26モデルのパフォーマンスを評価するための重要な指標には、信頼度スコア(Confidence Score)、Intersection over Union(IoU)、Mean Average Precision(mAP)が含まれます。信頼度スコアは、検出された各物体クラスに対するモデルの確実性を測定します。IoUは、予測されたバウンディングボックスが正解とどれだけ重なり合っているかを評価します。Mean Average Precision(mAP)は、クラス全体の精度スコアを集計したものであり、mAP@.5とmAP@.5:.95は、異なるIoUしきい値に対して一般的に使用される2つのタイプです。これらの指標の詳細については、YOLO26パフォーマンス指標ガイドをご覧ください。
事前トレーニング済みのYOLO26モデルを特定のデータセット用にファインチューニングするにはどうすればよいですか?#
事前学習済みの YOLO26 モデルのファインチューニングには、特定のタスクやデータセットでのパフォーマンスを向上させるためのパラメータ調整が含まれます。まずモデルを評価指標で評価し、次に model.train() 内の warmup_epochs トレーニング引数を 0 に設定することで、学習率が徐々に上がるのではなく、設定されたベース値からすぐに開始されるようにします。評価時には、rect=true などのパラメータが、さまざまな画像サイズを効果的に処理するのに役立ちます。詳細については、fine-tuning your model に関するセクションを参照してください。
YOLO26モデルの評価時に可変画像サイズをどのように処理すればよいですか?#
評価中のさまざまな画像サイズに対応するには、YOLO26のrect=trueパラメータを使用します。これにより、すべての画像を強制的に正方形にする代わりに、画像をアスペクト比ごとにグループ化して各バッチをパディングします。imgszパラメータは、検証用の画像サイズを設定します。これを上書きしない場合、YOLO26はモデルの保存された値(公式の事前トレーニング済みモデルの場合は640)を再利用します。データセットとGPUメモリに合わせてimgszを調整してください。詳細については、さまざまな画像サイズの処理に関するセクションをご覧ください。
YOLO26モデルのMean Average Precisionを向上させるためにどのような実践的なステップが取れますか?#
YOLO26モデルのMean Average Precision (mAP) を向上させるには、いくつかのステップが必要です。
- ハイパーパラメータのチューニング: 異なる学習率、バッチサイズ、および画像拡張(データオーグメンテーション)を試してください。
- データオーグメンテーション: MosaicやMixUpなどのテクニックを使用して、多様なトレーニングサンプルを作成します。
- 画像のタイル分割: 大きな画像を小さなタイルに分割して、小さな物体の検出精度を向上させます。
具体的な戦略については、モデルの微調整に関する詳細なセクションを参照してください。
PythonでYOLO26モデルの評価指標にアクセスするにはどうすればよいですか?#
バリデーション実行後、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パフォーマンス指標に関するガイドをご確認ください。