物体検出の評価指標「AP」と「AR」をやさしく解説

YOLOX などの物体検出モデルでは、性能を見るために AP(Average Precision)と AR(Average Recall)という指標を使います。数式で表すとやや複雑ですが、本質はシンプルです。「どれくらい正しく見つけられたか」を、精度と見逃しの少なさという2つの角度から測ります。
1. AP(Average Precision)= 当たりの質
APは、モデルが「見つけた」と主張した検出のうち、正解だった割合の良さを平均した指標です。誤検出(ニセモノ)をどれだけ減らせるかを見るもの、と言い換えられます。
身近なたとえ
100個「見つけた」と言って、80個が正解・20個がハズレなら、正確さは 80/100=0.8。これを条件(後述の IoU しきい値)を変えながら評価し、平均したのが AP です。
IoU(どれだけ重なっているか)
検出は「箱(バウンディングボックス)」で出ます。正解の箱と予測の箱の重なり度合いを IoU(Intersection over Union)と言い、0〜1の値です。
- IoU=0.50:半分以上重なっていればOK(ざっくり当たり)
- IoU=0.75:かなり正確に重なる(精密に当たり)
AP@0.50(AP50)
「IoUが0.50以上なら正解」とみなすときの精度。
ゆるめの基準。高く出やすい。
AP@[0.50:0.95]
IoUを0.50〜0.95まで段階的に厳しくし、その平均をとった値。
厳しめの基準。低く出やすいが、総合力がわかる主指標。
APの目安
AP@[0.50:0.95] | 解釈 |
---|---|
0.50〜1.00 | 非常に良い(実運用でも安心しやすい) |
0.30〜0.50 | まずまず(改善の余地あり) |
0.10〜0.30 | 粗い(誤検出が多め) |
0.00〜0.10 | ほぼ当たっていない |
2. AR(Average Recall)= 見逃さない力
ARは、実際に存在する正解(物体)のうち、どれだけ検出できたかの平均です。見逃しの少なさを見る指標です。
身近なたとえ
実際は100個あるのに、80個しか見つけられなかったら、検出率は 80/100=0.8。これを条件を変えつつ平均したのが AR です。
AP と AR の対比
観点 | AP(Average Precision) | AR(Average Recall) |
---|---|---|
意味 | 当たりの質(ニセモノをどれだけ抑えたか) | 拾い漏れの少なさ(見逃しをどれだけ防げたか) |
低いとき | 誤検出が多い | 見逃しが多い |
改善の方向性 | 判定を厳しく・特徴の分離を良く・ノイズを減らす | 感度を上げる・解像度や小物対策・データ増強 |
3. 一緒に見ると「弱点」が見える
AP高い × AR低い
正確だが、見逃しが多い。
例)しきい値が厳しすぎる/小さい物体が拾えていない。
対処:入力サイズUP、小物のデータ増強、感度調整。
AP低い × AR高い
たくさん拾うが、誤検出も多い。
例)しきい値が緩すぎる/背景に似たノイズが多い。
対処:しきい値調整、難負例の追加、データのクレンジング。
両方低い
学習不足・データ不良・解像度不足などの根本問題。まずはデータ品質・アノテ整合性の見直しが優先。
4. サイズ別のAP/AR(small / medium / large)
評価では、対象の大きさ別(small/medium/large)に成績を見ることがあります。小さな物体は難易度が高いため、smallのAP/ARが低いのは珍しくありません。
- smallが低い:入力解像度の見直し、Copy-Pasteなどのデータ増強、小物クラスの出現率UPが効きます。
- largeが-1:検証データに大きい物体の正解が無い可能性。評価セットを再構成してください。
5. 用語を最短で
- バウンディングボックス(BBox):物体を囲む長方形の枠。
- IoU:予測枠と正解枠の重なりの割合(0〜1)。
- AP50:IoU≥0.50 での精度。
- AP@[0.50:0.95]:IoUを0.50〜0.95に変えた平均精度(主指標)。
- AR:正解をどれだけ見逃さず拾えたかの平均。
6. どちらを重視すべき?(用途別)
用途 | 重視 | 理由 |
---|---|---|
安全・監視(異常検知) | AR | 見逃すと事故リスク。多少の誤検出は許容。 |
検品・自動選別 | AP | 誤検出がコストや不良につながる。 |
汎用検出・学習比較 | AP@[0.50:0.95] | 総合力をフェアに比較できる標準指標。 |
7. 直感イメージ(テキスト図)
[実際にある物体] 100個 ↑ ←← 見逃さない力(Recall) │ [AIが検出した物体] 90個 │ ↓ 当たりの質(Precision) [正しく当たった検出] 80個 Precision = 80/90 Recall = 80/100 AP = Precision を条件を変えて平均 AR = Recall を条件を変えて平均
※ 条件=主に IoU のしきい値や、許容する検出数など。
8. 実務での読み方・落とし穴
- AP50だけ高い:ざっくり当たるが位置が甘い可能性。AP@[0.50:0.95]も必ず見る。
- APは悪くないのにARが低い:感度不足。小物や遠距離に弱いかも。スケール/データ増強を検討。
- サイズ別に偏り:評価データの分布が実運用とズレていると意思決定を誤る。現場比率で評価セットを構成。
9. 今日からできる改善の指針(短期版)
- 入力サイズ(
random_size
)の上限を上げ、小物の画素数を確保。 - Copy-Paste 等で小物クラスの出現頻度を増やす。
- 難負例(背景に似たもの)の追加で誤検出を抑える。
- 評価間隔を短くして(例:
eval_interval=50
)、早めに失敗傾向を掴む。