ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

YOLOv7 mAP@0.5 与 mAP@0.5:0.95 区别:为什么前者和后者能差出 20 个点?

2026/9/12 20:50:51 拓冰建站 浏览量
YOLOv7 mAP@0.5 与 mAP@0.5:0.95 区别:为什么前者和后者能差出 20 个点? YOLOv7 mAP0.5 与 mAP0.5:0.95 区别为什么前者和后者能差出 20 个点【免费下载链接】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上次同事问我明明 mAP0.5 涨了 2 个点为什么上线后框的位置反而越飘越远答案多半藏在指标选择里——这就是两个评估口径的差别即 YOLOv7 mAP0.5 与 mAP0.5:0.95 区别。下面用十分钟把这两个数讲透。先建立直觉30 秒看懂 IoU 及格线在判什么先给白话翻译。IoU交并比就是预测框和正确答案框的重叠比例阈值是及格线重叠比达到线才算检到了。打个比方面试打分表只有一题过没过。mAP0.5 就是这一条线——0.5框和真值重叠到一半就算命中它主要回答找没找到。mAP0.5:0.95 则是十道题0.5、0.55、…、0.95 共十条及格线框要逐线通过每一线各算一个 AP 再取平均。AP 就是 PR 曲线下能装下多少面积mAP 就是各类别 AP 的均值。所以它既问找没找到也问框画得紧不紧。代码就在 test.py你可以看这两行iouv torch.linspace(0.5, 0.95, 10).to(device) # 10 档 IoU 及格线 ap50, ap ap[:, 0], ap.mean(1) # AP0.5, AP0.5:0.95看下面这张马群检测结果有的框紧贴真值有的框只是勉强压住马边。0.5 这条线两者都能混过去0.95 那条线只有紧的框活下来。整条判定链路其实就是一条流水线跟着我跑一遍评估命令怎么敲、结果目录看哪几列在项目根目录直接敲还没 clone 代码的话git clone https://gitcode.com/GitHub_Trending/yo/yolov7python test.py --weights yolov7.pt --data data/coco.yaml --img 640 --iou 0.65评估完结果落在runs/test/exp/confusion_matrix.png、PR_curve.png还有几张test_batch*_pred.jpg对比图。最值得盯的是终端那行汇总print(pf % (all, seen, nt.sum(), mp, mr, map50, map))其中map50对应 mAP0.5map对应 mAP0.5:0.95mp、mr是各类平均的精确率与召回率。注意--iou 0.65是 NMS 去重阈值不是评估用的 IoU 线。加上--verbose还会逐类输出方便你揪出薄弱类别。做模型对比或看论文时常被贴出来的 AP 对比图用的正是后者的口径一张表 一句口诀什么时候该看哪个 mAPmAP0.5mAP0.5:0.95及格线一条0.5十条0.5→0.95步长 0.05主要考什么找没找到召回框画得紧不紧定位对定位漂移的敏感度低高适合什么场景快速迭代、初筛论文对比、最终选型口诀记一句初筛看 0.5选型看 0.95两数差值拉大先查定位再庆功。别急着下结论mAP0.5 涨了不等于模型变好了。差值map50 - map保持平稳甚至缩小才说明框真的画得越来越紧。踩坑实录mAP 差值过大先查什么 ⚠️坑一只盯 mAP0.5定位漂移被平均掉现象训练日志一路向好上线后框却明显偏大点击落点偏移。原因0.5 这条线太宽松框偏掉近一半也照样算命中找到了的分数把画得紧掩盖了。解法实验日志里同时记map50 - map健康模型通常差 10-20 个点差值越拉越大就先查定位损失和 cfg/training/yolov7.yaml 里的锚框配置。坑二v5_metric 与 v7_metric 口径没对齐现象自己跑出来的数和 YOLOv5 官方结果对不上怀疑代码有 bug。原因utils/metrics.py 里的compute_ap有两套口径——默认在召回曲线尾部补recall[-1] 0.01YOLOv7 默认口径加--v5-metric则补 1.0把最大召回当满分。解法对比数字前别换开关要和 YOLOv5 官方对比就显式加上--v5-metric。坑三--iou是 NMS 去重不是评估阈值现象把--iou 0.65改成 0.6mAP 抖了一下怀疑模型退化了。原因它决定推理时 NMS 去重后剩几个框和评估那十条 IoU 线是两码事。解法对比两个模型时保持该参数一致要调就一起调并记下这组数是在什么配置下跑出来的。速查清单训练完直接照做mAP0.5 涨了、差值map50 - map也变大 定位在变差先别上线快速迭代看 mAP0.5最终选型与论文对比看后者和别人对比结果先问哪个 AP 口径--v5-metric开没开改 NMS 或置信度阈值前先把旧数字记下来否则分不清是模型变了还是评估参数变了。下一步很简单下次训练完先跑一遍test.py把map50和map的差值记进实验日志——超过 20 个点就先查定位。【免费下载链接】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),仅供参考