1、混淆矩阵TP/FP/FN/TN

(1)每个字母解释

1)第1个字母(T/F)评价预测的结果

它代表预测的结果是对的还是错的。

T(True):预测对了

F(False):预测错了

2)第2个字母(P/N)指代预测的标签

它代表预测的结果具体是什么。

P(Positive):预测为有目标(正样本)

N(Negative):预测为无目标(负样本/背景)

(2)逐个含义

1)TP:真正样本。

P:模型预测这里有目标。T:预测对了,这里确实有目标。场景:正确检测到一个物体。

2)FP:假正样本。

P:模型预测这里有目标。F:预测错了,这里没有目标(是背景)或者不是这个目标(类别搞错了)。场景:误检,把背景或别的东西当成了目标。

3)FN:假负样本。

N:模型预测这里没有目标;F:预测错了,这里其实有目标。场景:漏检,没有把真实的目标找出来。

4)TN:真负样本。

N:模型预测这里没有目标。T:预测对了,这里确实没有目标。场景:正确识别了背景,在目标中我们通常不关注它。

2、准确率/召回率

(1)准确率

它衡量的是模型预测为正样本(有目标)的结果中,有多少是真正的目标,即预测的准确性。它关注的是误检的问题。

计算公式:

Precision=\frac{TP}{TP+FP}

假设模型一共预测了 100 个框(TP + FP = 100),其中 85 个是预测正确的(TP = 85),另外 15 个是把背景或别的物体误判为目标的(FP = 15)。

精确率 (P) = 85 / (85 + 15) = 85%

这意味着,模型每找出 100 个目标,里面有 85 个是真的,15 个是错的。

(2)召回率

它衡量的是在所有真实存在的正样本(有目标)中,模型成功找出来的比例,即预测的完整性。它关注的是漏检(FN)的问题。

计算公式:

Recall=\frac{TP}{TP+FN}

假设测试集中一共有 50 个真实的目标(TP + FN = 50),模型成功找到了其中的 40 个(TP = 40),漏掉了 10 个(FN = 10)。

召回率 (R) = 40 / (40 + 10) = 80%

这意味着,所有真实存在的目标里,模型成功找回了 80%。

3、IOU

(1)定义

IOU:Inersection over union,交并比,是目标检测中用来衡量预测框准不准的核心指标。

计算公式:

IOU=\frac{Intersection}{Union}

0 < IoU < 1:数值越大,表示框得越准

(2)IoU如何影响精确率计算

精确率的公式是TP/(TP + FP),而IoU就是决定一个预测结果到底是TP还是FP的判决官。

在计算精确率之前,我们必须先通过IoU进行二元判定:

1)设定阈值

我们通常设定一个IoU阈值,最常用的是0.5.

>=0.5:算作正确,TP。

<0.5:算作错误,FP。

2)具体判定流程

假设模型在一张图里输出了 1 个预测框,我们要判定它是 TP 还是 FP。

步骤1:寻找最佳匹配。计算这个预测框与图像中所有真实框的IoU,找到IoU最大的哪个真实框作为候选框。

步骤2:双重考核(定位+类别)

设定IoU阈值是0.5。

考核A:定位考核(IoU)。如果IoU>=0.5,定位过关。如果IoU<0.5,定位不过关。

考核B:类别考核(Clas)。如果预测类别=真实框类别,类别过关,否则不过关。

步骤3:最终判决。只有当考核A和考核B同时过关时,才是TP,否则就是FP。

表格

场景 IoU 值 预测类别 真实类别 判定结果 原因分析
场景 1 (完美) 0.8 Cat Cat TP 双项达标:位置准(0.8>0.5),类别对。
场景 2 (位置差) 0.3 Cat Cat FP 单项不达标:位置太偏(0.3<0.5),虽然类别对,但判错。
场景 3 (认错人) 0.8 Dog Cat FP 单项不达标:位置很准,但是把猫认成了狗。
场景 4 (误检) 0.0 Dog (无) FP 全都不达标:背景区域,纯属乱猜。

4、mAP50/mAP50-95

(1)mAP50

【概念】

mAP50是一个综合性的评估指标,在 IoU 阈值为 0.5 的情况下,综合考察模型在不同置信度下的精确率(Precision)和召回率(Recall)。

  • AP(Average Precison),平均精度,是针对单个类别计算的精确率-召回率(P-R)曲线下的面积
  • mAP(mean Average Precision),平均精度均值,是所有类别AP的平均值

【示例】

1)场景设定

假设我们有一张测试图片,里面实际上有 3 只猫(Ground Truth, GT)。

模型对这张图片进行了预测,输出了 5 个检测框(Predictions)。

2)真实标签

编号 类别 坐标 (模拟)
GT1 [10, 10, 50, 50]
GT2 [100, 100, 150, 150]
GT3 [200, 50, 250, 100]

3)模型预测结果

模型输出了5个框,每个框都有类别、置信度(Confidence)和坐标。我们需要先计算每个预测框与真实框的 IoU。

预测框编号 预测类别 置信度 (Score) 对应真实框 (IoU计算) IoU 值 判定结果 (阈值=0.5)
Pred A 0.95 与 GT1 重叠 0.8 TP (真阳性)
Pred B 0.80 与 GT2 重叠 0.6 TP (真阳性)
Pred C 0.70 与 GT1 重叠 (重复检测) 0.7 FP (假阳性)*
Pred D 0.60 与 GT3 重叠 0.4 FP (假阳性)
Pred E 0.40 背景 (无对应真实框) 0.0 FP (假阳性)

判定规则说明:

Pred C (重复检测): 虽然 IoU > 0.5,但 GT1 已经被置信度更高的 Pred A 匹配过了。在目标检测评估中,一个真实框只能被匹配一次。因此 Pred C 被视为误检(FP)。

Pred D (定位不准): 虽然检测到了 GT3 的位置,但 IoU = 0.4 < 0.5,未达到阈值,被视为误检(FP)。

4)按置信度排序

将所有预测结果按置信度从高到低排序,并逐个判断是 TP 还是 FP。

排名 预测框 置信度 结果 (TP/FP)
1 Pred A 0.95 TP
2 Pred B 0.80 TP
3 Pred C 0.70 FP
4 Pred D 0.60 FP
5 Pred E 0.40 FP

5)计算累积的精确率和召回率

我们需要计算在每一个检测步骤后的 Precision 和 Recall。

Precision = 当前累计的 TP / 当前累计的所有预测数

Recall = 当前累计的 TP / 真实目标总数 (本例中为 3)

排名 置信度阈值 TP 数量 FP 数量 Precision (P) Recall (R)
1 > 0.95 1 0 1/1 = 1.00 1/3 = 0.33
2 > 0.80 2 0 2/2 = 1.00 2/3 = 0.67
3 > 0.70 2 1 2/3 = 0.67 2/3 = 0.67
4 > 0.60 2 2 2/4 = 0.50 2/3 = 0.67
5 > 0.40 2 3 2/5 = 0.40 2/3 = 0.67

6)绘制P-R曲线并计算AP(插值法)

AP 是 P-R 曲线下的面积。为了计算平滑且准确,通常使用 11点插值法 或 全点插值法(COCO/VOC标准)。这里使用更精确的全点插值法逻辑:

核心思想: 在某个 Recall 值下,取该点及之后所有点中 最大的 Precision 值。

让我们整理用于计算面积的点 (Recall, Max_Precision):

  1. Recall = 0.33 时: 对应 P=1.00。后续最大的 P 也是 1.00。

  2. Recall = 0.67 时: 对应 P=1.00 (在排名2处达到)。虽然后面 Precision 下降了,但在计算面积时,我们会取 Recall=0.67 这个点上能达到的最高 Precision

简化计算 (矩形面积累加):
我们可以直接看 Recall 从 0 增加到 0.67 再到 1.0 的过程。

  • 区间 1 (Recall 0 -> 0.33): Precision 最高为 1.0。

    • 面积 = (0.33−0)×1.0=0.33(0.33−0)×1.0=0.33

  • 区间 2 (Recall 0.33 -> 0.67): 在这段区间内,最高 Precision 依然是 1.0 (由排名2的点贡献)。

    • 面积 = (0.67−0.33)×1.0=0.34(0.67−0.33)×1.0=0.34

  • 区间 3 (Recall 0.67 -> 1.0): 我们没能检测到第3只猫(GT3),所以 Recall 最高只到 0.67。这部分面积为 0。

AP50 (单类别) = 0.33 + 0.34 = 0.67

7)计算mAP50

mAP 是 "mean" AP,即所有类别 AP 的平均值。

  • 在这个示例中,我们只计算了“猫”这一个类别。
  • 所以,mAP50 = AP50(猫) = 0.67 (即 67%)。

如果有“狗”类别,且算出 AP50(狗) = 0.80,那么:
mAP50 = (0.67 + 0.80) / 2 = 0.735

(2)mAP50-95

mAP50-95 的意思是:在 IoU 阈值从 0.5 到 0.95 的多个不同标准下,计算出的 AP 的平均值。

核心标准:它不是只看 IoU=0.5 这一种情况,而是要看 10 种情况。

  • 它会分别计算 IoU 阈值为 0.50, 0.55, 0.60, 0.65, ..., 0.95 时的 AP 值。
  • 然后把这 10 个 AP 值求平均,得到的数字就是 mAP50-95。
指标 名称 IoU 阈值设定 严格程度 通俗比喻 分数高低
mAP50 基础及格线 固定为 0.5 宽松 “差不多就行” 通常较高
mAP50-95 权威标准 范围 0.5 ~ 0.95 (共10个阈值) 严格 “必须精益求精” 通常较低

一句话总结:如果你在论文或模型介绍里看到 mAP50-95 很高,那说明这个模型非常强,不仅检测率高,而且框选位置极其精准;而 mAP50 很高只能说明模型具备了基本的检测能力。

5、val集的指标

yolo训练完成后,会自动输出验证集的指标,参考如下。

Validating /data/yolo/models/ai_inspection_20260313/weights/best.pt...
YOLOv12l summary (fused): 283 layers, 26,344,469 parameters, 0 gradients, 88.6 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100% ━━━━━━━━━━━━ 27/27 9.6it/s 2.8s
                   all        424       1165      0.842       0.82      0.874       0.75
               ashtray         47         63      0.677      0.587      0.664      0.528
                   bin        143        192      0.846      0.686      0.805      0.696
                   cup         30         44      0.701      0.773      0.809      0.585
      front_windshield        139        176      0.883      0.943      0.971      0.916
Speed: 0.1ms preprocess, 5.8ms inference, 0.0ms loss, 0.2ms postprocess per image

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐