Dice系数衡量图像分割中的重叠区域

news2024/10/7 20:25:25

学习目标

Dice系数和mIoU是均是语义分割的评价指标,今天这里就着重讲讲Dice系数,顺便提一下Dice Loss,以后有时间区分一下在语义分割中两个常用的损失函数,交叉熵和Dice Loss。

语义分割中评价指标的重要性

语义分割是计算机视觉领域中一项重要的任务,旨在将图像中的每个像素分配给特定的语义类别。与其他图像分析任务(如目标检测或图像分类)不同,语义分割要求对图像进行像素级别的标记,提供更详细和准确的场景理解。

评价指标在语义分割任务中起着关键作用,用于衡量模型预测结果与真实标签之间的相似性和准确性。Dice系数是一种常用的评价指标,适用于像素级别的分割任务。

Dice系数

Dice系数可以度量预测分割结果与真实标签之间的重叠程度,其取值范围在0到1之间。Dice系数越接近1,表示预测结果与真实标签的重叠越好,模型的性能越好。相比于其他指标,Dice系数对于处理不平衡类别和小目标具有优势,因此在许多语义分割任务中被广泛使用。

Dice系数计算公式如下所示:

Dice=\frac{2*(pred\bigcap true)}{pred\bigcup true}

其中pred是预测值的集合,true为真实值的集合,分母为pred与true的交集,乘以2是因为交集有二者的重叠部分,即存在公共元素,而分母就是pred与true的并集。 

(1)预测分割图与真实分割图的点乘:

 (pred⋂true) 近似为预测图pred和真实图true之间的点乘:

(pred\bigcap true)=\begin{bmatrix} 0.01 &0.03 &0.08 &0.05 \\ 0.02 &0.14 &0.21 &0.06 \\ 0.92 &0.89 &0.90 &0.96 \\ 0.94&0.88 &0.97 & 0.92 \end{bmatrix} * \begin{bmatrix} 0 &0 & 0 &0 \\ 0 &0 & 0 &0 \\ 1 &1 & 1 &1 \\ 1 &1 &1 &1 \end{bmatrix}

(2)点乘之后进行元素相加:

\begin{bmatrix} 0 &0 &0 &0 \\ 0 &0 &0 &0 \\ 0.92 &0.89 &0.90 &0.96 \\ 0.94&0.88 &0.97 & 0.92 \end{bmatrix}=>0.92+0.89+...+0.92=7.38

对于二分类的问题,真实的分割图是One-Hot编码的只有0,1两个值,所以可以有效的将在pred分割图中未在true分割图中激活的所有像素清零。对于激活的像素,可以使低置信度的预测像素在最终结果中的贡献减小,较高值会得到更高的Dice的系数。

(3)计算分子的并集,就直接采取元素的相加:

pred=\begin{bmatrix} 0.01 &0.03 &0.08 &0.05 \\ 0.02 &0.14 &0.21 &0.06 \\ 0.92 &0.89 &0.90 &0.96 \\ 0.94&0.88 &0.97 & 0.92 \end{bmatrix}=>0.01+0.03+...+0.92=7.98

true= \begin{bmatrix} 0 &0 & 0 &0 \\ 0 &0 & 0 &0 \\ 1 &1 & 1 &1 \\ 1 &1 &1 &1 \end{bmatrix}=>8

Dice损失

Dice损失和Dice系数的关系是:DiceLoss = 1 - DiceCoefficient,由此得到Dice Loss的公式为:

Dice \ Loss=1-\frac{2*(pred\bigcap true)}{pred\bigcup true}

当 dice 值上升时,dice loss 会下降,当我们得到 dice 的最大值时,损失值为 0,这意味着模型是完美的。

pytorch实现Dice系数与Dice Loss

# Dice系数 Dice Loss
# 已放入 pyzjr 中,方便调用,版本>= 1.1.7之后可见
import torch

def Dice_coeff(pred, true, reduce_batch_first=False, epsilon=1e-6):
    #  二分类Dice系数
    assert pred.size() == true.size()
    assert pred.dim() == 3 or not reduce_batch_first

    if pred.dim() == 2 or not reduce_batch_first:
        sum_dim = (-1, -2)
    else:
        sum_dim=(-1, -2, -3)

    inter = 2 * (pred * true).sum(dim=sum_dim)
    sets_sum = pred.sum(dim=sum_dim) + true.sum(dim=sum_dim)
    sets_sum = torch.where(sets_sum == 0, inter, sets_sum)

    dice = (inter + epsilon) / (sets_sum + epsilon)
    return dice.mean()


def multiclass_Dice_coeff(pred, true, reduce_batch_first=False, epsilon=1e-6):
    #  多分类Dice系数
    return Dice_coeff(pred.flatten(0, 1), true.flatten(0, 1), reduce_batch_first, epsilon)


def Dice_Loss(pred, true, multiclass=False):
    #  Dice损失
    fn = multiclass_Dice_coeff if multiclass else Dice_coeff
    return 1 - fn(pred, true, reduce_batch_first=True)

参考文章

Dice和Dice Loss之间的区别_求则得之,舍则失之的博客-CSDN博客

Metric评价指标-Dice 与损失函数-Dice Loss - 知乎 (zhihu.com)

科研作图-常用的图像分割指标 (Dice, Iou, Hausdorff) 及其计算_图像分割dice系数如何计算_CV交流会的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/973669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cannot read property ‘database‘ of undefined解决办法

PS:在最近项目部署的时候,后台遇到如下的报错,显示数据库未定义,研究了半天没有找到原因,但是能解决掉这个报错 TypeError: Cannot read property ‘database’ of undefined 我们查看下具体的文件目录 我们需要返回…

2023年人力资源服务行业研究报告

第一章 行业概况 1.1 定义 在2017年6月发布的《国民经济行业分类》文件中,人力资源服务行业被定义为提供劳动者就业和职业发展的相关服务,以及为雇主管理和开发人力资源的相关服务。这些服务主要包括人力资源招聘、职业指导、人力资源和社会保障事务代…

【1++的数据结构】之map与set(二)

👍作者主页:进击的1 🤩 专栏链接:【1的数据结构】 文章目录 一,前言二,红黑树的概念及其性质三,红黑树的插入四,红黑树的验证五,map与set的封装红黑树迭代器的实现map重载…

c语言flag的使用

flag在c语言中标识某种状态或记录某种信息&#xff0c;可以通过修改flag中来控制程序流程,判断某种状态是否存在或记录某种信息 操作:(1)初始化 (2)赋值 (3)判断 (4)修改 (5)去初始化 #include <stdlib.h>int power_state_check;int main() {int i 0;power_state_check…

统计命令汇总

适用于Unix体系 关于wc命令 Word Count 用于统计指定文件中的字节数、字数、行数&#xff0c;并将统计结果显示输出。 wc [-lcw] c 统计字节数 l 统计行数 m 统计字符数&#xff0c;此标志不能与-c标志一起使用 w 统计字数。一个字定义为由空白、跳格或换行字符分隔的字符串 统…

mysql数据库使用技巧整理

查看当前数据库已建立的client连接 > SHOW VARIABLES LIKE max_connections; -- 查看数据库允许的最大连接数&#xff0c;不是实时正在使用的连接数 > SHOW STATUS LIKE Threads_connected; -- 查看当前数据库client的连接数 > SHOW PROCESSLIST; -- 查看具体的连接

界面控件DevExtreme(v23.2)下半年发展路线图

在这篇文章中&#xff0c;我们将介绍DevExtreme在v23.2中发布的一些主要特性&#xff0c;这些特性既适用于DevExtreme JavaScript (Angular、React、Vue、jQuery)&#xff0c;也适用于基于DevExtreme的ASP. NET MVC/Core控件。 DevExtreme包含全面的高性能和响应式UI小部件集合…

论文翻译 : 风廓线对地面机载风能系统性能的影响

目录 摘要1 引言2. 风力条件2.2 风况2.3 风况聚类2.4 聚类分析2.5 聚类统计分析 3 引言 摘要 摘要&#xff1a;本研究通过确定基于现实垂直风速剖面的循环可行的功率优化飞行轨迹&#xff0c;来研究抽水模式地面生成的空中风能系统&#xff08;AWESs&#xff09;的性能。这些1…

基于Springcloud的基础框架,统一gateWay网关鉴权demo,附下载地址

基于Springcloud的基础框架&#xff0c;统一gateWay网关鉴权demo&#xff0c;附下载地址 使用方式&#xff1a; 1、搭建nacos环境&#xff0c;修改对应nacos地址 2、修改mysql地址,导入sql语句 ###框架内容 SpringcloudGatewayJWTNacosFeginmysqlMybatis plus 具体功能 基于…

基于Matlab实现多个图像融合案例(附上源码+数据集)

图像融合是将多幅图像合成为一幅图像的过程&#xff0c;旨在融合不同图像的信息以获得更多的细节和更丰富的视觉效果。在本文中&#xff0c;我们将介绍如何使用Matlab实现图像融合。 文章目录 简单案例源码数据集下载 简单案例 首先&#xff0c;我们需要了解图像融合的两种主…

Linux之修改服务端口号

本次演示以SSH服务为例&#xff0c;SSH默认监听端口是22,先保留了22端口&#xff0c;所以我们要进入ssh的配置文件添加新端口并注释或删掉原有端口。 1、使用vi编辑器修改文件 sshd_config,路径是/etc/ssh/sshd_config,找到“#Port 22”,添加新的端口号10086。 2、如果你关闭了…

2023开学礼中国海洋大学《乡村振兴战略下传统村落文化旅游设计》许少辉新海洋图书馆

2023开学礼中国海洋大学《乡村振兴战略下传统村落文化旅游设计》许少辉新海洋图书馆

建筑结构健康监测系统:智能监测建筑结构健康状况

大型公共建筑因其投资大、结构形式复杂、建设工期长、施工工艺复杂、使用年限长等特点。在使用期间受超常荷载、材料老化、构件缺陷等因素的作用&#xff0c;结构将逐渐产生损伤累积&#xff0c;从而使结构的承载能力降低&#xff0c;抵抗自然灾害的能力下降。如遇地震、台风等…

【解决】uniapp项目集成钉钉H5微应用,控制台提示 ReferenceError: dd is not defined

【问题】 在钉钉APP内集成H5微应用&#xff0c;跳转到内部应用&#xff0c;按照钉钉开放平台文档引入钉钉客户端SDK。 引入成功&#xff0c;运行项目&#xff0c;调用dd.getAuthCode()方法获取免登授权码&#xff0c;控制台显示 “ReferenceError: dd is not defined” 【解决…

计算机组成原理学习记录(更新中)

文章目录 仅做个人记录计组的学习中认为容易记错的点或是个人认为的要点&#xff0c;如有错误&#xff0c;请多包涵。 学习资源为b站网课&#xff1a;王道计算机考研 计算机组成原理 大部分图片来自该网课 &#xff08;1&#xff09;冯诺依曼型计算机由五个部分组成&#xff…

【快应用】快应用与网页通信踩坑合集处理

【关键词】 Web、postMessage、onMessage 【问题背景】 快应用中通过web组件加载的h5网页&#xff0c;快应用在和网页进行通信时&#xff0c;经常会遇到网页发送信息给快应用&#xff0c;快应用成功收到&#xff0c;反过来的时候&#xff0c;h5网页就没法收到了。如提示 xxx …

Spark2x原理剖析(二)

一、概述 基于社区已有的JDBCServer基础上&#xff0c;采用多主实例模式实现了其高可用性方案。集群中支持同时共存多个JDBCServer服务&#xff0c;通过客户端可以随机连接其中的任意一个服务进行业务操作。即使集群中一个或多个JDBCServer服务停止工作&#xff0c;也不影响用…

SSRF服务端请求伪造

服务端请求伪造&#xff0c;其实就是攻击者构造恶意请求&#xff0c;服务端发起恶意请求&#xff0c;如果服务端不对用户传递的参数进行严格的过滤和限制&#xff0c;就可能导致服务端请求伪造 上面是百度识图&#xff0c;我们可以传递图片地址&#xff0c;百度识图向图片发起…

Linux内核源码分析 (7)内核内存布局和堆管理

一、Linux内核内存布局 64位Linux一般使用48位来表示虚拟地址空间&#xff0c;45位表示物理地址。通过命令&#xff1a;cat/proc/cpuinfo。查看Linux内核位数和proc文件系统输出系统软硬件信息如下: lhLH_LINUX:~$ cat /proc/cpuinfo vendor_id : GenuineIntel // CPU制造商 cp…

基于java SpringBoot和Vue uniapp的影楼摄影预约小程序

摘要 今天信息技术的发展很快&#xff0c;其足迹在我们的生活中随处可见。它影响着我们的衣食住行等各种需求。影响也在逐渐增加&#xff0c;逐渐渗透到各行各业&#xff0c;在这种背景下&#xff0c;经过实地考察后&#xff0c;为了让婚纱照管理更加高效方便&#xff0c;我决定…