mAP与coco的评价指标

本文介绍了目标检测领域中常用的PASCAL VOC与MS COCO数据集,并详细解释了mAP(mean Average Precision)的概念及其计算方法。包括如何通过计算预测框与真实框之间的交并比(IoU)来确定真阳性(TP)、假阳性(FP)和假阴性(FN),进而计算查准率(Precision)和查全率(Recall),最终形成P-R曲线并得出AP(Average Precision)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标检测常用的两个数据集:
PASCAL VOC 与 MS COCO数据集

mAP:mean Average Precision, 即各类别AP的平均值
‘预测得到的是:bounding box; 人工标注的是:ground Truth box(GT box)
IoU指的是预测的bounding box与人工标注的GT box的交并比
TP(True Positive):IoU>0.5的检测框数量
FP(False Positive):IoU<=0.5的检测框数量(或者检测到同一个GT的多于检测框的数量)
FN(False Negative):没有检测到的GT的数量

Precision:TP/(TP+FP)(查准率)
Recall:TP/(TP+FN)(查全率)
AP:P-R曲线下的面积
P-R曲线:Precision-Recall曲线
mAP:mean Average Precision, 即各类别AP的平均值(一个类别,有一个AP)

针对confidence取不同的阈值,得到的precision与recall的值,例如:
在这里插入图片描述
当confidence的阈值设置为0.98:TP=1,FP=0,FN=6
Precision=1.0,Recall=0.14
当confidence的阈值设置为0.89:TP=2,FP=0,FN=5
Precision=1.0,Recall=0.28
当confidence的阈值设置为0.88:TP=3,FP=0,FN=4
Precision=1.0,Recall=0.42
再画出P-R曲线
在这里插入图片描述
在这里插入图片描述
AP表示:在IoU=0.5:0.05:0.95有10个IoU值,每个IoU值下的得到一个mAP,再求平均,实际上是mAP(COCO数据集中最主要的评价指标)
第二个AP(IoU=0.5),是PSACAL VOC所提供的评价指标
在这里插入图片描述
第一行是COCO的评价指标
第二行是PASCAL VOC的评价指标
第四行是关注小目标的情况
第八第九行对比看,是为了看目标数的大致情况

以上内容均是根据https://www.bilibili.com/video/BV1ez4y1X7g2做的笔记

### COCO 数据集 mAP 评估指标计算公式 COCO 数据集中,mAP (mean Average Precision) 是一种广泛用于目标检测任务的性能评估指标。其核心思想是对不同的 IoU (Intersection over Union) 阈值范围内的 AP (Average Precision) 进行平均计算。 #### 计算过程概述 1. **IoU 范围定义**: 在 COCO 数据集中,IoU 的阈值被设定为从 0.5 到 0.95,步长为 0.05。即 IoU 的取值集合为 {0.5, 0.55, 0.6, ..., 0.95}[^1]。 2. **单类别 AP 计算**: 对于每一个类别,在给定的 IoU 阈值下,通过绘制 PR 曲线(Precision-Recall Curve),并计算该曲线下的面积来获得 AP 值。PR 曲线基于 TP (True Positives), FP (False Positives), FN (False Negatives),这些统计量是在 NMS (Non-Maximum Suppression) 处理后的预测框基础上得出的[^2]。 3. **多类别 mAP 计算**: 对所有类别的 AP 值求均值,得到当前 IoU 下的整体 mAP 值。随后对多个 IoU 阈值下的 mAP 值再次求平均,最终得到整体的 COCO mAP 指标。 #### 数学表达式 假设共有 $ C $ 类物体,$ T $ 表示 IoU 阈值的数量,则: $$ \text{mAP}_{\text{COCO}} = \frac{1}{T} \sum_{t=1}^{T} \left( \frac{1}{C} \sum_{c=1}^{C} \text{AP}_c(t) \right) $$ 其中: - $\text{AP}_c(t)$: 第 $ c $ 类在第 $ t $ 个 IoU 阈值下的 AP 值; - $ T = 10 $: 因为 IoU 从 0.5 至 0.95 总共分为 10 个区间。 #### 改进版 mAP 特性 需要注意的是,相比于传统的 VOC07 方法,COCO 使用的积分法通常会使 mAP 值略有提升(约 5% 左右)。这是因为它更全面地考虑了整个 PR 曲线下方的面积,而非仅依赖固定点上的精度值[^3]。 ```python def compute_coco_map(precision_recall_curves, iou_thresholds=[0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95]): """ Compute the mean average precision (mAP) for a set of classes and IoU thresholds. Args: precision_recall_curves (dict): Dictionary mapping class IDs to their respective PR curves. iou_thresholds (list): List of IoU thresholds used in evaluation. Returns: float: The computed COCO-style mAP value. """ ap_per_class_and_iou = [] for iou in iou_thresholds: ap_per_class = [] for cls_id, pr_curve in precision_recall_curves.items(): # Integrate under the curve using trapezoidal rule or other methods ap_value = np.trapz(pr_curve['precision'], pr_curve['recall']) ap_per_class.append(ap_value) avg_ap_for_iou = sum(ap_per_class) / len(ap_per_class) ap_per_class_and_iou.append(avg_ap_for_iou) final_mAP = sum(ap_per_class_and_iou) / len(iou_thresholds) return final_mAP ``` 上述代码展示了如何根据 PR 曲线和指定的 IoU 阈值列表计算 COCO 样式的 mAP 值。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值