目标检测 常见公开数据集 COCO && PASCAL、性能指标 AP && mAP

本文介绍了三个主要的目标检测数据集:ImageNet、PASCALVOC和COCO,包括它们的规模、类别和应用场景。同时,讨论了目标检测中的关键性能指标,如Precision、Recall、IOU和AP,以及计算AP的两种方法,并解释了mAP、AP50等概念。这些内容对于理解目标检测算法的评价标准至关重要。

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

1 常见数据集

先要明确:
目标定位:提供的图片有一个目标,只需要将其位置定位出来
目标检测:提供的图片有一个或多个目标,需要把所有的目标的位置定位,并且判断出该目标的分类

ImageNet
ImageNet拥有用于分类、定位和检测任务评估的数据。

  • 图像总数量为:1419 7122,边界框注释的图像数:103 4908。
  • 分类数据、定位任务中有1000个类别。准确率根据 Top5 检测结果计算出。
  • 对 200 个目标的检测问题有 470000 个图像,平均每个图像中有1.1个目标。


PASCAL VOC
挑战在2005年 至 2012年间展开。

  • 该数据集中有20个分类。该数据集包含11530张用于训练和验证的图像,其中感兴趣区域有27450个标定。以下是数据集中的20个分类:

    • 人:人
    • 动物:鸟、猫、牛、狗、马、羊
    • 车辆:飞机、自行车、船、巴士、汽车、摩托车、火车
    • 室内:瓶、椅子、餐桌、盆栽植物、沙发、电视/检测器
  • 每个图像平均有2.4个目标

官网链接:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/

COCO
MS COCO 的全称为 Microsoft Common Object in Context,是微软与2014年出资标注的 Microsoft COCO 数据集。
与 ImageNet 竞赛一样,被视为是计算机视觉领域最受关注和最权威的比赛之一。在 ImageNet竞赛停办后,COCO竞赛就成为当前目标识别、检测等领域的一个最权威重要的标杆,也是目前该领域在国际上唯一能汇集Google、微软、Facebook以及国内外众多顶尖院校和优秀创新企业共同参与的大赛

  • COCO目标检测挑战:
    • COCO数据集包含了20万个图像
    • 80个类别中超过50万个目标标注。他是最广泛公考的目标检测数据库
    • 平均每个图像的目标数为7.2个
  • COCO数据集现有3中标注类型:object instances(目标实例)、object keypoints(目标上的关键点)、image caption(看图说话),以 json 文件形式存储

2 性能指标

目标检测的常见性能指标

  • Precision、Recall、
  • IOU (Intersection over Union)
  • P-R curve(Precision-Recall curve)
  • AP(Average Precision)
  • mAP(mean Average Precision)
  • FPS(Frames Per Second)

2.1 Precision/Recall

准确率(Precision)
真阳率/召回率/灵敏度(True Positive Rate/Recall/Sensitivity)【即,阳性样本中的阳性检出率】
真阴率/特异度(True Negative Rate/Specificity)【即,阴性样本中的阴性检出率】

  • 准确率 = T P T P + F P \frac{TP}{TP+FP} TP+FPTP
  • 真阳率/召回率/灵敏度 = T P T P + F N \frac{TP}{TP+FN} TP+FNTP
  • 真阴率/特异度 = T N T N + F P \frac{TN}{TN+FP} TN+FPTN
    在这里插入图片描述
    其中:第一位 T/F:表示预测的对错;第二位 P/N:表示预测的结果

2.2 目标检测中的IOU

在这里插入图片描述
目标检测中的TP、FP、FN、TN

  • TP:对 ground-true 框正确的检测(分类正确,预测框与GT框的IOU大于阈值)
  • FP:对不存在的东西做了错误的预测,或者预测的IOU小于阈值
  • FN:漏检测
  • TN(不考虑):在目标检测里是不考虑TN,因为可以有无数个不包含目标的框。所以涉及到TN的指标,都不会在目标检测中使用。

常用的是精准率和召回率:

  • 精准率 P = T P T P + F P \frac{TP}{TP+FP} TP+FPTP = T P a l l   d e t e c t i o n \frac{TP}{all\ detection} all detectionTP
  • 召回率 R = T P T P + F N \frac{TP}{TP+FN} TP+FNTP = T P a l l   g r o u n d t r u t h s \frac{TP}{all\ ground truths} all groundtruthsTP

P 追求的精确,R追求的召回,所以要在 P和R之间要做一个平衡,则使用AP指标


2.3 AP指标:

举个例子,如下图一共7张图片,绿色框是GT(15个),红色框是预测框(24个)并带有置信度。假设IOU=30%,按照置信度排序如下图
在这里插入图片描述
在这里插入图片描述
其中:
TP:正确预测、FP:错误预测
acc TP:从头到该位置累计正确个数、acc FP:从头到该位置累计错误的个数
precision:从头到该位置的精确率、recall:从头到该位置的召回率

P1 = T P a l l   d e t e c t i o n \frac{TP}{all\ detection} all detectionTP = 1/1 = 1 ; R1 = T P a l l   g r o u n d t r u t h s \frac{TP}{all\ ground truths} all groundtruthsTP = 1/15 = 0.0666
P2 = T P a l l   d e t e c t i o n \frac{TP}{all\ detection} all detectionTP = 1/2 = 0.5 ; R2 = T P a l l   g r o u n d t r u t h s \frac{TP}{all\ ground truths} all groundtruthsTP = 1/15 = 0.0666
P3 = T P a l l   d e t e c t i o n \frac{TP}{all\ detection} all detectionTP = 2/3 = 0.666 ; R3 = T P a l l   g r o u n d t r u t h s \frac{TP}{all\ ground truths} all groundtruthsTP = 2/15 = 0.1333
P4 = T P a l l   d e t e c t i o n \frac{TP}{all\ detection} all detectionTP = 2/4 = 0.5; R3 = T P a l l   g r o u n d t r u t h s \frac{TP}{all\ ground truths} all groundtruthsTP = 2/15 = 0.1333
P5 = T P a l l   d e t e c t i o n \frac{TP}{all\ detection} all detectionTP = 2/5 = 0.4; R5 = T P a l l   g r o u n d t r u t h s \frac{TP}{all\ ground truths} all groundtruthsTP = 2/15 = 0.1333
P6 = T P a l l   d e t e c t i o n \frac{TP}{all\ detection} all detectionTP = 2/6 = 0.333; R6 = T P a l l   g r o u n d t r u t h s \frac{TP}{all\ ground truths} all groundtruthsTP = 2/15 = 0.1333

将PR绘制成图:
在这里插入图片描述
以上,准备工作已经做好,下面就要讲述AP的计算方式。
AP 的计算有两种方式: A P 11 AP_{11} AP11 A P a l l AP_{all} APall。关于AP的计算一般使用的为 A P 11 AP_{11} AP11

A P 11 AP_{11} AP11在这里插入图片描述

  • PR图:上图中的蓝颜色的曲线为
  • A P 11 AP_{11} AP11:上图中红点的纵坐标的均值。红点如何选取的呢?
    • 红点的横坐标为 [0,1]之间均匀取值11个,即 [0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]。
    • 纵坐标的取值为 该点的右侧的PR线的最高值。
    • A P 11 = 1 11 AP_{11} = \frac{1}{11} AP11=111(1+0.6666+0.4285+0.4285+0.4285) = 26.84%

A P a l l AP_{all} APall
在这里插入图片描述

  • PR图:蓝色线
  • A P a l l AP_{all} APall:红色虚线下方所有的面积。红色虚线的纵坐标是单调递减的。
    A P 11 = AP_{11} = AP11=(1*(0.6666 - 0) + 0.6666 *(0.1333 - 0.0666) + 0.4285 * (0.4-0.1333) + 0.3043 * (0.4666 - 0.4)) = 24.56%

2.4 mAP、AP50、AP@50:5:95

  • mAP:如果是多类别目标检测任务,就要使用 mean AP。也就是对所有的类别进行AP的计算,然后去取均值。其定义为: m A P = 1 N ∑ i = 1 N A P i mAP=\frac{1}{N}\sum_{i=1}^{N}AP_{i} mAP=N1i=1NAPi

  • AP50:IOU阈值取 0.5

  • AP70:IOU阈值取 0.7

  • AP@50:5:95 指的是 IOU的值从 0.5 取到 0.95,步长为0.05,然后计算在这些IOU阈值下的AP的均值
    在这里插入图片描述

### Pascal VOC、COCO 和 ImageNet 数据集目标检测评估指标 #### Pascal VOC 数据集的评估指标 Pascal VOC 数据集采用了一系列经典的评估指标来衡量目标检测模型的表现。其中最核心的两个概念是查准率(Precision)和查全率(Recall)。 - **Precision (查准率)** 表示预测为目标的数量中有多少比例确实是真正的目标对象[^1]。 - **Recall (查全率)** 则表示实际目标数量中有多少比例被成功检测出来。 为了综合考虑 Precision 和 Recall 的表现,引入了 Average Precision (AP) 这一指标。在 Pascal VOC 中,通常会设定 IoU 阈值为 0.5 来判断检测框是否匹配真实框。随后通过计算 PR 曲线下的面积得出 AP 值[^3]。最后,mAP(mean Average Precision)是对所有类别 AP 取平均的结果,用于整体性能评估。 #### COCO 数据集的评估指标 相较于 Pascal VOC,COCO 数据集采用了更为严格的评价体系。它不仅关注单一 IoU 阈值的情况,还扩展到了多个 IoU 范围内的表现分析。具体而言: - 平均精度 AP 定义为不同 IoU 下的 AP 均值,IoU 范围从 0.5 至 0.95,步长为 0.05[^2]。 - 此外还有针对特定 IoU 设置的子项,例如 $ \text{AP}_{\text{IoU}=0.5} $ 或者更严苛条件下的 $ \text{AP}_{\text{IoU}=0.75} $。 - 同样存在 mAP 计算方式,但其覆盖范围更大且更具挑战性。 另外值得注意的是 AR(Average Recall),该值反映了每张图片能够正确识别出的目标数目上限。AR 经常配合最大探测次数 k 使用 ($ \text{AR}_k $),以体现算法效率与效果之间的平衡关系。 #### ImageNet 数据集的评估指标 虽然 ImageNet 更广为人知是因为它的分类任务,但在涉及目标定位的任务部分也有相应的评测机制。然而相比前两者,ImageNet 在这方面并没有形成统一固定的模式;一般情况下仍沿用类似于 Pascal VOC 或 COCO 所定义的标准来进行比较研究[^4]。 ```python def calculate_ap(precision_list, recall_thresholds=[0, 0.1, ..., 1]): ap_values = [] for threshold in recall_thresholds: filtered_precisions = [p for r, p in zip(recalls, precisions) if r >= threshold] max_precision_at_recall = max(filtered_precisions) if filtered_precisions else 0 ap_values.append(max_precision_at_recall) return sum(ap_values)/len(ap_values) # Example usage of the function with hypothetical data points. recalls = [0.1, 0.2, ... , 1.0] precisions = [... corresponding values to recalls... ] ap_value = calculate_ap(precisions) print(f"The calculated AP value is {ap_value}") ``` 上述代码片段展示了如何基于给定的一组精确度(Precision)-召回率(Recall)对按照一定规则计算得到单类别的AP值的一个简化版本实现过程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值