学习资源站

RT-DETR目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标-

RT-DETR目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标

前言

本文主要讲解的是 Ultralytics 版本的 RT-DETR 网络模型的性能评价指标,这是每一篇论文中都需要展示的内容。熟悉每一个评价指标也能够帮助我们在训练和改进模型过程中,更好的观察模型的变化效果。



1、真正例(True Positive,TP)、真负例(True Negative,TN)、假正例(False Positive,FP)、假负例(False Negative,FN)

  1. 真正例(TP)

模型预测为 正类 ,且实际也是 正类 的样本数量。即模型正确地将一个应该是正类的样本判断为正类。
TP 的数量反映了模型在正确识别正类样本方面的能力。

  1. 真负例(TN)

模型预测为 负类 ,且实际也是 负类 的样本数量。即模型正确地将一个应该是负类的样本判断为负类。
TN 的数量体现了模型在正确识别负类样本方面的能力。

  1. 假正例(FP)

模型预测为 正类 ,但实际是 负类 的样本数量。即模型错误地将一个负类样本判断为正类。
FP 的数量反映了模型的误检情况。

  1. 假负例(FN)

模型预测为 负类 ,但实际是 正类 的样本数量。即模型错误地将一个正类样本判断为负类。
FN 的数量体现了模型的漏检情况。

🔗示例:在一个判断邮件是否为垃圾邮件(正类表示是垃圾邮件)的分类任务中,真正例(TP)就是模型正确预测为垃圾邮件的邮件数量;假正例(FP)是模型错误地将正常邮件预测为垃圾邮件的数量;真负例(TN)是模型正确预测为正常邮件的数量;假负例(FN)是模型错误地将垃圾邮件预测为正常邮件的数量。


2、混淆矩阵(Confusion Matrix)

混淆矩阵 (Confusion Matrix)是一种用于评估分类模型性能的工具。它是一个表格,通过将模型的预测结果与实际的真实标签进行对比, 展示模型在各个类别上的分类情况 。对于一个具有 n n n 个类别的分类问题,混淆矩阵是一个 n × n n\times n n × n 的矩阵。

二分类问题 中,混淆矩阵的结构最为简单且易于理解。它有4个基本元素:

  • 真正例(True Positive,TP)
  • 假正例(False Positive,FP)
  • 真负例(True Negative,TN)
  • 假负例(False Negative,FN)

这四个元素分布在一个 2 × 2 2\times2 2 × 2 的矩阵中,如下表所示:

分类情况 预测为正类(P) 预测为负类(N)
真实为正类(TP + FN) 真正例(TP) 假负例(FN)
真实为负类(FP + TN) 假正例(FP) 真负例(TN)

这是一个关于目标检测的混淆矩阵实验结果。从图中可以看出, 0.92 表示当预测为 iw 时,实际也为 iw 的概率; 0.08 表示将 iw 目标预测为 背景background 的概率。

🔗示例:假设有一个图像分类任务,判断图像中是否有猫(正类)。如果有100张图像,其中50张有猫,50张没有猫。模型预测有猫的图像中有40张是正确的(TP = 40),有10张其实没有猫(FP = 10);模型预测没有猫的图像中有45张是正确的(TN = 45),有5张其实有猫(FN = 5),就可以构建出相应的混淆矩阵。

多分类问题中的混淆矩阵

  • 当分类任务涉及多个类别(例如图像分类中有猫、狗、鸟等多个类别)时,混淆矩阵会变得更大。以一个三分类问题为例,混淆矩阵是一个 3 × 3 3\times3 3 × 3 的表格,如下所示:
分类情况 预测为类别1 预测为类别2 预测为类别3
真实为类别1 TP1 FP21(类别2误判为类别1) FP31(类别3误判为类别1)
真实为类别2 FP12(类别1误判为类别2) TP2 FP32(类别3误判为类别2)
真实为类别3 FP13(类别1误判为类别3) FP23(类别2误判为类别3) TP3

这里的TP1表示真实类别为1且模型正确预测为类别1的样本数量,FP21表示真实类别为2但模型错误地预测为类别1的样本数量,以此类推

混淆矩阵的作用

  • 评估模型准确性 :通过查看混淆矩阵中的各个元素,可以直接了解模型在 每个类别上的分类准确程度 。例如,对角线上的元素(真正例)之和占总样本数的比例可以作为一种准确性的衡量指标。

  • 发现类别不平衡问题 :如果某个类别对应的真正例数量很少,而假负例或假正例数量较多,可能意味着数据存在 类别不平衡 的情况。这会影响模型的训练和评估,需要采取相应的策略(如数据增强、调整权重等)来解决。

  • 比较不同模型的性能 :对于多个分类模型,可以通过比较它们的混淆矩阵来选择性能更好的模型。例如,一个模型的混淆矩阵对角线上的元素普遍比另一个模型的大,说明前者在分类准确性上可能更优。


3、查准率(Precision)

查准率 (Precision)是评估分类模型性能的一个重要指标,也称为精度。 它衡量的是在所有被模型预测为正类的样本中,真正为正类的样本所占的比例。

简单来说,查准率回答了这样一个问题: “当模型预测为正类时,它有多准确?”

公式为:

P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP + FP} P rec i s i o n = TP + FP TP

🔗在上述猫的分类例子中, P r e c i s i o n = 40 40 + 10 = 0.8 Precision=\frac{40}{40 + 10}=0.8 P rec i s i o n = 40 + 10 40 = 0.8 ,表示模型预测有猫的图像中,真正有猫的图像占80%。


4、查全率(Recall)

查全率 (Recall),也称为召回率或敏感度(Sensitivity),是评估分类模型性能的关键指标之一。 它衡量的是在所有实际为正类的样本中,被模型正确预测为正类的样本所占的比例。

可以理解为, 模型能够找回多少正类样本的能力。

公式为:

R e c a l l = T P T P + F N Recall=\frac{TP}{TP + FN} R ec a ll = TP + FN TP

🔗在上述猫的分类例子中, R e c a l l = 40 40 + 5 ≈ 0.889 Recall=\frac{40}{40+5}\approx0.889 R ec a ll = 40 + 5 40 0.889 ,表示实际有猫的图像中,被模型正确预测为有猫的图像约占88.9%。


5、F1 - Score

F1 - Score 是查准率和查全率的调和平均数, 它综合考虑了查准率和查全率,用于平衡两者之间的关系。

F1 - Score 的值越高, 表示模型在查准和查全这两个方面的综合性能越好。

公式为:
F 1 = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F1=\frac{2\times Precision\times Recall}{Precision + Recall} F 1 = P rec i s i o n + R ec a ll 2 × P rec i s i o n × R ec a ll

🔗在上述猫的分类例子中,先计算出查准率 P = 0.8 P = 0.8 P = 0.8 ,查全率 R = 0.889 R=0.889 R = 0.889 ,则 F 1 = 2 × 0.8 × 0.889 0.8 + 0.889 ≈ 0.843 F1=\frac{2\times0.8\times0.889}{0.8 + 0.889}\approx0.843 F 1 = 0.8 + 0.889 2 × 0.8 × 0.889 0.843

在这里插入图片描述
F1曲线就是 F1-Score 随着 Confience 逐渐增高而变化的曲线。

置信度Confience :模型判定一个物体并不是百分百判定它是属于某个分类,而是会给予它一个概率, Confidence 就是设置的阈值,如果超过这个概率那么就确定为某个分类。

图例表示,当 confidence 为0.517时,all classes的 F1-Score 为0.89;

下图为YOLO模型训练后的验证结果,红框中分别表示 P查准率 R查全率 的精度。

在这里插入图片描述


6、误检率(FPR)和漏检率(FNR)

  1. 定义
  • 误检率(False Positive Rate,FPR) :也称为假阳性率。在计算机视觉中,是指 将非目标物体错误地检测为目标物体的比例。

🔗 例如,在一个行人检测系统中,把路边的树木、电线杆等非行人物体错误地判定为行人的情况占所有被判定为行人的比例。

  • 漏检率(False Negative Rate,FNR) :也称为假阴性率。它是指 将目标物体错误地漏检(即没有检测到目标物体,而实际上目标物体存在)的比例。

🔗 例如,在车辆检测系统里,没有检测到实际存在于道路上的车辆,这种漏检情况占所有实际车辆的比例。

  1. 计算公式
    • 误检率(FPR) F P R = F P F P + T N FPR=\frac{FP}{FP + TN} FPR = FP + TN FP
      其中 F P FP FP (False Positive)是假阳性的数量,即被错误地判定为正类(目标物体)的负类(非目标物体)数量; T N TN TN (True Negative)是真阴性的数量,即被正确判定为负类(非目标物体)的数量。

    • 漏检率(FNR) F N R = F N F N + T P FNR=\frac{FN}{FN + TP} FNR = FN + TP FN

      这里 F N FN FN (False Negative)是假阴性的数量,即实际是正类(目标物体)但被错误判定为负类(非目标物体)的数量; T P TP TP (True Positive)是真阳性的数量,即被正确判定为正类(目标物体)的数量。


7、P曲线、R曲线和PR曲线

Precision - Confidence Curve(查准率 - 置信度曲线)

  • 定义与绘制原理
    • 在目标检测或分类任务中,模型通常会为每个预测结果输出一个置信度分数(Confidence Score),表示模型对该预测的确定程度。 对于不同的置信度阈值,计算对应的查准率。 以置信度为横坐标,查准率为纵坐标,绘制出的曲线就是 Precision - Confidence Curve
    • 例如,在目标检测任务中,当 置信度阈值 设为很高的值时,模型只保留那些它非常确定的预测结果。此时, 查准率 可能较高,因为留下的大多是模型很有把握的正类预测;随着 置信度阈值 降低,更多的预测结果被考虑进来,其中可能会包含较多的假正例,导致 查准率 下降。

在这里插入图片描述

  • 图像含义
    • 曲线直观地展示了 查准率随置信度 变化的情况。从曲线的起点(最高置信度)开始,查准率通常较高,随着置信度降低,查准率逐渐下降。如果曲线下降较为平缓,说明模型在降低置信度要求时,查准率的下降速度较慢,即模型对不太确定的预测也有一定的准确性。
    • 这条曲线可以 帮助确定一个合适的置信度阈值,以平衡准确性和召回率。 例如,在一些对准确性要求极高的应用场景(如医疗影像诊断),可以选择曲线中查准率较高部分对应的置信度阈值。

Recall - Confidence Curve(查全率 - 置信度曲线)

  • 定义与绘制原理
    • 同样以目标检测或分类任务中的置信度分数为基础, 对于不同的置信度阈值,计算对应的查全率。 以置信度为横坐标,查全率为纵坐标绘制而成。随着 置信度阈值 的变化,被认为是正类的样本数量会发生改变,从而影响 查全率
    • 置信度阈值 很高时,只有很少的样本被判定为正类,可能会遗漏很多正类样本,导致 查全率 较低。随着 置信度阈值 降低,更多的样本被判定为正类, 查全率 会逐渐提高。

在这里插入图片描述

  • 图像含义
    • 曲线展示了查全率与置信度之间的关系。从曲线可以看出,一般情况下,查全率随着置信度阈值的降低而升高。如果曲线上升很快,说明模型在降低置信度要求时,能够快速召回更多的正类样本。
    • 这条曲线 有助于理解模型在不同置信度水平下找回正类样本的能力。 在一些需要尽可能全面地检测或分类正类样本的场景(如安全监控系统中检测危险物品),可以参考此曲线来选择合适的置信度阈值,以达到较高的查全率。

Precision - Recall Curve(查准率 - 查全率曲线)

  • 定义与绘制原理
    • 如前面所述, 通过改变分类阈值(在分类任务中)或其他相关参数(在目标检测等任务中),计算出不同阈值下的查准率和查全率 ,以查全率为横坐标,查准率为纵坐标绘制曲线。
    • 在绘制过程中,随着 分类阈值 的变化,正类样本的判定范围发生改变。例如,在二分类问题中,降低分类阈值会使更多的样本被判定为正类,这会影响 查准率和查全率 。查全率可能会因为更多正类样本被找回而提高,但查准率可能会因为引入更多假正例而下降。

在这里插入图片描述

  • 图像含义
    • 曲线形状反映了查准率和查全率之间的权衡关系。理想的曲线是 靠近右上角 的,这表示在高查全率的情况下也能保持高查准率。曲线下的面积( AUC )可以作为衡量模型性能的一个参考指标, AUC越大,说明模型在不同查全率 - 查准率组合下的综合性能越好。
    • 比较不同模型的PR曲线可以直观地看出它们在性能上的差异。如果一个模型的 PR曲线 完全包含另一个模型的 PR曲线 ,那么前者在查准率和查全率的综合性能上更优。同时, PR曲线 还可以用于选择合适的 分类阈值 ,以满足特定的查准率和查全率要求。

8、交并比(Intersection over Union,IoU)

交并比(Intersection over Union,IoU) ,也称为杰卡德相似系数(Jaccard Similarity Coefficient), 主要用于目标检测任务中衡量预测框与真实框之间的重叠程度。 它是预测框与真实框的交集面积和并集面积的比值。

公式为:
I o U = 交集面积 并集面积 IoU=\frac{交集面积}{并集面积} I o U = 并集面积 交集面积

🔗示例:如果预测框的面积为100,真实框的面积为80,两者交集面积为60,则 I o U = 60 100 + 80 − 60 = 0.5 IoU=\frac{60}{100 + 80-60}=0.5 I o U = 100 + 80 60 60 = 0.5 。一般在目标检测中,当IoU大于某个阈值(如0.5)时,认为检测是正确的。


9、平均精度(Average Precision,AP)

定义 :在目标检测任务中, AP 是对 不同召回率下精度的平均值。 它是通过对 PR曲线 下面积的积分计算得到的。

在目标检测里,我们不仅关心模型是否能正确地识别目标类别( 分类准确性 ),还关心模型是否能准确地定位目标( 位置准确性 )。 AP 综合考虑了这两个方面,通过对不同 召回率(Recall) 精度(Precision) 的平均值来衡量模型在整个检测过程中的性能。


10、平均精度均值(Mean Average Precision,mAP)

定义 :对于多类别目标检测任务, mAP 所有 类别AP的平均值。它可以评估模型在多个类别上的综合检测性能。

🔗示例:如果有3个类别,其AP分别为0.7、0.8、0.9,则 m A P = 0.7 + 0.8 + 0.9 3 = 0.8 mAP=\frac{0.7 + 0.8+0.9}{3}=0.8 m A P = 3 0.7 + 0.8 + 0.9 = 0.8

mAP50

mAP50 是指在交并比 阈值设定为 0.5 时计算得到的 mAP

在目标检测任务中,对于每个类别,首先根据 IoU = 0.5 的标准来判断预测框是真正例(TP)、假正例(FP)还是假负例(FN)。

然后,针对每个类别计算 P-R曲线 下的面积,即该类别的 AP 。最后,将所有类别的 AP 进行平均,就得到了 mAP50

mAP50-95

mAP50-95 是一个更严格、更全面的评估指标。

它是在 IoU 阈值从 0.5 到 0.95 (通常以 0.05 为间隔,即 0.5、0.55、0.6、...、0.9、0.95) 的多个值下,分别计算每个 IoU 阈值对应的平均精度(AP),然后将这些 AP 进行平均得到的值。

这个指标能够综合评估模型在不同定位精度要求下的性能。

红框中就是模型训练后的 mAP50 mAP50-95 的值。

在这里插入图片描述


11、参数量(Number of Parameters)

定义 :模型中所有可训练参数的数量。它反映了模型的复杂度。

在神经网络中,这些参数包括 权重(Weights) 偏置(Biases)

权重 用于表示神经元之间连接的强度, 偏置 则是用于调整神经元的激活阈值。 参数量是衡量模型复杂度的一个重要指标,它在很大程度上影响着模型的存储需求、训练时间和计算资源消耗等。

🔗示例:一个简单的全连接神经网络层 y = W x + b y = Wx + b y = W x + b ,如果 x x x 是一个长度为 n n n 的向量, y y y 是一个长度为 m m m 的向量,那么这个层的参数量为 n × m + m n\times m+m n × m + m W W W 的参数数量为 n × m n\times m n × m b b b 的参数数量为 m m m )。

红框中的 2694806 parameters 就是模型可训练参数的数量。2.69M parameters

在这里插入图片描述


12、计算量(Computational Complexity)

定义 :FLOPs(Floating - Point Operations)即 浮点运算次数 ,是衡量模型计算量的一个重要指标。

它表示模型在执行一次前向传播过程中所需的浮点数计算次数,包括加法、乘法、除法等运算。 计算量反映了模型在进行推理或训练时的计算复杂程度, 对于评估模型的运行效率、硬件资源需求(如 CPU、GPU 的计算能力)以及推理速度等方面具有重要意义。

🔗示例:对于一个卷积层,其计算量的计算涉及到卷积核的大小、输入和输出通道数等因素。假设一个卷积层的输入特征图大小为 H × W × C i n H\times W\times C_{in} H × W × C in ,卷积核大小为 k × k k\times k k × k ,输出通道数为 C o u t C_{out} C o u t ,则其FLOPs大约为 H × W × C i n × C o u t × k × k H\times W\times C_{in}\times C_{out}\times k\times k H × W × C in × C o u t × k × k (这是一个简化的计算,忽略了一些偏置项等因素)。

换算公式

  • MFLOPS(megaFLOPS):等于每秒一百万( = 1 0 6 =10^{6} = 1 0 6 )次的浮点运算。

  • GFLOPS(gigaFLOPS):等于每秒十亿( = 1 0 9 =10^{9} = 1 0 9 )次的浮点运算。

  • TFLOPS(teraFLOPS):等于每秒一万亿( = 1 0 12 =10^{12} = 1 0 12 )次的浮点运算,(1太拉)。

  • PFLOPS(petaFLOPS):等于每秒一千万亿( = 1 0 15 =10^{15} = 1 0 15 )次的浮点运算。

  • EFLOPS(exaFLOPS):等于每秒一百京( = 1 0 18 =10^{18} = 1 0 18 )次的浮点运算。

  • ZFLOPS(zettaFLOPS):等于每秒十万京( = 1 0 21 =10^{21} = 1 0 21 )次的浮点运算。

红框中的 8.2 GFLOPs 就是模型的浮点运算次数。

在这里插入图片描述

📌TiPs

  • FLOPs(Floating - Point Operations) :如前面所讲,它是指浮点运算次数,用于衡量模型在执行一次前向传播过程中所需的浮点数计算的数量。这是一个表示计算量大小的指标,重点关注的是计算任务的规模, 与模型结构的复杂程度有关,不涉及时间相关的概念。
  • FLOPS(Floating - Point Operations Per Second) :是每秒浮点运算次数,用于衡量计算设备(如CPU、GPU)的计算性能。它描述的是硬件在单位时间(每秒)内能够执行的浮点运算的数量, 是一个速度相关的指标。

13、推理速度FPS(Frames Per Second)

  • 定义:每秒能够处理的图像帧数,用于衡量模型在实际应用中的实时性。

🔗示例:如果一个模型在处理100张图像时,总共花费了10秒,则其FPS为 100 / 10 = 10 100/10 = 10 100/10 = 10 帧/秒。这意味着该模型每秒可以处理10张图像。

YOLO模型 的验证阶段,红框中的 Speed 代表检测一张图片所需的时间,其中包括 预处理时间 推理时间 后处理时间 ,这和 BatchSize 设置的大小有关。一般 BatchSize 越大,速度越快。

此时的 FPS 就是使用 1000除以这三个时间的和 ,得到的就是 FPS

在这里插入图片描述