详解机器视觉性能指标相关概念——混淆矩阵、IoU、ROC曲线、mAP等

目录

0. 前言

1. 图像分类性能指标

1.1 混淆矩阵(Confusion Matrix)

1.2 准确率(Precision)

1.3 召回率(Recall)

1.4 F1值(F1 score)

1.5 ROC曲线(接收者工作特征曲线,Receiver Operating Characteristic curve)

1.6 mAP(mean Average Precision)

2. 图像分割性能指标

2.1 交并比(IoU, Intersection over Union)

2.2 准确率(Precision)&召回率(Recall)&F1值(F1 score)

2.3 Dice系数(Dice coefficient)


0. 前言

按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。

本文将通过实例系统性说明机器视觉性能相关指标。关于这些指标内容我大体分为2类:图像分类性能指标和图像分割性能指标。

1. 图像分类性能指标

这类指标用于评估模型对图像分类的准确性:能将图像中的对象正确地划分到对应的分类中的比例、漏识别的比例、错误识别的比例等。

1.1 混淆矩阵(Confusion Matrix)

混淆矩阵是这类性能指标的基础。混淆矩阵是有监督学习中用来评估分类模型在测试数据集上的预测能力的一种评估方式。混淆矩阵是一个二维矩阵,其中每一行表示实际标签,每一列表示预测标签。

混淆矩阵的四个基本指标是真阳性(True Positive,TP)、假阳性(False Positive,FP)、真阴性(True Negative,TN)和假阴性(False Negative,FN),分别表示被正确分类的正例、被错误分类的正例、被正确分类的反例和被错误分类的反例的样本数。

下面通过实例来讲解混淆矩阵:假设我们有一个深度学习模型用来识别图像中是否有奥特曼,我们有下面9个测试样本,经过深度学习模型识别后输出如下:

可见,上述4个指标的对应个数分别为:

  • TP(模型预测有奥特曼,真实也有奥特曼):5
  • TN(模型预测无奥特曼,真实也无奥特曼):1
  • FP(模型预测有奥特曼,但实际无奥特曼):2
  • FN(模型预测无奥特曼,但实际有奥特曼):1

这样对应混淆矩阵为:

判断奥特曼的混淆矩阵真实类别
预测类别5(TP)2(FP)
1(FN)1(TN)

上面虽然是用二分类问题(是否问题、有无问题)来举例,但是混淆矩阵也可以扩展用于多分类问题,例如判断图像中的迪迦奥特曼、泰罗奥特曼、赛文奥特曼等。

判断奥特曼的混淆矩阵真实类别
迪迦泰罗……赛文
预测类别迪迦
泰罗
……
赛文
1.2 准确率(Precision)

准确率的数学定义为:

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

准确率描述的是:如果模型输出为“是”,实际有多少比例真实为“是”,即模型预测的准不准。

1.3 召回率(Recall)

召回率的数学定义为:

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

召回率描述的是:如果实际都为“是”,模型有多少比例能输出为“是”,即模型预测的全不全。

1.4 F1值(F1 score)

F1值的数学定义为:

F1 score = \frac{2\times Precision\times Recall }{Precision+Recall}

代入上面Precision和Recall的公式可以化简为:

F1 score = \frac{2TP}{2TP+FN+FP}

F1值是一种综合了模型的精度和召回率的评估指标。它是精度和召回率的调和平均值,因此在评估二元分类器时更加全面和准确。在模型选择、参数调优和结果解释等方面都具有重要的参考意义。同时,F1 score也可以用于比较不同模型或算法的性能,以便选择最优模型或算法。

1.5 ROC曲线(接收者工作特征曲线,Receiver Operating Characteristic curve)

这个指标有点复杂。。。

首先,ROC曲线横坐标为假阳性率FPR(False Positive Rate),FPR=FP/(FP+TN)。纵坐标为真阳性率TPR(True Positive Rate,即为Recall),TPR= Recall= TP/(TP+FN)。

然后再回到上面奥特曼的实例:我们需要知道,深度学习网络对于分类问题的输出并非“有”或“无”,而是一个0~1的置信概率。

如果我们设定一个阈值,比如模型计算输出有奥特曼的置信概率在0.6以上,我们才认为模型判断是“有”奥特曼,上面的示例应该变成这样:

显然,如果我们调整这个判断阈值,预测结果“有”或“无”就可能会发生变化,那么FPR和TPR就有可能都会变更,这样就有了一个新的点坐标(FPR,TPR)。

如果我们把所有的(FPR,TPR)都在坐标中描出来,并按顺序连接起来,就得到了ROC曲线。

特别地,如果我们把阈值设定为0,即模型输出的所有结果都为“有”,这时TN=FN=0,(FPR,TPR)=(1,1);如果把阈值设定为1,即模型输出的所有结果都为“无”,这是TP=FP=0,(FPR,TPR)=(0,0)。这样我们就知道ROC曲线肯定是在(0,0)和(1,1)这两点之间。例如下图:

ROC曲线的斜率和凸度反映了分类器的预测性能,ROC曲线越靠近左上角则分类器的性能越好。此外,ROC曲线下的面积AUC(Area Under the ROC Curve)也是一个常用的指标,AUC值越大表示分类器的预测性能越好,AUC值为1表示分类器的预测完全准确。

1.6 mAP(mean Average Precision)

中文咋翻译。。。平均平均精度?

首先需要介绍一下AP。我们按上面ROC的制作思路再制作一条曲线:其横坐标为Recall,纵坐标为Precision。这次我们调整的阈值不再是置信概率,而是IoU(或者说IoU本身也可以算作一种置信概率,下面会有介绍)。

通过调整IoU由0到1,我们获得多个坐标点(Recall,Precision)并依次连线,得到下面的Precision-Recall曲线:

对这条曲线进行积分即为AP:

AP = \int_{0}^{1} p(r)dr

如果我们要识别的对象有多种(迪迦奥特曼、泰罗奥特曼、赛文奥特曼等),那我们就会有多个AP,对其求均值即为mAP。

ROC曲线用于评估二分类器的性能,而mAP(mean Average Precision)是目标检测任务中的一个重要指标,用于评估模型对多个类别目标检测的精度。

2. 图像分割性能指标

这类指标是用于评估图像分割的准确性:能准确分割目标图像,描述预测对象位置和实际位置的差距。

我们还举一个奥特曼的例子:

这里蓝色框A是奥特曼的真实位置,已事先标注出来。红色框B是模型给奥特曼分割的边界。

2.1 交并比(IoU, Intersection over Union)

IoU是预测区域和真实区域的交集和并集的比:

IoU = \frac{A\bigcap B}{A\bigcup B}

mIoU(Mean Intersection over Union)是对所有类别的IoU计算平均值,用于评估多分类分割模型的表现。

2.2 准确率(Precision)&召回率(Recall)&F1值(F1 score)

这3个指标和上面分类问题的定义思路一样,所以一起来讲,其数学定义为:

Precision = \frac{A\bigcap B}{B}

Recall = \frac{A\bigcap B}{A}

F1 score = \frac{2\times Precision\times Recall }{Precision+Recall}

2.3 Dice系数(Dice coefficient)

Dice系数是预测区域和真实区域的交集与两者加和的比:

Dice = \frac{2A\bigcap B}{A+B}

<think>好的,我现在需要帮助用户查找混淆矩阵IoU(交并比)的公式及其相关计算方法或定义。首先,我需要回忆混淆矩阵的基本概念IoU的定义,确保自己理解正确。混淆矩阵是用于评估分类模型性能的表格,通常包括真正例(TP)、假正例(FP)、真负例(TN)和假负例(FN)这四个指标。而IoU,交并比,常用于目标检测或图像分割任务,衡量预测区域与真实区域的重叠程度。 接下来,我要确认混淆矩阵IoU之间的关系。用户可能想知道如何从混淆矩阵中推导出IoU,或者两者是否有直接的联系。根据已有的知识,混淆矩阵主要用于分类任务的评估,而IoU更多用于检测或分割任务。因此,它们可能属于不同的评估体系,但可能存在间接的关联,比如在语义分割中,每个类别的IoU可能与混淆矩阵中的TP、FP、FN有关。 查阅用户提供的引用内容,引用[3]提到在制作ROC曲线时,调整的阈值可以是IoU,这说明IoU在评估指标中的角色可能与置信度相关。同时,引用[3]也提到AP(Average Precision)的计算涉及Precision和Recall,这两者通常从混淆矩阵中获得。因此,可能存在一种方式将IoU混淆矩阵中的指标结合起来。 接下来,我需要明确IoU的公式。IoU的基本公式是预测区域和真实区域的交集面积除以它们的并集面积,即: $$IoU = \frac{TP}{TP + FP + FN}$$ 这里,TP是正确预测的正例,FP是错误预测的正例,FN是错误预测的负例。需要注意的是,在目标检测中,通常每个预测框和真实框的IoU需要达到一定阈值(如0.5)才被视为正确检测(TP),否则可能是FP或FN。因此,IoU的计算可能涉及到每个实例的具体比较,而混淆矩阵则是整体统计的结果。 然而,用户的问题是关于混淆矩阵中的IoU计算公式,这可能意味着用户希望了解如何从混淆矩阵的四个基本指标(TP、FP、TN、FN)中计算IoU。根据上述公式,IoU确实可以通过这三个参数计算得出,但需要明确每个参数在具体任务中的定义。例如,在语义分割中,每个像素的分类结果可以构成混淆矩阵,而IoU可能针对每个类别单独计算,即对于类别i,IoU_i = TP_i / (TP_i + FP_i + FN_i)。 现在,我需要验证这一思路是否正确。例如,在语义分割任务中,混淆矩阵通常是多维的,每个类别对应一行和一列,统计每个类别的预测和实际值。此时,每个类别的IoU可以通过该类别对应的TP、FP和FN计算,而TN可能不直接参与计算,因为TN代表其他类别正确预测的数量,这在多分类中可能复杂。因此,IoU的计算确实基于每个类别的TP、FP和FN。 用户提供的引用[2]提到了多分类混淆矩阵,这支持了上述观点。同时,引用[3]提到IoU作为置信概率的调整阈值,可能影响TP、FP的判定。例如,在目标检测中,只有当预测框与真实框的IoU超过阈值时,才视为TP,否则视为FP。这说明IoU的计算是实例级别的,而混淆矩阵中的TP、FP等是统计结果,两者在模型评估中是相互关联的。 总结起来,混淆矩阵中的IoU计算公式是针对每个类别的,可以表示为: $$IoU_{\text{类别}i} = \frac{TP_i}{TP_i + FP_i + FN_i}$$ 其中,TP_i是正确预测为类别i的数量,FP_i是错误预测为类别i的数量,FN_i是实际为类别i但被错误预测为其他类别的数量。 接下来,我需要检查是否有遗漏或误解的地方。比如,混淆矩阵是否仅用于二分类,而IoU在多分类中的处理方式是否有所不同。根据引用[2]中的多分类混淆矩阵,每个类别都有自己的TP、FP、FN,因此可以分别计算每个类别的IoU,然后取平均得到mIoU(平均交并比),这在语义分割中是常见的做法。 此外,用户可能想知道具体的计算步骤或示例。例如,如何根据混淆矩阵的数值代入公式。例如,对于一个二分类问题,混淆矩阵可能如下: | | 预测正类 | 预测负类 | |------------|----------|----------| | 实际正类 | TP=50 | FN=10 | | 实际负类 | FP=5 | TN=35 | 此时,正类的IoU为50 / (50 + 5 + 10) = 50/65 ≈ 0.769。 这样具体的例子可以帮助用户更好地理解如何应用公式。 最后,需要确保回答结构清晰,分点说明混淆矩阵IoU的关系、公式、计算步骤,以及可能的示例,同时引用相关文献支持。需要区分混淆矩阵在分类任务中的作用和IoU在检测/分割中的应用,避免混淆两者的应用场景。</think>### 混淆矩阵IoU(交并比)的公式及计算方法 #### 1. 混淆矩阵IoU的关系 混淆矩阵是分类模型的评估工具,记录$TP$(真正例)、$FP$(假正例)、$TN$(真负例)、$FN$(假负例)四个指标[^2]。而**IoU(Intersection over Union)**常用于目标检测或图像分割任务,衡量预测区域与真实区域的重叠程度,其计算需基于$TP$、$FP$、$FN$三个参数[^3]。 #### 2. IoU的数学定义 IoU的公式为: $$IoU = \frac{TP}{TP + FP + FN}$$ - **分子**:预测与真实区域的重叠部分(即$TP$)。 - **分母**:预测与真实区域的联合部分($TP + FP + FN$,等价于预测区域+真实区域−重叠部分)。 #### 3. 计算步骤 以图像分割任务为例: 1. **统计混淆矩阵**:对每个类别,分别计算$TP$(正确预测为该类别的像素数)、$FP$(错误预测为该类别的像素数)、$FN$(实际属于该类但未被预测的像素数)。 2. **代入公式**:对每个类别单独计算$IoU_i$,公式为: $$IoU_i = \frac{TP_i}{TP_i + FP_i + FN_i}$$ 3. **多分类扩展**:若涉及多分类任务,取所有类别$IoU_i$的平均值,即**mIoU**(Mean IoU): $$mIoU = \frac{1}{N}\sum_{i=1}^{N}IoU_i$$ #### 4. 示例说明 假设二分类混淆矩阵如下: | | 预测正类 | 预测负类 | |------------|----------|----------| | 实际正类 | $TP=50$ | $FN=10$ | | 实际负类 | $FP=5$ | $TN=35$ | 则正类的IoU为: $$IoU_{\text{正类}} = \frac{50}{50 + 5 + 10} = \frac{50}{65} \approx 0.769$$ #### 5. 核心区别 - **混淆矩阵**:用于分类任务,评估全局精度、召回率等指标[^2]。 - **IoU**:用于检测/分割任务,关注局部区域重叠精度[^3]。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

使者大牙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值