YOLOv7 评测指南:mAP@0.5 与 mAP@0.5:0.95 区别详解,该看哪个? YOLOv7 评测指南mAP0.5 与 mAP0.5:0.95 区别详解该看哪个【免费下载链接】yolov7Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors项目地址: https://gitcode.com/GitHub_Trending/yo/yolov7跑 YOLOv7 的test.py时结果会同时报出两个数mAP0.5 有 0.57mAP0.5:0.95 却只有 0.45 左右——为什么同一个模型会给出差距这么大的两个目标检测评估指标本文从代码出发讲清两者在模型评测中的差异帮你确定该看哪个。 先搞懂两个词IoU 与 AP 到底是什么在理解 mAP 之前先拆掉两个零件。IoU交并比模型画的框和真实框的重叠程度取值 0 到 1。可以类比套马——套索套得严丝合缝IoU 接近 1框偏了半个身子IoU 就掉到 0.5 以下。评估时每一个预测框都要和标注框比 IoU判断这次检测算不算数。AP平均精度针对单个类别把所有预测框按置信度从高到低排队逐个判定对IoU 达标且类别正确或错统计每步的精确率再把这条精确率-召回率曲线下的面积算出来。它同时回答找全了没有和找得准不准。mAP 就是把各类别的 AP 再取平均。上图每个带类别和置信度的框都是 YOLOv7 的一个预测评测时它们会逐一与标注框比对 IoU。 两个指标各是怎么算的mAP0.5单一阈值的判定规则规则只有一条IoU ≥ 0.5 才算检测对否则算错。一个阈值、一次 AP 计算、各类平均就是 mAP0.5。test.py 中 IoU 阈值向量这样定义iouv torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP0.5:0.95这个向量的第一个值 0.5正是 mAP0.5 的判定线。mAP0.5:0.95十个阈值逐个提要求再平均mAP0.5:0.95 把标准从 0.5 一路提到 0.95步长 0.05共 10 个 IoU 阈值每个阈值单独算一遍 AP10 个 AP 取平均得到该类的多标准 AP再对所有类别平均。utils/metrics.py 的ap_per_class函数里就是这个多阈值循环for j in range(tp.shape[1]): ap[ci, j], mpre, mrec compute_ap(recall[:, j], precision[:, j], v5_metricv5_metric)最后回到 test.py一行代码拆出两个指标ap50, ap ap[:, 0], ap.mean(1) # AP0.5, AP0.5:0.95 mp, mr, map50, map p.mean(), r.mean(), ap50.mean(), ap.mean()ap[:, 0]就是 mAP0.5ap.mean(1)就是 mAP0.5:0.95——这就是结果里出现两个数字的原因。 两个指标差在哪一张表对比维度mAP0.5mAP0.5:0.95IoU 阈值仅 1 个0.50.5~0.95 共 10 个计算量每类 1 次 AP每类 10 次 AP 再平均评估侧重目标找没找到召回找到且框得紧不紧定位数值特点偏高COCO 上常见 50明显更低通常低 10~20 个点典型用途训练监控、快速验证论文对比、部署选型 什么时候看哪个三种场景判断快速验证训练中看趋势看 mAP0.5。单阈值、对学会没有最敏感适合盯训练曲线是否上涨。论文对比看 mAP0.5:0.95。YOLOv7 论文报告的 MS COCO 成绩就是这个口径跨模型横评只有口径一致才公平。部署选型以 mAP0.5:0.95 判整体质量为主同时确认 mAP0.5 未明显偏低保证低置信度下召回仍站得住。上图纵轴的 AP 即 YOLOv7 在 MS COCO 上报的 mAP0.5:0.95——做学术比较时用的就是它。如何跑一次标准评估准备好权重和数据集配置后在项目根目录执行python test.py --weights yolov7.pt --data data/coco.yaml --img 640 --iou 0.65跑完后产物保存在runs/test/exp/主要有PR_curve.pngmAP0.5 口径的精确率-召回率曲线confusion_matrix.png混淆矩阵看类别间互相误认的情况P_curve.png、R_curve.png、F1_curve.png各指标随置信度变化的曲线终端输出all一行给出总体 P、R、mAP0.5、mAP0.5:95 结果怎么读差值与按类别排查差距比单值更有信息量。mAP0.5 正常但与 mAP0.5:0.95 差距过大超过约 20 个点说明框的定位质量不足——目标找到了但没框紧优化方向应偏向框回归如 CIoU 损失、多尺度训练而不是盲目加大模型。按类别 AP 定位短板。test.py对类别数少于 50 的数据集或加--verbose会逐类打印 AP某类 AP 接近 0先查混淆矩阵多半是把它认成了别的类某类 mAP0.5 高而 mAP0.5:0.95 低该类定位差常见于小目标和细长目标整体 mAP 被个别类别拖低对该类做定向数据增强或类别均衡比全局调参有效一句话总结mAP0.5 回答找没找到mAP0.5:0.95 回答找得到且框得准不准。训练期看前者盯趋势比模型、做部署选型看后者。小建议每次训练结束后先记下两个指标的差值再逐类扫一遍 AP 找出最弱的类别——比凭感觉调参数快得多。【免费下载链接】yolov7Implementation of paper - YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors项目地址: https://gitcode.com/GitHub_Trending/yo/yolov7创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考