想象一场“渔夫捕鱼大赛”:评委往一片海域里随机撒下鱼群、蟹群和贝壳,参赛渔夫要在限定时间内撒网捕捞,并大声报告“我在哪个位置抓到了什么”。有的渔夫网眼太密,捞上来的全是垃圾;有的渔夫只盯着最大的鱼,漏掉了一堆小鱼;还有的渔夫报的位置偏差了十来米……评委该怎么公平打分?他们需要一个统一标准:既要看捞上来的东西里真货占多少,也要看有没有漏掉该捞的鱼,还要看报告的捕捞位置与鱼群真实位置重合了多少。这个评分标准,就是目标检测领域的 mAP(Mean Average Precision,平均精度均值)。它不只看“找没找到”,也不只看“找得准不准”,而是把两者揉合成一个可比较的分数,成为计算机视觉领域最广泛使用的检测评估指标。

岗位关联

掌握 mAP 是视觉与多模态 AI 从业者的基本功——无论是训练检测器、验收算法,还是在评测基准上解读模型能力,mAP 都是行业通用的“成绩单”。

目录
  1. 可视化演示
  2. 检测与评估需求:从“看图说话”到“撒网定位”
  3. IoU 交并比:渔网与鱼群的重合账
  4. 精确率与召回率:网里的真货 vs. 漏网之鱼
  5. PR 曲线与 AP:从单网表现到全场评分
  6. mAP 计算与变体:多鱼种大赛的总榜单
  7. mAP 实战运用:榜单背后的调参诊断
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

三步展示目标检测mAP:IoU匹配判定TP/FP、PR曲线下面积计算AP、以及mAP@0.5/mAP@0.75/mAP@0.5:0.95不同IoU阈值评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

IoU匹配机制 IoU: 交集/并集 匹配:与真值框比对 判定:TP/FP IoU=交/并 按阈值判定正误。

检测与评估需求:从“看图说话”到“撒网定位”

捕鱼大赛现场,一个优秀渔夫不仅要报“我抓到鱼了”,还要精确说出“在哪个海域、什么种类的鱼”。目标检测模型也是如此:给定一张图片,它不但要说出“图里有猫”,还要用框标出“猫在 (x1, y1) 到 (x2, y2) 这个区域”。这种“分类 + 定位”的双重输出,正是目标检测任务区别于普通图像分类的核心特征。

检测器输出的每个预测框都携带三样东西:边界框坐标(框在哪里)、类别标签(这是什么)、置信度分数(有多大把握)。有了这些输出,问题随之而来:两位渔夫都说自己抓得好,如何公平比较?只看“抓到的鱼多”,可能有人靠捞垃圾凑数;只看“报得准”,又可能有人故意只报最有把握的那一条。

mAP 应运而生。它像大赛评委团制定的规则手册,同时考察三个维度:找得准(框定位是否精确)、认得对(类别判断是否正确)、不遗漏(有没有漏掉该报的目标)。接下来的每一节,就像评委手册的每个章节,一步步拆解 mAP 是怎么把这三件事揉进一个分数的。

IoU 交并比:渔网与鱼群的重合账

评委怎么判断渔夫报的“鱼在坐标 (100, 50)”准不准?他掏出 GPS,对比渔夫报告的捕获范围与鱼群真实活动范围。两张范围重叠越多,说明报得越准。检测器中的“预测框”(模型输出的框)与“真实框”(标注者画出的目标范围)是否吻合,也需要一个量化指标——交并比(Intersection over Union,IoU)。

IoU 计算两个框的交集面积除以并集面积。完全重合时为 1,完全不重叠时为 0。IoU 越高,说明渔网下得越准、位置偏差越小。

所以 IoU 就像评委手中的“位置刻度尺”:刻度定在 0.95,渔夫必须把网下得分毫不差才算合格;刻度放宽到 0.5,网大致盖住鱼群就行。有了这把尺子,“位置报得准不准”终于有了统一度量。

IoU=∣A∩B∣∣A∪B∣\mathrm{IoU} = \frac{|A \cap B|}{|A \cup B|}
通俗地说,IoU 就是“渔网和鱼群重叠的部分”占“渔网和鱼群总面积”的比例。
  1. 交集面积 |A∩B|预测框 A 和真实框 B 重叠区域的面积,相当于渔网与鱼群活动区域交叠的部分。计算方法是取两框在 x 方向与 y 方向重叠长度的乘积:
    ∣A∩B∣=max⁡(0,min⁡(x2A,x2B)−max⁡(x1A,x1B))×max⁡(0,min⁡(y2A,y2B)−max⁡(y1A,y1B))|A \cap B| = \max(0, \min(x_2^A, x_2^B) - \max(x_1^A, x_1^B)) \times \max(0, \min(y_2^A, y_2^B) - \max(y_1^A, y_1^B))
  2. 并集面积 |A∪B|两框覆盖的总面积,等于两框面积之和减去重叠面积,相当于评委眼里“渔网范围 + 鱼群范围”的并集:
    ∣A∪B∣=SA+SB−∣A∩B∣|A \cup B| = S_A + S_B - |A \cap B|
  3. 阈值判定IoU 值与预设阈值比较,超过阈值(如 0.5)判定本次检测“命中”。阈值选得越高,对定位精度要求越苛刻:
    命中  ⟺  IoU≥θ\text{命中} \iff \mathrm{IoU} \ge \theta

精确率与召回率:网里的真货 vs. 漏网之鱼

渔夫收上一网,评委现场清点三笔账。第一笔:TP(True Positive,真阳例)——网里确实捞到了真鱼,对应模型正确框出的目标;第二笔:FP(False Positive,假阳例)——网里混入了海草垃圾,对应模型将背景误判成的目标框;第三笔:FN(False Negative,假阴例)——渔场里还有鱼没被捞到,对应模型漏检的真实目标。这三笔账,是所有检测评估的记账基础。

精确率(Precision)考察“捞上来的东西里真鱼占多少”:如果一网净是垃圾,精确率就低。它回答的是“模型说'这里有目标',说对了几次?”

召回率(Recall)考察“整个渔场所有鱼中捞到了多少”:如果十条鱼只捞到三条,召回率就低。它回答的是“图上所有目标,模型找回了几个?”

精确率和召回率像天平两端:渔夫把网眼放大,捞得多但垃圾也多(召回率升、精确率降);把网眼收小,网里干净但漏鱼也多(精确率升、召回率降)。只看任何一个都会片面,评委需要一条能展示两者“此消彼长”全过程的曲线。

Precision=TPTP+FP\mathrm{Precision} = \frac{TP}{TP + FP}
召回率 = 被正确框出的目标 ÷ 全部真实目标。漏网之鱼越少,这个分数越高。
  1. FN(假阴例)真实为正但模型没预测出来的样本数,即漏检的鱼。判定条件是真实框与所有预测框的最大 IoU 都低于阈值:
    FN=#{真实框:max⁡jIoU(GT,预测框j)<θ}\text{FN} = \#\{\text{真实框} : \max_j \mathrm{IoU}(GT, \text{预测框}_j) < \theta\}
  2. 分母含义TP + FN 恰好等于真实目标总数,因为每个真实目标要么被框住(TP),要么被漏掉(FN),没有第三种可能:
    TP+FN=#{Ground Truth Boxes}TP + FN = \#\{\text{Ground Truth Boxes}\}
  3. 整体比值把 TP 除以全部真实目标数,得到“模型找回了所有目标中的百分之几”:
    Recall=被捞到的鱼数渔场总鱼数\mathrm{Recall} = \frac{\text{被捞到的鱼数}}{\text{渔场总鱼数}}

PR 曲线与 AP:从单网表现到全场评分

渔夫心里有条“把握线”:只有当确信网下有鱼时才撒网(对应高置信度阈值),这时网里真货比例高,但很多鱼被漏过;把握线放低,见可疑目标就下网,鱼捞得全了,网里垃圾也变多了。评委让渔夫把这条把握线从最高到最低缓缓滑动,每换一档记下一组(召回率,精确率),就得到了一组“战绩点”。

以召回率为横轴、精确率为纵轴,把战绩点连起来,就是 PR 曲线。理想渔夫的曲线应该“顶”在右上角:无论要求多高的召回率,精确率都纹丝不动地保持高位;普通渔夫的曲线则会随着召回率升高而下滑,因为捞得越全,越难保证每网都是真货。

AP(Average Precision,平均精度)就是 PR 曲线下的面积。面积越大,说明检测器在“捞得全”和“捞得准”之间平衡得越好——这正是评委最看重的综合能力。

AP 像渔夫的技术综合分:不看某一网的运气,而是看从“网严”到“网松”的整个策略弧线内,持续保持高水平的能力。单网战绩再漂亮,曲线面积不大,依然不是好渔夫。

AP=∫01P(r) dr\mathrm{AP} = \int_0^1 P(r) \, dr
AP 是“对所有召回水平下的精确率求平均”。等效于 PR 曲线与坐标轴围成的面积。
  1. P(r) 函数精确率被表示为召回率 r 的函数。当要求“召回率达到 r”时,模型能达到的最高精确率是多少:
    P(r)=Precision at recall level rP(r) = \text{Precision} \ \text{at recall level} \ r
  2. 积分区间 [0, 1]召回率从 0(什么都没捞到)到 1(全部捞上来)连续变化,覆盖渔夫从“极保守”到“极激进”的完整策略范围:
    ∫01(⋅) dr\int_0^1 (\cdot) \, dr
  3. 离散近似实际计算中曲线是离散点,无法直接积分。常用 101 点插值法(在 0 到 1 之间均匀取 101 个召回率点,每个点取该召回率右侧的精确率最大值)或包络梯形法近似:
    AP≈1101∑r∈{0,0.01,…,1}Pinterp(r)\mathrm{AP} \approx \frac{1}{101}\sum_{r \in \{0, 0.01, \dots, 1\}} P_{\text{interp}}(r)

mAP 计算与变体:多鱼种大赛的总榜单

渔场里不可能只有一种鱼。评委先单独为每种目标评分:只看鱼的 PR 曲线,算出 AP_fish;只看螃蟹的 PR 曲线,算出 AP_crab;只看扇贝,算出 AP_scallop……最后把各类别的 AP 取平均,得到 mAP(Mean Average Precision)。这样做是为了防止“专攻一种鱼”的偏科选手靠运气刷高分。

COCO 数据集还确立了更严苛的评测协议:不只用一个 IoU=0.5 阈值,而是在 0.5 到 0.95 之间每隔 0.05 取一个阈值,各自算出 mAP 后取平均。这就是大家常听到的 mAP@0.5:0.95。它相当于评委把刻度尺从“网挨着鱼就算抓到”一路收到“必须正正好好兜住鱼”,再把各档成绩平均——想要高分,光认得对没用,框还得下得分毫不差。

mAP@0.5:0.95 的公式略有不同,它在 IoU 阈值维度上也做了平均:

mAP 总榜像大赛的综合排名:不只按某一类猎物评级,也不只用一把宽松的尺子,而是把“所有猎物种类 × 多种位置精度标准”的维度全部摊开平均,防止选手靠运气或专攻一种鱼刷排名。

mAP=1C∑c=1CAPc\mathrm{mAP} = \frac{1}{C}\sum_{c=1}^{C} \mathrm{AP}_c
把 IoU 阈值从 0.5 到 0.95 每隔 0.05 取一个,共 10 档,各自计算 mAP 后取平均。
  1. 阈值集合θ 从 0.5 开始、每次加 0.05、直到 0.95,共 10 个 IoU 阈值,好比 10 档不同松紧的命中标准:
    θ∈{0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95}\theta \in \{0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95\}
  2. mAP_θ在某个固定 IoU 阈值 θ 下算出的 mAP,表示在“位置允许偏差多大”这个特定标准下的综合成绩:
    mAPθ=1C∑c=1CAPc(θ)\mathrm{mAP}_{\theta} = \frac{1}{C}\sum_{c=1}^{C} \mathrm{AP}_c(\theta)
  3. 取平均把 10 档标准下的 mAP 求平均。越严苛的档位(θ 接近 0.95)对框的精度越敏感,因此该指标能放大定位精度的差异:
    mAP0.5:0.95=110∑θmAPθ\mathrm{mAP}_{0.5:0.95} = \frac{1}{10}\sum_{\theta} \mathrm{mAP}_{\theta}

mAP 实战运用:榜单背后的调参诊断

渔夫拿到总榜分数后要复盘:是哪几网拖了后腿?是垃圾捞太多(FP 高),还是鱼漏太多(FN 高),或者是网位总差半米(IoU 低)?在真实项目中,mAP 从不是“考完就扔”的分数,而是一份诊断报告。

工程师拿到 COCO 或 OpenImages 评测结果时,会拆解 mAP 报告:如果 IoU=0.95 档位的 AP 明显低于 IoU=0.5 档位,说明定位精度不足,需要改进边框回归损失(如 CIoU 损失)或添加边界框精调模块;如果小目标(small 尺寸)的 AP 偏低,说明特征金字塔或多尺度训练需要加强;如果某个易混淆类别的 AP 显著落后,则提示需要难例挖掘或数据补充。逐类别、逐尺寸、逐 IoU 档位的 AP 分解,让调参不再是盲目试错。

在多模态大模型评测中,mAP 还承担了更广的职责:评估模型能否根据文本描述在图像中准确框出对应区域(视觉定位任务)。例如让模型为“左边穿红裙子的女孩”这句话输出边界框,再用 IoU 判定是否命中——mAP 由此成为量化“视觉-语言对齐”能力的标准化标尺之一,为多模态能力的横向对比提供了统一语言。

榜单不是挂在墙上的装饰,而是渔夫的练习手册。透过 mAP 的分项得分,你能精确地看出自己该练“撒网精度”还是“猎物识别”——这就是这个指标在 AI 工程中最实用的价值。

AI 应用场景

自动驾驶感知模型验收

阶段:模型评估与效果验收

解决的问题:自动驾驶系统需要实时判断车前行人与车辆的位置,漏检一位行人可能造成事故,误检一根电线杆则可能引发急刹车。传统人工抽查视频无法量化两类错误的代价。mAP 把定位与分类精度统一成可对比的分数,团队可设定"mAP@0.5:0.95 ≥ 0.50"作为模型能否上车路测的准入线。

具体案例:某自动驾驶团队评测夜间行人检测器,发现 mAP@0.5 达 0.85,但 mAP@0.5:0.95 只有 0.42。拆解后发现超车场景的预测框偏移严重,定位精度不足。引入更精细的回归损失和难例挖掘后,两个指标分别提升至 0.91 和 0.53,模型才通过验收。

安防监控项目竞标打分

阶段:技术方案评估与采购决策

解决的问题:城市安防项目需要在多个厂商的检测模型中选出最优方案。“演示视频看起来不错”没法量化,客户要求统一测试集 + 统一指标打分,既看整体 mAP,也看重点类别 AP。

具体案例:某城市安防招标准备了包含不同光照、遮挡程度的行人/车辆测试集,要求厂商提交检测结果。评测方按 80 类 mAP 加权排名,同时单独考察“行人”类别在小目标区间(small)的 AP。最终中选模型 mAP 为 0.716,且小目标 AP 显著领先,避免了大模型“大目标刷分、小目标全漏”的陷阱。

多模态大模型视觉定位评测

阶段:模型能力基准测试

解决的问题:多模态大模型能否根据文本描述准确定位图像区域?传统人工打分主观且不可复现。mAP 被引入视觉定位(grounding)任务,以“模型框出的区域与人工标注区域的重合度”作为对齐质量的量化标准。

具体案例:评测团队使用 RefCOCO 数据集测试一个视觉语言模型:给定描述“戴着红帽子的男人”,模型输出一个边界框。评测脚本用 IoU=0.5 判断是否命中,对 500 条描述样本计算 AP,再在多个类别上取平均得到 mAP,作为该模型“语言-图像对齐能力”的基准分数,与人类标注一致性进行横向对比。

Python 演示

python86 行
import numpy as np  def compute_iou(box_a, box_b):    """计算两个框的 IoU,框格式为 [x1, y1, x2, y2]"""    x1 = max(box_a[0], box_b[0])    y1 = max(box_a[1], box_b[1])    x2 = min(box_a[2], box_b[2])    y2 = min(box_a[3], box_b[3])    inter = max(0, x2 - x1) * max(0, y2 - y1)    area_a = (box_a[2] - box_a[0]) * (box_a[3] - box_a[1])    area_b = (box_b[2] - box_b[0]) * (box_b[3] - box_b[1])    union = area_a + area_b - inter    return inter / union if union > 0 else 0.0  def compute_ap(precision, recall):    """由 PR 序列计算 AP:先做包络消除抖动,再用梯形法求面积"""    order = np.argsort(recall, kind="mergesort")    precision = np.array(precision)[order]    recall = np.array(recall)[order]    for i in range(len(precision) - 2, -1, -1):        precision[i] = max(precision[i], precision[i + 1])    x = np.concatenate(([0.0], recall, [1.0]))    y = np.concatenate(([0.0], precision, [precision[-1]]))    return np.trapz(y, x)  def eval_category(gt_boxes, preds, iou_thresh=0.5):    """评估单个类别:preds 为 [(score, box), ...],返回 AP"""    preds = sorted(preds, key=lambda t: -t[0])    matched = set()    tp, fp = [], []    for score, box in preds:        best_iou, best_idx = 0.0, -1        for i, gt in enumerate(gt_boxes):            if i in matched:                continue            iou = compute_iou(box, gt)            if iou > best_iou:                best_iou, best_idx = iou, i        if best_iou >= iou_thresh:            tp.append(1)            fp.append(0)            matched.add(best_idx)        else:            tp.append(0)            fp.append(1)    tp_cum = np.cumsum(tp)    fp_cum = np.cumsum(fp)    recall = tp_cum / max(len(gt_boxes), 1)    precision = tp_cum / np.maximum(tp_cum + fp_cum, 1e-9)    ap = compute_ap(precision, recall)    return ap, precision, recall  def main():    # 真实框(渔场里的鱼/蟹)    gt_fish = [[10, 10, 60, 60], [80, 20, 130, 90]]    gt_crab = [[50, 80, 110, 140]]    # 预测框(渔夫的捕捞报告):(置信度, 框)    pred_fish = [        (0.95, [12, 12, 58, 58]),        (0.80, [85, 25, 128, 88]),        (0.40, [200, 200, 240, 240]),  # 误检:背景被当成鱼    ]    pred_crab = [        (0.90, [52, 82, 108, 138]),        (0.55, [150, 150, 170, 180]),  # 误检    ]     ap_fish, _, _ = eval_category(gt_fish, pred_fish)    ap_crab, _, _ = eval_category(gt_crab, pred_crab)    mAP = (ap_fish + ap_crab) / 2  # 两类 AP 取平均     print(f"fish AP = {ap_fish:.4f}")    print(f"crab AP = {ap_crab:.4f}")    print(f"mAP     = {mAP:.4f}")     # 换成更严格的 IoU 阈值,观察分数变化    ap_fish_strict, _, _ = eval_category(gt_fish, pred_fish, iou_thresh=0.75)    print(f"fish AP @IoU=0.75 = {ap_fish_strict:.4f}")  if __name__ == "__main__":    main()
目的:用最小可运行的 Python 实现演示 mAP 的完整计算链路——从 IoU 匹配、TP/FP 判定、PR 曲线构建到多类别平均取 mAP。
  1. inter = max(0, x2 - x1) * max(0, y2 - y1)计算两个框交集面积。max(0, ...) 保证两框不相交时交集面积为 0,不会出现负值。
  2. return inter / union if union > 0 else 0.0并集面积不可能为负;当并集为 0(两框都退化)时返回 0,避免除零错误。
  3. preds = sorted(preds, key=lambda t: -t[0])模拟“渔夫的把握线滑动”:把预测框按置信度从高到低排序,回忆率随累计 TP 逐渐上升。
  4. if best_iou >= iou_thresh用 IoU 阈值判定命中,对应评委手中的“位置刻度尺”;更改 iou_thresh 即可体验不同严苛程度。
  5. for i in range(len(precision) - 2, -1, -1): precision[i] = max(...)从右向左做包络,消除 PR 曲线的锯齿抖动,这是真实 mAP 计算的关键细节。
  6. mAP = (ap_fish + ap_crab) / 2两类 AP 取平均,对应“所有类别平均精度”的 mAP 定义。

常见误区

误区刚接触目标检测时,总想用“模型判断对的图片数除以总图片数”来打分,觉得 mAP 太绕,不如准确率直观。

正解检测器的输出是一张图上无数个候选框,绝大多数候选框都是背景(负样本)。如果直接算“框判断对错的比例”,只要模型疯狂输出背景预测,准确率就能虚高到 99%,而真正该检的目标一个都没框出来。mAP 只关注与真实目标相关的 TP/FP/FN,天然避开了这种类别不平衡陷阱。评委不会因为渔夫报了 100 次“这片没鱼”就给他高分。

为何常见:这是从图像分类任务带过来的惯性思维——分类任务每图一标签,检测任务每图多目标且背景框占绝对多数,评估逻辑完全不同。

误区调低置信度阈值后,模型输出更多框,召回率上去了,觉得 mAP 也应该跟着变高。

正解AP 计算时本身就遍历了从高到低的所有置信度阈值,把每个阈值下的精确率-召回率点连成 PR 曲线再积分。人为调低推理阈值只改变部署时的“工作点”,不会改变 PR 曲线的形状,所以 mAP 基本不变。渔夫换一副更密的网只改变某一网的成绩,但评委统计的是他所有撒网策略的综合曲线。

为何常见:把“推理阶段的阈值”与“评估阶段的积分过程”混为一谈,前者是模型上线时的决策参数,后者是评测协议的一部分。

误区竞标时两家厂商模型的 mAP 都是 0.72,就觉得性能完全一样,直接选报价低的那家。

正解mAP 是 80 类 × 10 个 IoU 阈值取平均的单一数字,平均值天然会掩盖差异:A 模型小目标 AP 高但大目标 AP 低,B 模型恰好相反;A 在 IoU=0.5 时很强但 0.95 时崩盘,B 各档均匀。因此正规评测报告会附按类别、按尺寸(small/medium/large)、按 IoU 档位拆分的 AP 子表,必须对比这些子表才能下结论。

为何常见:平均数作为“信息压缩器”的固有缺陷——它把一个多维度的成绩压成一维,维度间的差异被抹平了。

误区看到模型 mAP@0.5 = 0.90 就觉得框已经画得很准,可以直接用于自动驾驶或者医学影像这类高精度场景。

正解IoU=0.5 只要求半个框重叠就算命中,预测框偏移三分之一仍然合格。而 mAP@0.75 和 mAP@0.5:0.95 要求框与真实目标近乎像素级吻合。同样的模型,mAP@0.5 可能 0.90,mAP@0.5:0.95 却只有 0.45。渔夫“网挨着鱼就算抓到”与“必须正正好好兜住鱼”显然是两种水平。

为何常见:没有仔细理解 IoU 阈值的语义,看到“0.5“就以为是一半精确度,忽略了这个阈值决定的是”何谓命中”的松紧。

面试题

Q1. mAP 的英文全称是什么?

单选题 · easy

  • A.Mean Average Precision← 正确答案
  • B.Maximum Average Precision
  • C.Mean Average Probability
  • D.Minimum Average Precision

答案:A。mAP 是 Mean Average Precision 的缩写,意为“平均精度均值”。它先计算每个类别的平均精度 AP,再对所有类别取平均。B、D 把“平均”换成“最大/最小”曲解了定义;C 中的 Probability(概率)与 Precision(精度)是两个概念。

Q2. IoU = 0.5 作为命中阈值意味着什么?

单选题 · easy

  • A.预测框与真实框重叠面积过半← 正确答案
  • B.预测框与真实框边缘恰好接触
  • C.模型置信度分数达到 0.5
  • D.目标类别信息完全匹配

答案:A。IoU 是交并比,IoU = 0.5 表示两个框的交集面积占并集面积的一半以上,才判定检测命中。它衡量的是“渔网与鱼群活动的重合程度”,与置信度阈值(C)和类别匹配(D)无关,B 的边缘接触对应 IoU 接近 0。

Q3. 某检测器输出 10 个预测框,其中 6 个满足 IoU 阈值且类别正确,精确率是多少?

单选题 · mid

  • A.0.6← 正确答案
  • B.0.4
  • C.6/16=0.375
  • D.4/16=0.25

答案:A。精确率 = TP ÷ (TP + FP)。10 个预测框中 6 个是 TP,剩下 4 个是 FP,所以精确率 = 6/10 = 0.6。它回答“渔夫捞上来的网里真鱼占比”,分母是“所有预测框数”而非真实目标总数。

Q4. 下列哪个是召回率的计算公式?

单选题 · mid

  • A.TP / (TP + FN)← 正确答案
  • B.TP / (TP + FP)
  • C.TN / (TN + FP)
  • D.FP / (FP + FN)

答案:A。召回率 = TP ÷ (TP + FN),分母等于真实目标总数,衡量“渔场里的鱼被捞回多少”。B 是精确率,C 是特异度,D 是假阳性率,三者考察的视角各不相同。

Q5. 指标 mAP@0.5:0.95 的含义是什么?

单选题 · mid

  • A.取十个 IoU 阈值分别算 mAP 再平均← 正确答案
  • B.取置信度从 0.5 到 0.95 平均
  • C.只取 IoU=0.5 与 0.95 两者取平均
  • D.按目标尺寸排序后截取中间区间

答案:A。mAP@0.5:0.95 是 COCO 评测协议的核心指标,在 IoU 阈值 0.5、0.55、…、0.95 共 10 个档位上各算一次 mAP 后取平均。它综合了从“宽松”到“严苛”的定位要求。B 混淆了置信度与 IoU,C 漏掉了中间 8 个档位,D 与目标尺寸分组(small/medium/large)混淆。

Q6. 目标检测中的 FP(假阳例)指的是什么?

单选题 · hard

  • A.将背景误判为目标的检测框← 正确答案
  • B.漏掉真实目标的未检测区域
  • C.与真实框 IoU 大于阈值的框
  • D.置信度低于阈值的候选框

答案:A。FP 是模型“说这里有目标,实际没有”的误检框,比如把海草当成了鱼。B 描述的是 FN(漏检),C 的正确描述是 TP(命中),D 只是被过滤掉的低分框,与对错无关。区分 FP 与 FN 是理解 PR 曲线的前提。

Q7. PR 曲线下面积大说明模型具备什么特性?

单选题 · mid

  • A.各召回水平下精确率都较高← 正确答案
  • B.模型擅长检测较大的目标
  • C.模型需要更少的训练数据
  • D.模型推理速度快且省内存

答案:A。PR 曲线下面积就是 AP,面积大意味着无论要求“捞得多全”(召回率高),模型都能保持较高的“网里真货占比”(精确率)。这是对检测器综合能力的度量,与目标尺寸偏好、数据需求量、推理速度无关。

Q8. 下列哪些情况会导致 mAP 下降?

多选题 · mid

  • A.大量背景被误检成目标← 正确答案
  • B.小目标被模型大量漏检← 正确答案
  • C.模型推理速度明显变慢
  • D.预测框位置偏差明显变大← 正确答案

答案:ABD。A 会增大 FP,拉低精确率;B 会增大 FN,拉低召回率;D 会降低各 IoU 档位下的命中数,三者都会压缩 PR 曲线面积。C 的速度与精度指标无关,mAP 只评估检测质量,不评估计算效率。

Q9. 关于 AP 的计算过程,下列说法正确的有哪些?

多选题 · hard

  • A.AP 是 PR 曲线下的面积← 正确答案
  • B.计算需要按置信度降序排序← 正确答案
  • C.AP 计算需遍历所有置信度点← 正确答案
  • D.AP 数值不受 IoU 阈值影响

答案:ABC。AP 积分 PR 曲线面积(A 对);计算时按置信度从高到低依次累加 T P/FP,从而生成曲线上的点(B 对);遍历所有置信度阈值正是“把把握线从高滑到低”的过程(C 对)。D 错误——IoU 阈值决定哪些框算 TP,阈值越高命中条件越严,AP 数值随之变化,这正是 mAP@0.5:0.95 存在的意义。

Q10. 目标检测模型的输出通常包含哪些内容?

多选题 · easy

  • A.目标边界框坐标← 正确答案
  • B.目标的类别标签← 正确答案
  • C.模型置信度分数← 正确答案
  • D.图像的拍摄时间

答案:ABC。目标检测输出是“在哪里 + 是什么 + 有多大把握”的三元组:边界框坐标(A)、类别标签(B)和置信度分数(C)。拍摄时间属于图像元数据,由数据集提供,不是模型预测出来的内容。