实例分割指标详解


实例分割的准确率和召回率计算方法类似于图像分类和目标检测中的计算方法,但由于实例分割涉及对每个像素的预测,计算会更加细致。 通常,实例分割的性能评价基于像素级别的准确率和召回率,以及目标级别的准确率和召回率。

实例分割指标详解

零、TP、FP、TN 和 FN

TP、FP、TN 和 FN 是用于评估分类模型性能的四个重要指标,通常在二分类问题中使用。这些术语的定义如下:

  1. TP (True Positives):真正例,指模型正确预测为正类的样本数量。换句话说,实际为正且预测为正的样本。

  2. FP (False Positives):假正例,指模型错误地预测为正类的样本数量。即实际为负但预测为正的样本。

  3. TN (True Negatives):真负例,指模型正确预测为负类的样本数量。也就是实际为负且预测为负的样本。

  4. 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 是用于评估分类模型性能的四个重要指标,通常在二分类问题中使用。这些术语的定义如下:

  1. TP (True Positives):真正例,指模型正确预测为正类的样本数量。换句话说,实际为正且预测为正的样本。

  2. FP (False Positives):假正例,指模型错误地预测为正类的样本数量。即实际为负但预测为正的样本。

  3. TN (True Negatives):真负例,指模型正确预测为负类的样本数量。也就是实际为负且预测为负的样本。

  4. 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 PositivePredicted Negative
Actual PositiveTP (True Positives) = 1000FN (False Negatives) = 200
Actual NegativeFP (False Positives) = 50TN (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=105010000.952

  • 召回率:
    Recall = 1000 1000 + 200 = 1000 1200 ≈ 0.833 \text{Recall} = \frac{1000}{1000 + 200} = \frac{1000}{1200} \approx 0.833 Recall=1000+2001000=120010000.833

目标级别计算

假设有5个真实目标和6个预测目标,其中4个预测目标与真实目标的IoU > 0.5。

  • 准确率:
    Precision = 4 6 ≈ 0.667 \text{Precision} = \frac{4}{6} \approx 0.667 Precision=640.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的过程通常包括以下几个步骤:

  1. 预测结果与真值匹配

    • 对于每张图片,模型会生成多个实例分割结果,每个结果包含一个分割掩码(mask)和一个置信度分数。
    • 将预测结果与真实标注的实例进行匹配,通常使用IoU(Intersection over Union,交并比)来衡量预测结果与真实标注之间的相似度。通常,IoU阈值(如0.5)被用来判断一个预测结果是否与真实标注匹配。
  2. 计算每个类别的Precision-Recall曲线

    • 对于每个类别,按照置信度分数对所有预测结果进行排序。
    • 计算Precision(精确率)和Recall(召回率):
      • 精确率(Precision)是指正确预测的正例占所有预测为正例的比例。
      • 召回率(Recall)是指正确预测的正例占所有实际正例的比例。
  3. 计算每个类别的AP(Average Precision,平均精度)

    • 根据Precision-Recall曲线,计算AP。AP是Precision-Recall曲线下的面积。
    • 一般使用插值法来计算AP,例如:在每个Recall点上,取该点及其右侧所有点的最大Precision值,然后计算这些点下的面积。
  4. 计算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曲线的步骤如下:

  1. 收集预测结果和真值

    • 对每个实例分割结果,模型会输出一个置信度分数。
    • 根据IoU阈值(如0.5),将预测结果与真实标注进行匹配,记录下True Positives(TP,真阳性)、False Positives(FP,假阳性)、False Negatives(FN,假阴性)。
  2. 按置信度排序

    • 对所有预测结果按置信度分数从高到低排序。
  3. 计算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
  4. 绘制PR曲线

    • 将每个score阈值下的Precision和Recall值绘制在图表上,形成PR曲线。
具体计算步骤:
  1. 初始化

    • 获取所有预测结果,记录其置信度分数及是否为TP或FP。
    • 计算总的正例数量(实际正例数量,即所有的TP + FN)。
  2. 排序

    • 根据置信度分数对预测结果从高到低进行排序。
  3. 逐一处理预测结果

    • 初始化TP、FP计数器为0。
    • 遍历排序后的预测结果,对于每个预测结果:
      • 如果是TP,TP计数器加1。
      • 如果是FP,FP计数器加1。
      • 计算当前的Precision和Recall,并记录下来。
  4. 插值计算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
  1. 初始化:TP = 0, FP = 0, 总正例数量 = 3。
  2. 处理第一个预测结果(置信度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
  3. 处理第二个预测结果(置信度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
  4. 处理第三个预测结果(置信度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
  5. 处理第四个预测结果(置信度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
  6. 处理第五个预测结果(置信度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.csdn.net/level_code/article/details/129587728
https://yangsuhui.github.io/p/5b87.html

### 实例分割算法概述 实例分割是一种计算机视觉技术,旨在识别图像中的每个对象并为其生成精确的边界框和像素级掩码。这种技术结合了目标检测和语义分割的优点,可以区分同一类别下的不同个体。 一种常用的实例分割方法是 **Mask R-CNN**,它扩展了 Faster R-CNN 的框架,在目标检测的基础上增加了分支来预测每个感兴趣区域 (ROI) 的分割掩码[^2]。以下是其实现的关键部分: #### Mask R-CNN 架构详解 Mask R-CNN 是一种端到端可训练的模型,其核心组件包括: - **特征提取器**: 使用卷积神经网络(如 ResNet 或 MobileNet)提取输入图像的高级特征。 - **候选区域生成**: 利用 Region Proposal Network (RPN),生成可能包含目标的候选区域。 - **分类与回归**: 对每个候选区域进行分类,并调整其边界框位置。 - **掩码预测**: 额外增加一个全卷积网络 (FCN) 分支,用于生成高分辨率的二值掩码,表示目标的具体形状。 下面是 Mask R-CNN 的 Python 代码实现示例: ```python import torch from torchvision.models.detection import maskrcnn_resnet50_fpn from PIL import Image import numpy as np def load_model(): model = maskrcnn_resnet50_fpn(pretrained=True) model.eval() return model def predict(image_path, model): image = Image.open(image_path).convert("RGB") transform = lambda x: torch.tensor(np.array(x)).permute(2, 0, 1).unsqueeze(0).float() / 255. input_tensor = transform(image) with torch.no_grad(): predictions = model(input_tensor)[0] masks = predictions['masks'].numpy().squeeze(axis=1) boxes = predictions['boxes'].numpy() labels = predictions['labels'].numpy() return masks, boxes, labels model = load_model() masks, boxes, labels = predict('example.jpg', model) print(f"Masks shape: {masks.shape}, Boxes count: {len(boxes)}, Labels count: {len(labels)}") ``` 上述代码展示了如何加载预训练的 Mask R-CNN 模型并对单张图片执行推理操作。 #### 城市道路场景的应用案例 对于特定应用场景,例如城市道路中的实例分割,可以通过优化现有架构或引入轻量化模型(如 MobileNet)提升性能。这种方法不仅减少了计算资源的需求,还提高了实时处理能力[^3]。 具体来说,针对城市道路环境的特点,研究者们开发了一种改进版实例分割系统,它可以有效地区分车辆、行人和其他交通参与者,并提供高质量的对象掩码输出。 --- ### §相关问题§ 1. 如何评估实例分割算法的效果?有哪些常用指标? 2. 轻量化模型(如 MobileNet)在实例分割任务中表现如何?是否存在精度损失? 3. 是否有其他替代方案可用于复杂背景下的实例分割任务? 4. 数据增强技术对提高实例分割模型鲁棒性有何帮助? 5. 在自定义数据集上微调 Mask R-CNN 时需要注意哪些事项?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值