郭震 AI公众号:郭震AI

13 模型评估之 mAP 计算

发布日期:

最近更新:

分类: 目标检测

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点5 个
图文要点6 张
正文规模1.7k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 5 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

模型评估之 mAP 计算结构图查看大图
模型评估之 mAP 计算结构图

目标检测的关键是同时完成识别和定位,评估时要看类别、位置和真实场景错例。阅读时可以按「mAP 概述 -> AP 的计算步骤 -> 示例代码 -> mAP 的应用案例」建立结构,再回到正文里的代码、案例或指标做验证。

模型评估之 mAP 计算核对图查看大图
模型评估之 mAP 计算核对图

读完后,用一个真实小任务复查:输入是什么,处理环节在哪里,输出是否可验收;失败时先查「mAP 概述」,再查「AP 的计算步骤」。

在前一篇中,我们探讨了模型评估的两个重要指标,即精确度(Precision)和召回率(Recall)。这两个指标是评估目标检测模型性能的基础,然而,对于目标检测任务而言,单纯依赖这两个指标可能无法全面反映模型的性能。因此,我们引入了一个更为全面的评估方法——平均精确度(Mean Average Precision, mAP)。

mAP 概述

mAP 是用于衡量目标检测模型性能的一个重要指标。它综合了精确度和召回率,并考虑了模型对不同类别的检测效果。mAP 的计算主要包括两个步骤:

mAP计算判断卡查看大图
mAP计算判断卡

计算 mAP 时,先看 IoU 阈值、置信度排序、Precision-Recall 曲线、AP 和多类别平均。

  1. 计算每个类别的 AP(Average Precision):这是通过将模型在某个类别上的检测结果按照置信度排序,并计算不同召回率下的精确度来获得的。
  2. 计算所有类别的 mAP:对所有类别的 AP 进行平均,得到最终的 mAP 值。

AP 的计算步骤

为了计算某个类别的 AP,我们可以采取如下步骤:

目标检测阅读地图卡查看大图
目标检测阅读地图卡

开始读《模型评估之 mAP 计算》前,可以先看图中从问题到结果的路径。读完后再对照正文,确认自己能不能照着复现。

  1. 获取检测结果:假设模型对验证集上的每个目标检测到多个边框(bounding boxes)及其对应置信度(confidence scores)。
  2. 按照置信度排序:将所有检测框按照置信度从高到低进行排序。
  3. 计算精确度和召回率
    • 在每个检测框上,判断其是否为正样本(正确检测),通常使用 IOU(Intersection over Union)来衡量。如果检测框与真实框的 IOU 大于设定阈值(例如 0.5),则该检测框被视为真正(True Positive, TP),否则为假阳性(False Positive, FP)。
    • 计算精确度(Precision)和召回率(Recall): Precision=TPTP+FPPrecision = \frac{TP}{TP + FP} Recall=TPTP+FNRecall = \frac{TP}{TP + FN}
  4. 绘制 PR 曲线:精确度与召回率的关系可以通过绘制 PR 曲线表示。
  5. 计算 AP:将 PR 曲线下的面积计算出来,得到 AP 值。

示例代码

我们以下面的伪代码为例来展示 mAP 的计算过程:

def calculate_map(detections, ground_truths, iou_threshold=0.5):
    AP_per_class = {}
    # 遍历每个类别
    for cls in classes:
        # 获取该类别的检测框和真实框
        det_boxes = detections[cls]
        gt_boxes = ground_truths[cls]
        
        # 按照置信度排序
        det_boxes = sorted(det_boxes, key=lambda x: x['confidence'], reverse=True)
        
        TP = 0
        FP = 0
        total_true = len(gt_boxes)
        matched_gts = set()

        # 遍历检测框
        for box in det_boxes:
            best_iou = 0
            best_gt = -1
            
            # 获取与当前检测框的最佳 IOU
            for i, gt in enumerate(gt_boxes):
                if i not in matched_gts:
                    iou = calculate_iou(box['bbox'], gt['bbox'])
                    if iou > best_iou:
                        best_iou = iou
                        best_gt = i

            # 判断是否为 True Positive
            if best_iou >= iou_threshold:
                TP += 1
                matched_gts.add(best_gt)
            else:
                FP += 1
        
        # 计算精确度与召回率
        precision = TP / (TP + FP) if (TP + FP) > 0 else 0
        recall = TP / total_true if total_true > 0 else 0
        
        # 计算 AP
        AP = calculate_ap(precision, recall)
        AP_per_class[cls] = AP

    # 计算 mAP
    mAP = sum(AP_per_class.values()) / len(classes)
    return mAP

mAP 的应用案例

在许多现实世界的应用中,例如 自动驾驶视频监控,目标检测的精度直接影响系统的可靠性。在自动驾驶场景中,车辆需要实时识别路上的行人、交通标志和其他车辆,而每种目标类别的重要性和复杂度各不相同,因此,通过计算 mAP,我们能够更加准确地评估模型的表现。

例如,在一项自动驾驶的目标检测任务中,如果我们针对 “行人” 和 “交通信号灯” 这两个类别分别计算并评估 mAP,我们可以发现哪个类别表现较好,哪个类别则可能需要进一步训练和优化。这就为后续模型调整和迭代提供了重要的依据。

模型评估之 mAP 计算应用复盘卡查看大图
模型评估之 mAP 计算应用复盘卡

复习《模型评估之 mAP 计算》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。

模型评估之 mAP 计算应用检查卡查看大图
模型评估之 mAP 计算应用检查卡

练习《模型评估之 mAP 计算》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。

结论

mAP 是目标检测领域中一个强有力的评估指标,能够帮助我们全面理解模型在不同类别上的表现。通过 mAP,我们不仅可以知道模型的整体性能,还能够深入分析某个特定类别的检测能力,这对于模型优化至关重要。

在接下来的文章中,我们将讨论 目标检测在自动驾驶中的应用,为大家展示理论与实践结合的更多玄妙之处。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

模型评估之 mAP 计算适合谁读?

这是 目标检测教程 系列第 13 / 17 篇,适合正在学习目标检测教程,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇目标检测教程要多久?

按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...