文章目录
实例分割的准确率和召回率计算方法类似于图像分类和目标检测中的计算方法,但由于实例分割涉及对每个像素的预测,计算会更加细致。 通常,实例分割的性能评价基于像素级别的准确率和召回率,以及目标级别的准确率和召回率。
实例分割指标详解
零、TP、FP、TN 和 FN
TP、FP、TN 和 FN 是用于评估分类模型性能的四个重要指标,通常在二分类问题中使用。这些术语的定义如下:
-
TP (True Positives):真正例,指模型正确预测为正类的样本数量。换句话说,实际为正且预测为正的样本。
-
FP (False Positives):假正例,指模型错误地预测为正类的样本数量。即实际为负但预测为正的样本。
-
TN (True Negatives):真负例,指模型正确预测为负类的样本数量。也就是实际为负且预测为负的样本。
-
FN (False Negatives):假负例,指模型错误地预测为负类的样本数量。即实际为正但预测为负的样本。
评估指标
使用这些指标可以计算多个性能评估指标:
-
准确率 (Accuracy):
Accuracy = T P + T N T P + F P + T N + F N \text{Accuracy} = \frac{TP + TN}{TP + FP + TN + FN} Accuracy=TP+FP+TN+FNTP+TN -
精确率 (Precision):
Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP
表示在所有预测为正的样本中,实际为正的比例。 -
召回率 (Recall)(灵敏度):
Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP
TP、FP、TN 和 FN 是用于评估分类模型性能的四个重要指标,通常在二分类问题中使用。这些术语的定义如下:
-
TP (True Positives):真正例,指模型正确预测为正类的样本数量。换句话说,实际为正且预测为正的样本。
-
FP (False Positives):假正例,指模型错误地预测为正类的样本数量。即实际为负但预测为正的样本。
-
TN (True Negatives):真负例,指模型正确预测为负类的样本数量。也就是实际为负且预测为负的样本。
-
FN (False Negatives):假负例,指模型错误地预测为负类的样本数量。即实际为正但预测为负的样本。
评估指标
使用这些指标可以计算多个性能评估指标:
-
准确率 (Accuracy):
Accuracy = T P + T N T P + F P + T N + F N \text{Accuracy} = \frac{TP + TN}{TP + FP + TN + FN} Accuracy=TP+FP+TN+FNTP+TN -
精确率 (Precision):
Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP
表示在所有预测为正的样本中,实际为正的比例。 -
召回率 (Recall)(灵敏度):
Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP
表示在所有实际为正的样本中,模型预测为正的比例。 -
F1-score:
F1 = 2 × Precision × Recall Precision + Recall \text{F1} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1=2×Precision+RecallPrecision×Recall
是精确率和召回率的调和平均数。
应用场景
这些指标广泛应用于医学诊断、欺诈检测、信息检索等领域,帮助研究人员和工程师评估和改进模型的性能。不同的应用场景可能对这些指标有不同的侧重,例如,医学领域可能更关注召回率以确保疾病不被漏检。
表示在所有实际为正的样本中,模型预测为正的比例。
一、像素级别的准确率和召回率
-
准确率 (Precision)
Precision = TP TP + FP \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} Precision=TP+FPTP
其中,TP(True Positives)是真正的正例像素数,即被正确分类为前景的像素数。FP(False Positives)是假正例像素数,即被错误分类为前景的背景像素数。 -
召回率 (Recall)
Recall = TP TP + FN \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} Recall=TP+FNTP
其中,FN(False Negatives)是假负例像素数,即被错误分类为背景的前景像素数。
二、目标级别的准确率和召回率
对于实例分割中的目标级别评价,通常需要对每个实例进行匹配和比较。常用的评估指标包括Intersection over Union (IoU) 和基于IoU的准确率和召回率。
-
Intersection over Union (IoU)
IoU = Area of Intersection Area of Union \text{IoU} = \frac{\text{Area of Intersection}}{\text{Area of Union}} IoU=Area of UnionArea of Intersection
对于每个预测的实例,与真实标签进行匹配,计算其重叠区域与总区域的比值。有了IoU以后,我们就可以计算目标级别(也可以说是instance级别)的TP、FP、TN、FN。 -
准确率 (Precision)
Precision = Number of correctly predicted instances Number of predicted instances \text{Precision} = \frac{\text{Number of correctly predicted instances}}{\text{Number of predicted instances}} Precision=Number of predicted instancesNumber of correctly predicted instances
在这种情况下,正确预测的实例通常是指其IoU超过某个阈值(例如0.5)的实例。 -
召回率 (Recall)
Recall = Number of correctly predicted instances Number of ground truth instances \text{Recall} = \frac{\text{Number of correctly predicted instances}}{\text{Number of ground truth instances}} Recall=Number of ground truth instancesNumber of correctly predicted instances
正确预测的实例定义同上。
三、示例计算
假设我们有以下混淆矩阵(基于像素级别):
Predicted Positive | Predicted Negative | |
---|---|---|
Actual Positive | TP (True Positives) = 1000 | FN (False Negatives) = 200 |
Actual Negative | FP (False Positives) = 50 | TN (True Negatives) = 4750 |
像素级别计算:
-
准确率:
Precision = 1000 1000 + 50 = 1000 1050 ≈ 0.952 \text{Precision} = \frac{1000}{1000 + 50} = \frac{1000}{1050} \approx 0.952 Precision=1000+501000=10501000≈0.952 -
召回率:
Recall = 1000 1000 + 200 = 1000 1200 ≈ 0.833 \text{Recall} = \frac{1000}{1000 + 200} = \frac{1000}{1200} \approx 0.833 Recall=1000+2001000=12001000≈0.833
目标级别计算:
假设有5个真实目标和6个预测目标,其中4个预测目标与真实目标的IoU > 0.5。
-
准确率:
Precision = 4 6 ≈ 0.667 \text{Precision} = \frac{4}{6} \approx 0.667 Precision=64≈0.667 -
召回率:
Recall = 4 5 = 0.8 \text{Recall} = \frac{4}{5} = 0.8 Recall=54=0.8
四、实例分割的整体评估
在实例分割中,还可以使用更综合的指标,例如Mean Average Precision (mAP),它是多个IoU阈值下平均准确率的均值,能够更全面地反映算法的性能。
mAP
在实例分割任务中,mAP(mean Average Precision,平均精度均值)是评估模型性能的重要指标之一。计算mAP的过程通常包括以下几个步骤:
-
预测结果与真值匹配:
- 对于每张图片,模型会生成多个实例分割结果,每个结果包含一个分割掩码(mask)和一个置信度分数。
- 将预测结果与真实标注的实例进行匹配,通常使用IoU(Intersection over Union,交并比)来衡量预测结果与真实标注之间的相似度。通常,IoU阈值(如0.5)被用来判断一个预测结果是否与真实标注匹配。
-
计算每个类别的Precision-Recall曲线:
- 对于每个类别,按照置信度分数对所有预测结果进行排序。
- 计算Precision(精确率)和Recall(召回率):
- 精确率(Precision)是指正确预测的正例占所有预测为正例的比例。
- 召回率(Recall)是指正确预测的正例占所有实际正例的比例。
-
计算每个类别的AP(Average Precision,平均精度):
- 根据Precision-Recall曲线,计算AP。AP是Precision-Recall曲线下的面积。
- 一般使用插值法来计算AP,例如:在每个Recall点上,取该点及其右侧所有点的最大Precision值,然后计算这些点下的面积。
-
计算mAP:
- 对于所有类别的AP取均值,即为mAP。
具体的计算步骤如下:
- 匹配预测与真值:对每个预测结果,根据IoU阈值与真实标注进行匹配,记录下True Positives(TP,真阳性)、False Positives(FP,假阳性)、False Negatives(FN,假阴性)。
- 排序:按照置信度分数对预测结果排序。
- 计算Precision和Recall:
Precision = T P T P + F P Recall = T P T P + F N \text{Precision} = \frac{TP}{TP + FP} \\ \text{Recall} = \frac{TP}{TP + FN} Precision=TP+FPTPRecall=TP+FNTP - 计算AP:根据Precision-Recall曲线计算AP,通常在不同的Recall阈值下进行计算。
- 计算mAP:对所有类别的AP取均值。
在实例分割任务中,mAP的计算与目标检测中的mAP类似,但需要考虑的是每个实例的分割掩码而不仅仅是边界框。
PR曲线
Precision-Recall(PR)曲线是用于评估分类器性能的工具,特别适用于不平衡数据集。在实例分割任务中,PR曲线展示了不同阈值下的精确率(Precision)和召回率(Recall)。计算PR曲线的步骤如下:
-
收集预测结果和真值:
- 对每个实例分割结果,模型会输出一个置信度分数。
- 根据IoU阈值(如0.5),将预测结果与真实标注进行匹配,记录下True Positives(TP,真阳性)、False Positives(FP,假阳性)、False Negatives(FN,假阴性)。
-
按置信度排序:
- 对所有预测结果按置信度分数从高到低排序。
-
计算Precision和Recall:
- 初始化TP、FP和FN计数器。
- 逐一处理排序后的预测结果,更新TP、FP和FN计数器,并计算相应的Precision和Recall:
Precision = T P T P + F P Recall = T P T P + F N \text{Precision} = \frac{TP}{TP + FP} \\ \text{Recall} = \frac{TP}{TP + FN} Precision=TP+FPTPRecall=TP+FNTP
-
绘制PR曲线:
- 将每个score阈值下的Precision和Recall值绘制在图表上,形成PR曲线。
具体计算步骤:
-
初始化:
- 获取所有预测结果,记录其置信度分数及是否为TP或FP。
- 计算总的正例数量(实际正例数量,即所有的TP + FN)。
-
排序:
- 根据置信度分数对预测结果从高到低进行排序。
-
逐一处理预测结果:
- 初始化TP、FP计数器为0。
- 遍历排序后的预测结果,对于每个预测结果:
- 如果是TP,TP计数器加1。
- 如果是FP,FP计数器加1。
- 计算当前的Precision和Recall,并记录下来。
-
插值计算AP(如果需要):
- 根据插值法计算AP,在每个Recall点上取该点及其右侧所有点的最大Precision值,然后计算这些点下的面积。
(1)假设已经得出一系列样本被划分为正类的概率score值,按照大小排序。
(2)从高到低,依次将“score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个阈值时,我们认为它为正样本,否则为负样本。
(3)每次选取一个不同的阈值threshold,得到一组precision和recall,以recall值为横坐标、precision值为纵坐标,描点。
(4)根据(3)中的坐标点,绘制曲线。
示例:
假设有如下预测结果,按置信度分数排序:
置信度 | 真实标签 | TP/FP |
---|---|---|
0.95 | 正例 | TP |
0.90 | 负例 | FP |
0.85 | 正例 | TP |
0.80 | 正例 | TP |
0.75 | 负例 | FP |
- 初始化:TP = 0, FP = 0, 总正例数量 = 3。
- 处理第一个预测结果(置信度0.95):TP = 1, FP = 0。
Precision = 1 1 + 0 = 1.0 Recall = 1 3 = 0.33 \text{Precision} = \frac{1}{1+0} = 1.0 \\ \text{Recall} = \frac{1}{3} = 0.33 Precision=1+01=1.0Recall=31=0.33 - 处理第二个预测结果(置信度0.90):TP = 1, FP = 1。
Precision = 1 1 + 1 = 0.5 Recall = 1 3 = 0.33 \text{Precision} = \frac{1}{1+1} = 0.5 \\ \text{Recall} = \frac{1}{3} = 0.33 Precision=1+11=0.5Recall=31=0.33 - 处理第三个预测结果(置信度0.85):TP = 2, FP = 1。
Precision = 2 2 + 1 = 0.67 Recall = 2 3 = 0.67 \text{Precision} = \frac{2}{2+1} = 0.67 \\ \text{Recall} = \frac{2}{3} = 0.67 Precision=2+12=0.67Recall=32=0.67 - 处理第四个预测结果(置信度0.80):TP = 3, FP = 1。
Precision = 3 3 + 1 = 0.75 Recall = 3 3 = 1.0 \text{Precision} = \frac{3}{3+1} = 0.75 \\ \text{Recall} = \frac{3}{3} = 1.0 Precision=3+13=0.75Recall=33=1.0 - 处理第五个预测结果(置信度0.75):TP = 3, FP = 2。
Precision = 3 3 + 2 = 0.6 Recall = 3 3 = 1.0 \text{Precision} = \frac{3}{3+2} = 0.6 \\ \text{Recall} = \frac{3}{3} = 1.0 Precision=3+23=0.6Recall=33=1.0
将各个点的Precision和Recall值绘制成图,即为PR曲线。通过上述步骤,能得到不同阈值下的Precision和Recall,从而绘制出完整的PR曲线。
更多阅读
https://blog.youkuaiyun.com/level_code/article/details/129587728
https://yangsuhui.github.io/p/5b87.html