第15讲 | YOLO26评估与误差分析:Precision、Recall、mAP与错例
2026/7/27 7:43:40 网站建设 项目流程

第15讲 | YOLO26评估与误差分析:Precision、Recall、mAP与错例

先看懂指标,再定位错例,最后决定怎么改模型

整理说明:本文基于 B 站公开视频《第15讲 YOLO26评估与误差分析:Precision、Recall、mAP与错例》

很多同学卡在这一讲,不是因为 Precision、Recall、mAP 真的难,而是因为它们常被当成孤立数字记。

本篇只解决一个核心问题:模型训完以后,怎么判断它到底哪里好、哪里坏、下一步该改什么?


01 先把痛点说透

评估不是为了“报一个分数”,而是为了把问题拆开。

现象常见信号优先看什么
误检多Precision 低置信度阈值、背景干扰、负样本
漏检多Recall 低漏标、小目标、阈值太高
框不准mAP50 高但 mAP50-95 低定位质量、IoU、标注质量
某一类特别差per-class AP 很低类别混淆、样本不平衡、标注一致性

评估的本质不是“模型行不行”,而是“错误主要来自哪里”。

如果你只盯着一个 mAP,往往只能知道“差”,却不知道“差在什么地方”。


02 核心概念先说准

目标检测评估最先要分清三件事:

名称含义
TP预测对了,而且框和类别都匹配
FP预测出来了,但其实是错的
FN真实目标存在,但模型没找出来

先看两个最常用指标:

Precision = TP / (TP + FP) Recall = TP / (TP + FN)

它们回答的是两个不同的问题:

  • Precision:你报出来的框,有多少是真的。
  • Recall:真实存在的目标,你找到了多少。

再看 IoU。IoU 是预测框和真值框的重叠程度。对检测来说,类别对了不够,IoU 不达标也不算 TP

Precision 和 Recall 的直觉

指标高了说明什么低了说明什么
Precision误检少背景容易被当成目标
Recall漏检少目标经常被错过

mAP 是什么

AP 可以理解成“某一类在不同置信度阈值下的 P-R 曲线面积”。
mAP 就是把各类 AP 再平均一次。

指标解释
mAP50IoU = 0.50 时的 AP 平均值
mAP50-95IoU 从 0.50 到 0.95,每 0.05 取一个阈值后再平均
per-class AP每一类单独的 AP

所以:

  • mAP50 看的是“有没有大致找对”
  • mAP50-95 看的是“框得准不准”


03 用一个小例子跑通机制

假设一张验证集里有 4 个真实目标,模型给出 5 个预测框:

预测框置信度IoU判定
A0.960.82TP
B0.910.76TP
C0.740.41FP
D0.680.73TP
E0.33-FP

当阈值取 0.50

保留 A、B、C、D:

  • TP = 3
  • FP = 1
  • FN = 1
Precision = 3 / (3 + 1) = 0.75 Recall = 3 / (3 + 1) = 0.75

当阈值取 0.90

只保留 A、B:

  • TP = 2
  • FP = 0
  • FN = 2
Precision = 2 / (2 + 0) = 1.00 Recall = 2 / (2 + 2) = 0.50

这就是为什么阈值一高,Precision 常常上升,Recall 常常下降。

AP 做的事,就是把不同阈值下的这些点串起来,再算面积。

所以你看见 PR 曲线时,别把它当“装饰图”,它就是模型取舍关系的压缩图。


04 配套代码练习

1. 先跑一个纯 Python 的阈值扫表

完整代码见:code_snippets/01_threshold_tradeoff.py

这个小脚本不依赖深度学习框架,先帮你看懂“阈值变化为什么会改 Precision / Recall”。

2. 再跑一次 Ultralytics 验证

完整代码见:code_snippets/02_ultralytics_val.py

fromultralyticsimportYOLO model=YOLO("best.pt")# 换成你自己的权重metrics=model.val(data="custom.yaml",imgsz=640,conf=0.25,iou=0.7,plots=True,)print("Precision:",metrics.box.mp)print("Recall:",metrics.box.mr)print("mAP50:",metrics.box.map50)print("mAP50-95:",metrics.box.map)print("Per-class AP:",metrics.box.maps)

你重点看这几个值就够了:

字段说明
metrics.box.mp平均 Precision
metrics.box.mr平均 Recall
metrics.box.map50mAP@0.50
metrics.box.mapmAP@0.50:0.95
metrics.box.maps每个类别的 AP

如果plots=True,通常会生成 PR 曲线、混淆矩阵和验证可视化图,先看这些,再看数字。


05 常见误区和排查清单

先按症状查

现象优先怀疑
Precision 低置信度太低、背景太像目标、负样本不足
Recall 低漏标、小目标多、阈值太高、NMS 太狠
mAP50 高但 mAP50-95 低框能找对,但定位不稳
某一类 AP 特别差类别不平衡、类间相似、标注不一致
PR 曲线很抖验证集太小或标注噪声大

再按顺序查

1. 先查标签是否干净 2. 再查数据集分布是否平衡 3. 再查验证阈值和 NMS 4. 再看 PR 曲线和混淆矩阵 5. 最后抽错例图,定位到底是漏检、误检还是框不准

如果你只记一句话:

Precision 看误检,Recall 看漏检,mAP 看整体,错例看下一步怎么改。


06 复盘

这讲最重要的,不是把名词背下来,而是把下面三件事连起来:

  1. 指标怎么读。
  2. 错例怎么分。
  3. 问题该怎么改。

换句话说,评估不是终点,而是下一轮优化的起点。

回复:YOLO评估

我会建议你先做三件小事:

  • 跑一次model.val(...)
  • 截一张 PR 曲线和混淆矩阵
  • 随机翻 20 张错例图

这样你就会发现,很多“模型不行”的判断,其实只是“还没把问题拆开”。

写在最后

学术因方向、个人实验和写作能力以及具体创新内容的不同而无法做到一通百通,关注UP:Ai学术叫叫兽
在所有资料中留下联系方式以便在科研之余为家人们答疑解惑,本up主获得过国奖,发表多篇SCI,擅长目标检测领域,拥有多项竞赛经历,拥有软件著作权,核心期刊等经历。
因为经历过所以更懂小白的痛苦!
因为经历过所以更具有指向性的指导!

祝所有科研工作者都能够在自己的领域上更上一层楼!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询