Mean Average Precision (mAP)
平均適合率(mAP)がコンピュータービジョンモデルを評価する方法を学びます。IoU、適合率、再現率について解説し、Ultralytics YOLO26でmAPを計算します。
平均適合率(mAP)は、コンピュータビジョンモデルの性能評価に広く使用される包括的な指標であり、特に物体検出やインスタンスセグメンテーションなどのタスクで用いられます。画像が正しく分類されたかどうかだけを確認する単純な精度とは異なり、mAPはモデルが物体をどの程度正確に検出し、周囲のバウンディングボックスをどの程度正確に配置できるかを評価します。そのため、以前の世代に対するYOLO26のような最先端アーキテクチャを比較するための主要なベンチマークとなっています。すべてのクラスにわたる適合率と再現率のトレードオフを要約することで、mAPは実環境におけるモデルの堅牢性を反映する単一のスコアを提供します。
mAPの構成要素#
mAPを計算するには、まず検出品質を定義する3つの基本概念を理解する必要があります。
- 共通領域対和集合比(IoU): 予測ボックスと正解アノテーションの空間的な重なりを測定します。0から1までの比率で表されます。通常、IoUが0.5や0.75などの特定のしきい値を超えた場合にのみ、予測は「True Positive」と見なされます。
- 適合率: 「モデルが検出したと主張したすべての物体のうち、実際に正しかったものはどの程度の割合か」という問いに答える指標です。適合率が高いことは、モデルが生成する偽陽性が非常に少ないことを意味します。
- 再現率: 「画像内に実際に存在するすべての物体のうち、モデルが検出できたものはどの程度の割合か」という問いに答える指標です。再現率が高いことは、モデルが偽陰性を回避し、物体をほとんど見逃さないことを示します。
計算方法#
計算は、特定の各クラス(例: 「person」、「car」、「dog」)の平均適合率(AP)を算出することから始まります。これは、さまざまな信頼度しきい値における適合率を再現率に対してプロットした適合率-再現率曲線の下側の面積を求めることで算出します。平均適合率における「平均」とは、トレーニングデータ内のすべてのカテゴリについて、これらのAPスコアを平均することを指します。
COCOデータセットなどの標準的な研究ベンチマークでは、主に次の2つのバリエーションが報告されます。
-
mAP@50: IoUが0.50以上であれば検出を正しいと見なします。比較的寛容な指標です。
-
mAP@50-95: IoUしきい値0.50から0.95までを0.05刻みで計算したmAPの平均です。この厳格な指標は、高い位置特定精度を達成するモデルを高く評価します。
mAPと関連指標の比較#
mAPとAccuracyを区別することが重要です。Accuracyは、画像全体に対する単一のラベルを出力する画像分類には適していますが、物体の空間的位置や背景クラスを考慮しないため、物体検出では適切ではありません。同様に、F1-Scoreは単一の信頼度しきい値における適合率と再現率の調和平均を提供しますが、mAPはすべての信頼度レベルにわたる性能を統合し、モデルの安定性をより包括的に把握できます。
実世界での利用例#
安全性と効率性が最優先される環境では、高いmAPスコアが重要です。
- 自動運転車: 自動運転技術では、歩行者や交通標識を高い再現率(見逃しを防ぐ)と高い適合率(幻のブレーキを回避する)で検出することが安全性に直結します。mAPにより、認識システムがこれらの要件のバランスを効果的に取れているかを確認できます。
- 医用画像解析: X線画像で腫瘍や骨折を特定する際、放射線科医は潜在的な異常を検出するために医療分野におけるAIを利用します。高いmAPスコアは、モデルが医師に誤警報を大量に提示することなく異常を確実に強調できることを示し、正確な診断に役立ちます。
UltralyticsでmAPを測定する#
最新のフレームワークでは、検証フェーズ中にこれらの指標を簡単に計算できます。次の例では、モデルを読み込み、ultralytics Pythonパッケージを使用してmAPを計算する方法を示します。
from ultralytics import YOLO
# Load the YOLO26 model (recommended for new projects)
model = YOLO("yolo26n.pt")
# Validate the model on a dataset to compute mAP
# This runs inference and compares predictions to ground truth
metrics = model.val(data="coco8.yaml")
# Print mAP@50-95 (map) and mAP@50 (map50)
print(f"mAP@50-95: {metrics.box.map:.3f}")
print(f"mAP@50: {metrics.box.map50:.3f}")モデルデプロイの前に、mAPを理解し最適化することが重要です。このプロセスを効率化するため、Ultralytics Platformでは、トレーニング中にmAP、損失曲線、その他のKPIを自動的に追跡できます。これにより、開発者は進捗を可視化し、本番環境に適した最良のモデルチェックポイントを選択できます。









