图像分割评价指标:Dice和MIoU

这篇具有很好参考价值的文章主要介绍了图像分割评价指标:Dice和MIoU。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Dice

理论

Dice用来衡量预测结果pred和标签label的相似度,公式如下图所示,即两个集合的交集/并集。
dice和miou,# 医学图像分割及其他,深度学习,计算机视觉,人工智能

注意:对于多分类的分割任务,网络的输出结果是多通道的,使用Dice计算准确度需要将标签转换为多通道的one_hot形式。

代码

def dice_acc(predict, label):
    """
        计算多个batch的dicc
        @param predict: 模型预测值,Shape:[B, C, W, H]
        @param label: one_hot形式的标签,Shape:[B, C, W, H]
    """
    batch_num, class_num = predict.shape[0: 2]
    
    assert predict.size() == label.size(), "the size of predict and target must be equal."
    
    # 计算交集
    intersection = (predict * label).reshape((batch_num, class_num, -1)).sum(dim=2)

    # 计算并集
    union = (predict + label).reshape((batch_num, class_num, -1)).sum(dim=2)
    
    dice = (2. * intersection + 1) / (union + 1)

    dice = dice.mean()

    # loss = 1 - dice

    return dice
  • 如果需要计算dice loss,只需要 1- dice_acc即可。
  • 可以借助torch.nn.functional.one_hot()函数将标签转化为one_hot形式。
  • 以上代码传入的predictlabel都是tensor,需要调用dice.item()只返回数值。

MIou

理论

为了计算MIoU,我们需要先引入混淆矩阵的概念。所谓混淆矩阵,就是真实结果和预测结果所组成的矩阵,将整个结果集划分为TPTNFPFN四类。
dice和miou,# 医学图像分割及其他,深度学习,计算机视觉,人工智能

  • TP:True Positive 真正的正类,即label是正标签,predict也是正标签。
  • FN:False Negative 假的负类,即label是正标签,predict却预测是负标签。
  • FP:False Positive 假的正类,即label是负标签,predict却预测是正标签。
  • TN:True Negative 真正的负类,即label是负标签,predict也是负标签。

有了混淆矩阵后,我们可以在此基础上计算各种评价指标:

查准率 precison

dice和miou,# 医学图像分割及其他,深度学习,计算机视觉,人工智能

查全率 recall

dice和miou,# 医学图像分割及其他,深度学习,计算机视觉,人工智能

MIoU 平均交并比

dice和miou,# 医学图像分割及其他,深度学习,计算机视觉,人工智能
上面的公式对应到混淆矩阵A上为 A(i, i) / A(i, : ) + A(:, j) - A(i, j),即对角线元素比上(对角线元素所在行和列的元素和 - 对角线元素)
dice和miou,# 医学图像分割及其他,深度学习,计算机视觉,人工智能

注意:为了计算MIoU,我们需要把多通道的预测结果通过torch.argmax()函数转化为单通道的预测类别,然后和单通道的label计算交并比。

代码

为了计算MIoU,这里提供两种方式,一种是比较高效的矩阵运算,另一种是常规的好理解的但效率不高的方式,两者都可以用。

高效的矩阵运算

def miou(predict, label, class_num=3):
    """
        计算多个batch的moiu
        @param predict: 模型预测值,Shape:[B, W, H]
        @param label: 标签,Shape:[B, W, H]
    """
    batch = label.shape[0]

    predict, label = predict.flatten(), label.flatten()

    # 忽略背景的话就 >0
    k = (predict >= 0) & (predict < class_num)

    # 计算混淆矩阵
    hist = torch.bincount(class_num * predict[k].type(torch.int32) + label[k], minlength=batch * (class_num ** 2)).reshape(batch, class_num, class_num)

    # 将多个batch合并为一个,如果传入的参数没有batch这个维度,可以注释掉这句话
    hist = hist.sum(0)

    # 计算各个类的iou
    miou = torch.diag(hist) / torch.maximum((hist.sum(1) + hist.sum(0) - torch.diag(hist)), torch.tensor(1))

    # 计算平均值miou
    return miou.mean()

低效的好理解的

def IOU(pred, target, n_classes = 3 ):
    """
        计算miou
        @param predict: 模型预测值,Shape:[W, H]
        @param label: 标签,Shape:[W, H]
    """
    ious = []
    # 从1开始,即忽略背景
    # 依次计算每个类
    for cls in range(1, n_classes):
        pred_inds = pred == cls
        target_inds = target == cls

        # 计算两个集合在该类上的交集
        intersection = (pred_inds[target_inds]).sum()

        # 计算并集
        union = pred_inds.sum() + target_inds.sum() - intersection

        if union == 0:
            ious.append(float('nan')) # If there is no ground truth,do not include in evaluation
        else:
            ious.append(float(intersection.item()) / float(max(union.item(), 1)))

    # 计算多类的平均值 
    return torch.mean(torch.tensor(ious))

注意,这种的传入的参数是二维的,不能有batch维度。

计算混淆矩阵

这里提供一个计算混淆矩阵的快速实现,但很低效,仅供看看,实际还是要用上面torch.bincount计算混淆矩阵快。

# TP predict 和 label 同时为1
TP = ((pred1 == 1) & (label == 1)).cpu().sum()
# TN    predict 和 label 同时为0
TN = ((pred1 == 0) & (label == 0)).cpu().sum()
# FN    predict 0 label 1
FN = ((pred1 == 0) & (label == 1)).cpu().sum()
# FP    predict 1 label 0
FP = ((pred1 == 1) & (label == 0)).cpu().sum()

Dice和MIoU两者的关系

对于二分类的任务来说,二者思想都是交集/并集,但dice并不是在分母上减去交集,而是将交集在分子上算了两次

对于多分类来说,Dice是将预测结果转为了多通道,而MIoU只在一个通道上计算。

参考链接

https://www.jianshu.com/p/42939bf83b8a
https://blog.csdn.net/Pierce_KK/article/details/96505691
https://blog.csdn.net/lipengfei0427/article/details/109556985文章来源地址https://www.toymoban.com/news/detail-787942.html

到了这里,关于图像分割评价指标:Dice和MIoU的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 语义分割miou指标计算详解

    MIoU 全称为 Mean Intersection over Union ,平均交并比。可作为语义分割系统性能的评价指标。 P:Prediction预测值 G:Ground Truth真实值 其中 IOU : 交并比就是该类的真实标签和预测值的交和并的比值 单类的交并比可以理解为下图: True Positive ( TP ): 把正样本成功预测为正。 True Negati

    2024年02月02日
    浏览(41)
  • Python计算语义分割模型的评价指标

    目录 一、混淆矩阵 二、分类指标 1、Accuracy(准确率) 2、Precision(查准率) 3、Recall (查全率) 4、F1-score  三、语义分割的评价指标 1、MPA(类别平均像素准确率) 2、IoU(交并比) 3、MIoU(平均交并比) 4、CPA(类别像素准确率) 5、PA(像素准确率) 四、代码实现(基于混淆矩阵)  混淆

    2024年02月04日
    浏览(49)
  • Python Unet ++ :医学图像分割,医学细胞分割,Unet医学图像处理,语义分割

    一,语义分割:分割领域前几年的发展 图像分割是机器视觉任务的一个重要基础任务,在图像分析、自动驾驶、视频监控等方面都有很重要的作用。图像分割可以被看成一个分类任务,需要给每个像素进行分类,所以就比图像分类任务更加复杂。此处主要介绍 Deep Learning-ba

    2024年02月16日
    浏览(54)
  • 图像去雾算法评价指标

    评价一个去雾算法的好坏,常常使用主观评价法和客观评价法。 主观评价即通过肉眼观察经过去雾处理的图像,从图像的纹理特征、对比度、饱和度及细节信息等多方面进行感官感受和评价。主观评价主要是通过人眼视觉系统的主观感受在确定好的评价基础上做出相应的判断

    2024年02月06日
    浏览(38)
  • 【医学图像】图像分割系列.2 (diffusion)

    介绍几篇使用diffusion来实现医学图像分割的论文:DARL(ICLR2023),MedSegDiff(MIDL2023) MedSegDiff-V2(arXiv2023),ImgX-DiffSeg(arXiv2023) 基础概念: 一文弄懂 Diffusion Model (qq.com)。 表示学习(representation learning)初印象 - 知乎 (zhihu.com)。 10分钟快速入门PyTorch (10) - 知乎 (zhihu.com)。 解读

    2024年02月07日
    浏览(43)
  • 医学图像分割

    方法 内容 监督学习 骨干网络的选择、网络块的设计、损失函数的改进 弱监督学习 数据增强、迁移学习、交互式分割研究 医学图像分割的难点: 医学图像的特征提取,因为医学影像中存在模糊、噪声、对比度低等问题。–CNN 医学图像通常含有噪声且边界模糊。–U-Net 目标

    2024年02月04日
    浏览(37)
  • 医学图像分割之MedNeXt

    论文: MedNeXt: Transformer-driven Scaling of ConvNets for Medical Image Segmentation ConvNeXt 网络是一种借鉴 Transformer 的思想进行了改进实现的全卷积网络,其通过全卷积网络和逆向残差瓶颈单元的设计,可以实现比较大的空间感受野。本文在此基础上提出了新的可伸缩,标准化的网络结构

    2023年04月08日
    浏览(55)
  • 深度学习实验-3d医学图像分割

    实验四 基于nnU-Net模型的3D医学图像分割实验 腹部多器官分割一直是医学图像分析领域最活跃的研究领域之一,其作为一项基础技术,在支持疾病诊断,治疗规划等计算机辅助技术发挥着重要作用。近年来,基于深度学习的方法在该领域中获得了巨大成功。本实验数据集为多

    2024年02月07日
    浏览(55)
  • 通用医学图像分割模型UniverSeg

    虽然深度学习模型已经成为医学图像分割的主要方法,但它们通常无法推广到涉及新解剖结构、图像模态或标签的unseen分割任务。给定一个新的分割任务,研究人员通常必须训练或微调模型,这很耗时,并对临床研究人员构成了巨大障碍,因为他们往往缺乏训练神经网络的资

    2024年02月04日
    浏览(45)
  • 图像处理之图像质量评价指标MSE(均方误差)

    一、MSE基本定义 MSE全称为“Mean Square Error”,中文意思即为均方误差,是衡量图像质量的指标之一。计算原理为 真实值与预测值的差值的平方然后求和再平均 ,公式如下: 其中, M为图像I的像素总数,N为图像K的像素总数。 MSE值越小,说明图像越相似 。计算MSE有四种方法:

    2024年02月05日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包