Dice Loss

news2025/1/11 20:51:49

导读

​ Dice Loss是由 Dice 系数而得名的,Dice系数是一种用于评估两个样本相似性的度量函数,其值越大意味着这两个样本越相似,Dice系数的数学表达式如下:
 Dice  = 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ \text { Dice }=\frac{2|X \cap Y|}{|X|+|Y|}  Dice =X+Y2∣XY

其中, ∣ X ∩ Y ∣ |X \cap Y| XY 表示 X 和 Y 之间交集元素的个数, ∣ X ∣ |X| X ∣ Y ∣ |Y| Y 分别表示 X,Y 中元素的个数。Dice Loss 表达式如下:

 DiceLoss  = 1 −  Dice  = 1 − 2 ∣ X ∩ Y ∣ ∣ X ∣ + ∣ Y ∣ \text { DiceLoss }=1-\text { Dice }=1-\frac{2|X \cap Y|}{|X|+|Y|}  DiceLoss =1 Dice =1X+Y2∣XY

语义分割下的dice loss

​ Dice Loss常用于语义分割问题中,计算公式不变,但是变量含义有所改变。 X \mathrm{X} X 表示真实分割图像的像素标签, Y \mathrm{Y} Y 表示模型预测分割图像的像素类别。 Y \mathrm{Y} Y 只有 0,1 两个值,0表示像素点不是目标类,1表示像素点是目标类。 ∣ X ∩ Y ∣ |X \cap Y| XY 近似为预测图像的像素与真实标签图像的像素之间的点乘,并将点乘结果相加, ∣ X ∣ |X| X ∣ Y ∣ |Y| Y​ 分别近似为它们各自对应图像中的像素相加。故有公式:
 DiceLoss  = 1 − 2 ∑ i = 1 N y i y ^ i ∑ i = 1 N y i + ∑ i = 1 N y i ^ \text { DiceLoss }=1-\frac{2 \sum_{i=1}^N y_i \hat{y}_i}{\sum_{i=1}^N y_i+\sum_{i=1}^N \hat{y_i}}  DiceLoss =1i=1Nyi+i=1Nyi^2i=1Nyiy^i

注意,dice loss通常是不计算背景类的。

​ 对于多分类问题,对 label 进行 one hot 编码,生成多个 label 图,每个类别对应一个二分类label图。通过计算每个类别的 Dice Loss 损失,最后再求均值即得到多分类的 Dice Loss 损失。

等价F1-score

​ 假设有两个集合 A A A B B B , Dice系数定义为:
Dice ⁡ ( A , B ) = 2 ∣ A ∩ B ∣ ∣ A ∣ + ∣ B ∣ \operatorname{Dice}(A, B) =\frac{2|A \cap B|}{|A|+|B|} Dice(A,B)=A+B2∣AB
A ∩ B A \cap B AB 表示预测结果与真实标签的交集,在二分类问题中等于正确预测为正类的数量 TP 。而 F P FP FP 表示预测为正类但实际上是负类的数量 (属于A,但不属于B) , F N FN FN 表示预测为负类但实际上是正类的数量 (属于B,但不属于A) ,故又有
2 ∗ T P + F P + F N = ∣ A ∣ + ∣ B ∣ 2* \mathrm{TP}+\mathrm{FP}+\mathrm{FN} = |A|+|B| 2TP+FP+FN=A+B
故有,
D i c e = 2 ∗ T P 2 ∗ T P + F P + F N Dice = \frac{2 * TP}{2 * TP + FP + FN} Dice=2TP+FP+FN2TP
,该公式正好等于 F1-score。

二分类例子

​ 假设模型输出的预测值如下

在这里插入图片描述标签 label 如下(0 即对应背景,表示不属于某一类,1 表示属于某一类):
在这里插入图片描述计算类别1的dice:
∣ X ∩ Y ∣ = [ 0.5322 0.4932 0.1764 0.3107 0.5297 0.1604 0.3841 0.3537 0.3574 0.3323 0.8301 0.6436 ] ⋆ [ 0 0 0 0 0 0 1 1 1 1 1 1 ] = [ 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.3841 0.3537 0.3574 0.3323 0.8301 0.6436 ] → 2.9012  (求和)  \begin{aligned} |\mathrm{X} \cap \mathrm{Y}| & =\left[\begin{array}{lll} 0.5322 & 0.4932 & 0.1764 \\ 0.3107 & 0.5297 & 0.1604 \\ 0.3841 & 0.3537 & 0.3574 \\ 0.3323 & 0.8301 & 0.6436 \end{array}\right] \star\left[\begin{array}{lll} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{array}\right] \\ \\ & =\left[\begin{array}{lll} 0.0000 & 0.0000 & 0.0000 \\ 0.0000 & 0.0000 & 0.0000 \\ 0.3841 & 0.3537 & 0.3574 \\ 0.3323 & 0.8301 & 0.6436 \end{array}\right] \rightarrow 2.9012 \text { (求和) } \end{aligned} XY= 0.53220.31070.38410.33230.49320.52970.35370.83010.17640.16040.35740.6436 001100110011 = 0.00000.00000.38410.33230.00000.00000.35370.83010.00000.00000.35740.6436 2.9012 (求和

∣ X ∣ = [ 0.5322 0.4932 0.1764 0.3107 0.5297 0.1604 0.3841 0.3537 0.3574 0.3323 0.8301 0.6436 ] → 5.1038 |\mathrm{X}|=\left[\begin{array}{lll} 0.5322 & 0.4932 & 0.1764 \\ 0.3107 & 0.5297 & 0.1604 \\ 0.3841 & 0.3537 & 0.3574 \\ 0.3323 & 0.8301 & 0.6436 \end{array}\right] \rightarrow 5.1038 X= 0.53220.31070.38410.33230.49320.52970.35370.83010.17640.16040.35740.6436 5.1038

∣ Y ∣ = [ 0 0 0 0 0 0 1 1 1 1 1 1 ] → 6 |Y|=\left[\begin{array}{lll} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{array}\right] \rightarrow 6 Y= 001100110011 6

所以 Dice 系数为
D = 2 ∗ ∣ X ∩ Y ∣ + 1 ∣ X ∣ + ∣ Y ∣ + 1 = 2 ∗ 2.9012 + 1 5.1038 + 6 + 1 = 0.5620 \mathrm{D}=\frac{2 *|\mathrm{X} \cap \mathrm{Y}|+1}{|\mathrm{X}|+|\mathrm{Y}|+1}=\frac{2 * 2.9012+1}{5.1038+6+1}=0.5620 D=X+Y+12XY+1=5.1038+6+122.9012+1=0.5620
所以 Dice 损失 L = 1 − D = 0.4380 \mathrm{L}=1-\mathrm{D}=0.4380 L=1D=0.4380

优点

​ Dice Loss 可以缓解样本中前景背景(面积)不平衡带来的消极影响,前景背景不平衡也就是说图像中大部分区域是不包含目标的,只有一小部分区域包含目标。Dice Loss训练更关注对前景区域的挖掘,即保证有较低的FN,但会存在损失饱和问题,而CE Loss是平等地计算每个像素点的损失,当前点的损失只和当前预测值与真实标签值的距离有关,这会导致一些问题(见Focal Loss)。因此单独使用Dice Loss往往并不能取得较好的结果,需要进行组合使用,比如Dice Loss+CE Loss或者Dice Loss+Focal Loss等。

代码

def Dice_loss(inputs, target, beta=1, smooth = 1e-5):
    n, c, h, w = inputs.size()
    nt, ht, wt, ct = target.size()
    if h != ht and w != wt:
        inputs = F.interpolate(inputs, size=(ht, wt), mode="bilinear", align_corners=True)
        
    temp_inputs = torch.softmax(inputs.transpose(1, 2).transpose(2, 3).contiguous().view(n, -1, c),-1)
    temp_target = target.view(n, -1, ct)
 
    #--------------------------------------------#
    #   计算dice loss
    #--------------------------------------------#
    tp = torch.sum(temp_target[...,:-1] * temp_inputs, axis=[0,1])
    fp = torch.sum(temp_inputs                       , axis=[0,1]) - tp
    fn = torch.sum(temp_target[...,:-1]              , axis=[0,1]) - tp
 
    score = ((1 + beta ** 2) * tp + smooth) / ((1 + beta ** 2) * tp + beta ** 2 * fn + fp + smooth)
    dice_loss = 1 - torch.mean(score)
    return dice_loss

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

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

相关文章

Windows10完全卸载oracle19c

Windows10完全卸载oracle19c 1.停止服务2.卸载产品3.清理注册表4.清理环境变量5.清理文件夹 1.停止服务 winR输入service.msc进入服务列表,停止所有的服务 2.卸载产品 点击开始菜找到Oracle,然后点击Oracle安装产品,再点击Universal Inst…

如何安装PHP框架

目录 什么是PHP框架 第一步 安装PHP依赖包 第二步 导入PHP相关包 第三步 解包并切换进指定目录 第四步 在PHP目录内编译安装 第五步 编译 第六步 拷贝配置文件进行编辑 第七步 修改时区 第八步 修改文件指定路径 第九步 将命令加入指定目录进行识别 第十步 进入配置…

【Flutter】Audioplayers 4.1.0 简要使用说明

文章目录 一、前言二、安装和设置三、基本使用1.创建 AudioPlayer 实例2.设置音频源3.控制播放 四、示例代码五、总结 一、前言 Audioplayers 是一个非常实用的 Flutter 插件,它可以帮助我们在 Flutter 应用中播放音频。无论你是想在你的应用中添加背景音乐&#x…

【Python】在同一图形中更加优雅地绘制多个子图

1. 引言 数据可视化非常重要,有一句俗语叫做一图顶千言,我相信好多小伙伴应该都听说过这句话;即使是有人第一次听到,我想应该也会觉得赞成,这足以说明数据可视化的重要性。我们在前一篇博客中,介绍了如何利…

C语言基础 位域

C语言基础:位域 主题:位域(bit-field) 关键字:位域 冒号 结构体 存储空间 参考链接:C语言中文网:位域 、C菜鸟工具(在线编译器)、位域知乎问答 注:以下内容中…

VM安装linux虚拟机宿主机连接不上虚拟机问题处理及静态ip设置

VM安装linux虚拟机宿主机连接不上虚拟机问题处理 用 vm安装linux虚拟机宿主机连不上虚拟机,ipconfig宿主机发现VMnet1以及VMnet8的Ip都变成了169.254开头的地址,网上各种方式都试了都不行,要么 是 虚拟机连不上网,要么 是宿主机连…

金融测试岗面试有多难?我有秘招……

最近发现好多人都喜欢往金融测试岗跑,看来是真的很香了,但是你们知不知道面试金融测试岗还是很难的,如果想去面试真的要多做些了解再去,我在这里总结了一份面试文档分享给大家,若有需要,【留言777】即可。 …

windows 系统加固

其实Windows和Linux加固的方法都差不多 1.防火墙 1.防火墙的开启 2.入站规则进行设置 对一些端口更改后可以使用telnet 进行检测端口是否开放 2.安装杀毒软件 3.扫描漏洞,打补丁 一般漏洞扫描可以借用第三方平台对系统漏洞进行扫描。 开启补丁的自动更新 4.用…

【css系列】八股2023/6/18

1.说说设备像素、css像素、设备独立像素、dpr、ppi 之间的区别? css 像素:长度单位,在css规范中,长度单位分为两类:绝对单位 和 相对单位。 设备像素:物理像素,指设备能控制显示的最小物理单位…

计算机视觉的应用8-基于ResNet50对童年数码宝贝的识别与分类

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用8-基于ResNet50对童年数码宝贝的识别与分类,想必做完90后的大家都看过数码宝贝吧,里面有好多类型的数码宝贝,今天就给大家简单实现一下,他们的分类任…

计网大题(6/18)

1.奈奎斯特定理和香农公式 1.奈奎斯特 B1/T ,T是波特 ,B成为波特率 奎氏定理:R2Wlog2(N) (W是理想信道带宽,单位是hz) 香农公式 R是最大信道容量 信道带宽是W 信噪比是S/N ,(S是平均信号功率…

kotlin学习(二)泛型、函数、lambda、扩展、运算符重载

文章目录 泛型&#xff1a;in、out、where型变&#xff08;variance&#xff09;不变&#xff08;Invariant&#xff09;协变&#xff08;Covariant&#xff09;Java上界通配符<? extends T>Kotlin的关键词 outUnsafeVariance 逆变&#xff08;Contravariant&#xff09…

Portraiture4.1智能磨皮滤镜插件下载安装使用教程

ps磨皮插件portraiture是一款用于修饰人像照片的插件&#xff0c;可以在Photoshop中使用。它可以通过智能算法来自动识别照片中的肤色区域&#xff0c;然后对其进行磨皮处理&#xff0c;使得肌肤更加光滑细腻。不需要像曲线磨皮、中性灰磨皮那样需要复杂的操作&#xff0c;轻轻…

JavaScript之函数 (七):认识JavaScript函数、函数的声明和调用、函数的递归调用、局部和全局变量、函数表达式的写法、立即执行函数使用

1. 认识JavaScript函数 1.1 程序中的foo、bar、baz 在国外的一个问答网站stackover flow中&#xff0c;常常会使用这几个次进行变量&#xff0c;函数&#xff0c;对象等等声明&#xff0c;地位如同张三&#xff0c;李四&#xff0c;王五。foo、bar这些名词最早从什么时候、地…

【MySQL入门】-- 认识MySQL存储引擎

目录 1.MySQL存储引擎有什么用&#xff1f; 2.MySQL的存储引擎有哪些&#xff1f;分别有什么特点&#xff1f; 3.存储引擎的优缺点 4.关于存储引擎的操作 5. 存储引擎的选择&#xff1f; 6.InnoDB和MyISAM区别&#xff1f; 7.官方文档 1.MySQL存储引擎有什么用&#xff…

2022 年第十二届 MathorCup 高校数学建模挑战赛D题思路

目录 一、前言 二、问题背景 三、问题 四、解题思路 &#xff08;1&#xff09;针对问题1&#xff1a; &#xff08;2&#xff09;针对问题2&#xff1a; &#xff08;3&#xff09;针对问题3&#xff1a; 五、附上几个典型代码 &#xff08;1&#xff09;K-means算法…

文献阅读:Foundation Transformers

文献阅读&#xff1a;Foundation Transformers 1. 文章简介2. 模型结构 1. Sub-LN2. Initialization 3. 实验效果 1. NLP任务 1. 语言模型上效果2. MLM模型上效果3. 翻译模型上效果 2. Vision任务上效果3. Speech任务上效果4. 图文任务上效果 4. 结论 & 思考 文献链接&…

卡尔曼滤波器使用原理以及代码编写

注&#xff1a;要视频学习可以去B站搜索“DR_CAN”讲解的卡尔曼滤波器&#xff0c;深有体会&#xff01; 一、为啥需要卡尔曼滤波器 卡尔曼滤波器在生活中应用广泛&#xff0c;因为在我们生活中存在着不确定性&#xff0c;当我去描述一个系统&#xff0c;这个不确定性就包涵一…

源码编译LAMP与论坛安装

目录 Apache网站服务&#xff08;著名的开源Web服务软件&#xff09; Apache的主要特点 软件版本 如何创建论坛 安装相关服务Apache 安装MySQL数据库 安装PHP框架 然后进行论坛安装 第一步 先进入到MySQL内 第二步 授权bbs数据库 第三步 刷新数据库 第四步 解压指定…

【Windows】虚拟串口工具VSPD7.2安装

【Windows】虚拟串口工具VSPD7.2安装 1、背景2、VSPD7.2安装3、创建虚拟串口 1、背景 ​Virtual Serial Ports Driver​是由著名的软件公司Eltima制作的一款非常好用的​虚拟串口工具​&#xff0c;简称&#xff1a;VSPD。 VSPD其功能如同 Windows机器上COM 串行端口的仿真器…