深度学习| DiceLoss解决图像数据不平衡问题

图像数据不平衡问题

图像数据不平衡:在进行图像分割时,二分类问题中,背景过大,前景过小;多分类问题中,某一类别的物体体积过小。在很多图像数据的时候都会遇到这个情况,尤其是在医学图像处理的时候,例如分割官腔轮廓、识别肿瘤、识别斑块等等。

图像数据不平衡会产生的问题:占据绝大多数的类别会支配模型的训练过程,导致模型只需要把占比大的类别分准损失就收敛了,占比小的类别反而分的很差,而我们很多时候需要分准的其实是占比小的类别。

这个问题的产生也和交叉熵损失函数有关。

交叉熵损失函数:通常进行图像分割的时候都会使用交叉熵损失函数,交叉熵的特点就是“平等”地看待每一个样本,无论什么类别权重都是一样的。所以当正负样本不均衡时,大量简单的负样本会占据主导地位,少量的难样本和正样本就会分不出来。

Dice Loss

公式

之前在介绍深度学习指标的时候,提到过Dice。

Dice可以计算集合的相似程度,取值范围在[0,1],公式如下所示:
D i c e ( X , Y ) = 2 ∗ ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ Dice(X,Y)=\frac{2*|X\cap Y|}{|X|+|Y|} Dice(X,Y)=X+Y2XY

Dice Loss表达式:
1 − D i c e ( X , Y ) = 1 − 2 ∗ ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ 1-Dice(X,Y)=1-\frac{2*|X\cap Y|}{|X|+|Y|} 1Dice(X,Y)=1X+Y2XY

为什么能解决图像数据不平衡问题

进行图像二分类问题的时候,X看作是Label(标签)像素点值集合,Y看作是Prediction(预测)像素点值集合,将前景真实值设为1,背景真实值设为0。这样在计算Dice的时候,求X和Y交集和并集就会把真实值为0的背景过滤掉,相当于做了个mask(掩码)操作,从而使得训练更关注我们要前景。

在这里插入图片描述

使用注意

在实际使用的时候,损失函数并不会单纯使用Dice Loss,通常都会和其他Loss结合起来用,会给其他Loss和Dice Loss分别上不同的权重作为损失函数。

为什么不只简单Dice Loss:在训练模型的时候,我们通常都是要把模型训练到损失收敛才停下。而Dice Loss本身并不稳定,Dice Loss是mask了背景的,在前景目标很小的情况下,一旦有少部分分类错误,就会导致Dice Loss产生严重的震荡。而且背景预测不正确,但是前景都预测涵盖了,会导致Loss也非常低,但实际上预测的并不对。

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

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

相关文章

每日一题 --- 两数之和[力扣][Go]

两数之和 题目:1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案…

深入理解 Java 序列化中的 readResolve() 方法

深入理解 Java 序列化中的 readResolve() 方法 在 Java 编程中,序列化是一个将对象状态转换为字节流以便存储或传输的过程,而反序列化则是将这些字节流恢复为原始对象状态的过程。Java 提供了强大的序列化机制,使得开发者能够轻松地处理对象…

SSM框架学习——Spring的控制反转IoC与依赖注入DI

控制反转IoC与依赖注入DI 概念 提到Spring首先想到的肯定是Spring的IoC容器了。在了解Spring的用法之前我们必须了解什么是控制反转IoC和依赖注入DI。 **控制反转(Inversion of Control)**是面向对象编程中的一种设计原则,它建议将不需要的…

全量知识系统 详细设计 之preserving (百度AI助手QA)

Q1. 1、三种对象三种库:python 数据对象 none对象: 对等立方体(PQR) ole对象Y 。 pqr均为立体库(工厂级的);Java 类对象 Empty对象 :公差立方体(XYZ ) 值对象C。 xyz均为线库(车间…

【软考】系统集成项目管理工程师(二十二)法律法规【2分】

一、合同法 1、内容 当事人的名称或者姓名和住所、标的、数量、质量、价款或者报酬;履行期限、地点和方式;违约责任和解决争议的方法 练一练 【例1-高16下】格式条款是当事人为了重复使用而预先拟定,并在订立合同时未与对方协商的…

Java language programming:求学生的平均身高

题目: 从键盘输入若干个人的身高,计算出平均身高(平均身高为int类型)。当输入身高值为0时,表示输入结束。 输入格式: 输入若干个人的身高值输入在同一行,用空格分隔。 输出格式: 按照输出样例格式输出平均…

共享内存 - windows平台和linux平台的不同处理

1.各个平台下的共享内存的使用方法 共享内存主要用来进行模块分割,复杂性隔离的用途。python这类跨平台平台其实是无法完全消弭各个平台间的个体差异,一个简单的例子: import posix_ipc import mmap# 创建或打开共享内存 shm posix_ipc.Sh…

matlab 坐标系变换

文章目录 对象轴角 axis-angles欧拉角 Euler angles四元数 quaternion旋转矩阵 rotation matrices齐次变换矩阵 Homogeneous Transformation坐标系换算 Coordinate Conversions图变换 Plot Transformations对象 对象含义se2SE(2)齐次变换矩阵se3SE(3)齐次变换矩阵so2SO(2)旋转s…

内存泄漏检查工具下载(vld)

前言:在我们向内存申请动态空间的时候,如果使用完之后不将申请的空间释放,就会造成内存泄漏的情况,但是一般情况下,我们是无法通过运行代码来知道是否造成了内存泄漏,所以vld就成为了检查内存是否泄漏的好帮…

rocketMQ中store目录解释

rocketMQ中有个store目录,它是用来存放和管理broker中的消息,queue和topic的。 下面的是store的目录 abort:该文件在broker启动后会自动创建,broker关闭后消失,若没有消失则说明该broker非正常关闭。 checkpoint&…

面向对象设计之开闭原则

设计模式专栏: http://t.csdnimg.cn/4Mt4u 目录 1.引言 2.如何理解“对扩展开放、对修改关闭” 3.修改代码就意味着违反开闭原则吗 4.如何做到“对扩展开放、对修改关闭” 5.如何在项目中灵活应用开闭原则 6.总结 1.引言 开闭原则(Open Closed Principle&…

Python多任务处理---多线程

引入 生活中,我们在电脑上打开了一个word, 这个word对操作系统来说就是一个进程。我们在进行word操作的时候,比如在你打字的时候,该word同时可以进行文字检查。发现了没,在同一个进程中,我们也可以进行同时操作。…

【RV1126】瑞芯微RV1126开发板双网口问题

今天新拿到瑞芯微RV1126的开发板,是双网口双百兆接口,内存为2G,emmc flash为32G,一开始无法分辨物理接口和系统的eth是对应的,遂想用ethtool工具来查看网速,发现: ethtool eth0 # 可以正常返回…

Acwing.731 毕业旅行问题(状态压缩动态规划)

题目 小明目前在做一份毕业旅行的规划。 打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次。 由于经费有限,小明希望能够通过合理的路线安排尽可能的省些路上的花销。 …

如何在 Debian VPS 上添加、删除和授予用户 sudo 权限

简介 当你启动一个新的服务器时,会创建一个名为 root 的默认账户。这个用户拥有完全的系统访问权限,应该仅用于管理任务。作为 root 用户,你基本上可以对系统做任何操作,这很强大,但也极其危险。Linux 没有“撤销”按…

Leetcode 73 矩阵置零

题目信息 LeetCode地址: . - 力扣(LeetCode) 题目理解 矩阵是m*n的,如果某个元素(i,j)等于0,则将第i行和第j列的所有元素都置零。既然如此,我们可以便利每一个元素,并记录下哪一行哪一列有零。记录完毕后…

【C++进阶】二叉搜索树(来自二叉树的复仇)

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:c大冒险 总有光环在陨落,总有新星在闪烁 [本节目标] 1. 二叉搜索树…

KaTex 常用公式编辑

原文:https://blog.iyatt.com/?p7854 注:语法上和 Latex 差不多一样,我是因为 WordPress 上使用 WP Githuber MD 插件,才用的 KaTex(插件里面的 LaTex 模块有 bug,无法渲染) 希腊字母 大写代…

MyBatis 参数重复打印的bug

现象 最近有个需求,需要在mybatis对数据库进行写入操作的时候,根据条件对对象中的某个值进行置空,然后再进行写入,这样数据库中的值就会为空了。 根据网上查看的资料,选择在 StatementHandler 类执行 update 的时候进…

C++之调用Python

1、配置头文件 Python安装目录下的include目录加入头文件目录。Visual Studio2022中操作路径是:属性–> C/C -> 常规-> 附加包含目录 C:\Users \AppData\Local\Programs\Python\Python39\include 2、配置lib库目录 要将Python39.lib加入编译链接。Visua…