论文阅读——Loss odyssey in medical image segmentation

Loss odyssey in medical image segmentation

github:https://github.com/JunMa11/SegLossOdyssey

这篇文章回顾了医学图像分割中的20种不同的损失函数,旨在回答:对于医学图像分割任务,我们应该选择哪种损失函数?

首先是一张各类分割函数的图谱:

介绍函数之前先定义字母符号的含义:

分别代表分割结果和GT,代表里面的每个体素,N是一张图片体素数量,C是类别

损失函数分为四类:即分布不匹配,区域、边界或它们的某种组合。

1. Distribution-based Loss 

基于分布的损失函数旨在最小化两个分布之间的不相似性。以交叉熵cross entropy为代表。

1.1. Cross entropy

对于CNN模型,可以写为:

加权版——Weighted cross entropy (WCE)(2015):

,一般和类别占得比例成反比,本文实验中使用类别比例的倒数。另一种使用加权交叉熵的方式是根据GT对每个像素加权。

1.2. TopK loss(2016)

t∈ (0, 1]是个阈值,也就是说,容易分类的像素点(概率>t)被忽略了,另一个实现版本:

本文实验中k=10%

1.3. Focal loss(2018)

通过减少已经分好类的样本的损失来关注困难样本,可以处理前景背景类别不平衡的情况。原始论文中给出γ=2表现最好。

1.4. Distance map penalized cross entropy loss (DPCE)

具体地,通过取GT的距离变换的逆来生成Dc。通过这种方式,可以为边界上的像素分配更大的权重。

DPCE损失通过从GT掩码导出的距离图来加权交叉熵。它旨在引导网络将重点放在难以分割的边界区域。

2. Region-based Loss

基于区域的损失函数旨在最小化GT和预测S之间的不匹配或最大化两者的重叠区域。最有代表性的是Dice loss。

2.1. Sensitivity-specificity loss(2015)

将特异性加权得更高来解决类别失衡问题。w控制敏感性和特异性的平衡。

2.2. Dice loss(2016)

有两个变体:

直接优化Dice Similarity Coefficient (DSC)。与加权交叉熵不同,Dice损失不需要对不平衡分割任务进行类重新加权。

2.3. IoU (Jaccard) loss(2016)

和Dice loss很相似,也是直接优化目标类别的分割指标。

2.4. Lovász loss

定义类c ∈ C的像素误差:

与IoU损失类似,Lovasz损失也是直接优化Jaccard指数,但它使用了不同的替代策略。特别地,IoU损失(也称为软Jaccard)简单地用softmax概率代替Jaccard索引中的分割,while Lovász loss  uses a piecewise linear convex surrogate to the IoU loss based on the Lovász extension of submodular set functions。

2.5. Tversky loss

这个是改进的Dice loss,旨在得到更好的P、R的平衡,强调错误的负类样本。α,β是超参数,控制false negatives and false positives的平衡。

2.6. Generalized Dice loss

,is used to provide invariance to different label set properties.用于为不同的标签集属性提供不变性。

这个损失函数是多类别Dice loss的扩展,每个类别的权重与标签频率成反比。

2.7. Focal Tversky loss

γ∈[1, 3]。把focal loss用在Tversky loss上,使得困难样本概率低。

2.8. Asymmetric similarity loss

原始论文中β=1.5。当α+β=1时变为Tversky loss的一个特例。

Dice loss可以被视为准确度和召回率的调和平均值,它对假阳性(FP)和假阴性(FN)的权重相等。Asymmetric similarity loss的动机是通过引入加权参数β来更好地调整FPs和FNs的权重(并在精度和召回率之间实现更好的平衡)。

2.9. Penalty loss

,k is a non-negative penalty coefficient. When k = 0, pGD is equivalent to generalized Dice. When k > 0, pGD gives additional weights to false positives and false negatives. In the original paper (Su et al., 2019), k = 2.5 corresponds the best performance.

3. Boundary-based Loss

基于边界的损失函数,相对比较新,旨在最小化预测S和GT之间的距离。

3.1. Boundary (BD) loss(2019,2021)

有两种不同的框架来计算两个边界之间的距离。一种是微分框架,它将边界曲线上每个点的运动计算为沿曲线法线的速度。另一种是积分框架,通过计算两个边界的失配区域之间的界面上的积分来近似距离。微分框架不能直接用作网络softmax输出的损失,因为它是不可微分的。为了以微分的方式计算两个边界之间的距离,Boundary (BD) loss 使用积分框架来公式化边界失,这可以避免涉及边界曲线点的局部微分计算。

3.2. Hausdorff Distance (HD) loss

Hausdorff Distance (HD)距离是一种基于边界的度量,广泛用于评估分割方法。然而,在训练过程中直接最小化HD是难以解决的,并可能导致训练不稳定。为了解决这个问题,HD可以通过GT距离变换来近似。网络可以通过以下HD损失功能进行训练,以减少HD:

dG and dS分别是GT和预测分割的距离变换地图。距离变换计算了每个像素与对象边界之间的最短距离。

上面这两种边界损失用于训练神经网络时,应与基于区域的损失(例如Dice loss)相结合,以减少训练的不稳定性。

4. Compound Loss

混合损失是上面这些损失函数的加权。

4.1. Combo loss

4.2. Exponential Logarithmic loss (ELL)

对Dice损失和交叉熵损失进行指数和对数变换。通过这种方式,可以迫使网络在本质上更多地关注不太准确预测的结构。

4.3. Dice loss with focal loss

4.4. Dice loss with TopK loss

此外,文章还提到了有其他方法,一笔带过,未列出公式。

实验

3D U-Net+数据增强+Adam

三种损失函数在训练过程中需要额外的调度策略:Lova´sz loss, boundaries loss, and Hausdorff distance loss。对于 Lova´sz loss, 原论文作者建议先用交叉熵优化,然后用Lova´sz loss微调;对于 boundary loss 和 Hausdorff distance loss 应该和 Dice loss 结合使用:

α, β > 0。对于边界损失,(Kervadec et al.,2019)建议使用Dice损失来主导初始训练,从而稳定训练过程,快速获得合理的初始分割。具体来说,他们最初设置权重β=1−α和α=1,并在每个epoch后将α减少0.01,直到达到0.01的值。对于Hausdorff距离损失,(Karimi和Salcudean,2020)将α设置为基于HD的损失项的平均值与DSC损失项的均值之比,并且β=1。最近的一项实证研究(Ma et al.,2020)表明,实施细节会对绩效产生显著影响。在我们的实验中,我们首先用Dice损失对网络进行训练,然后用建议的调度策略对BD损失和HD损失进行微调,因为我们发现这种训练技巧可以获得稳健的训练过程,并给出最佳性能。所有其他17个损失函数都可以在训练期间以即插即用的方式使用,而无需任何特定的调度技巧。

在四个分割数据集评估,包括balanced and imbalanced foreground-background, binary and multi-class segmentation. 类别平衡的、不平衡的、二分类的多分类的都包括了。

数据集情况:

评估指标:Dice similarity coefficient 和 Normalized Surface Distance (NSD)

实验结果

1. Single segmentation task

1.1. Mildly imbalanced segmentation

Mildly imbalanced segmentation结果只看liver数据集上的结果。

大多数损失函数(17/20)在DSC高于0.90的情况下获得高度准确的结果。

DiceTopK损失获得最佳DSC和NSD,而pGDice损失获得最低DSC,TopK损耗在DSC和NSD中都获得最低的性能。

图2显示TopK loss 和 pGDice loss方差比较大。图3是失败示例,显示TopK loss 和 pGDice loss倾向于过度分割。

1.2. Highly imbalanced tumor segmentation

看liver tumor数据集上的结果。DiceHD,DiceBD表现比较好。加权交叉熵表现不好。

1.3. Highly imbalanced organ segmentation

DiceFocal loss表现最好,交叉熵不好。

1.4. Multi-class segmentation with both mildly and highly imbalanced labels

研究包含轻度和高度不平衡标签的多类分割任务

DiceFocal loss, DiceHD loss, and DiceTopK loss表现好

2. Different variants of TopK loss

除了liver数据集,其他的k=10%效果比较好,但是liver数据集需要90%,作者分析的原因是liver数据集在训练期间仅使用10%的像素对于肝脏是不够的,因为肝脏非常大(最大的腹部器官)。然而,在这项工作中,我们主要关注标签不平衡的任务。因此,我们选择TopK-10%的损失作为默认的TopK损失,因为它在具有挑战性的分割任务中获得了更好的性能。

所以应该就是说,标签不平衡的比较严重的话,k小一些,否则就大一些。

3. Different variants of Dice loss

4. Rank Results

作者自己设计了一套排序规则(具体看原文吧),然后给这些指标排序:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Kettle 完成数据 ETL

文章目录 使用 Kettle 完成数据 ETL数据清洗数据处理 使用 Kettle 完成数据 ETL 现在我们有一份网站的日志数据集,准备使用Kettle进行数据ETL。先将数据集加载到Hadoop集群中,然后对数据进行清洗,最后加载到Hive中。 在本地新建一个数据集文…

解决vscode中html部分无法嵌套注释

不管是React项目还是Vue项目,相信你一定遇到过同样的问题,如果想要注释的结构内部也存在注释,那么编译器会报以下问题 使用 HTML-Comment 这个插件即可解决问题 选中需要注释的区域并根据系统输入快捷键,可以发现就算嵌套了注释…

【论文解读】角色动画的一致可控的图像到视频合成

论文:https://arxiv.org/pdf/2311.17117.pdf 代码:https://github.com/HumanAIGC/AnimateAnyone 图片解释:给定参考图像(每组中最左边的图像)的一致且可控的角色动画结果。我们的方法能够对任意角色进行动画处理&#…

人工智能原理复习--不确定推理

文章目录 上一篇不确定推理概述主观Bayes(贝叶斯)方法可信度方法证据理论下一篇 上一篇 人工智能原理复习–确定性推理 不确定推理概述 常识具有不确定性。 常识往往对环境有极强的依存性。 其中已知事实和知识是构成推理的两个基本要素,不确定性可以理解为在缺…

Makefile初学之谜之隐式规则

刚开始学习Make教程:https://makefiletutorial.vercel.app/#/docs/fancy-rules,里面有个sample: objects foo.o bar.o all.o all: $(objects)# These files compile via implicit rules foo.o: foo.c bar.o: bar.c all.o: all.call.c:echo "int…

python--自动化办公(Word)

python自动化办公之—Word python-docx库 1、安装python-docx库 pip install python-docx2、基本语法 1、打开文档 document Document() 2、加入标题 document.add_heading(总标题,0) document.add_heading(⼀级标题,1) document.add_heading(⼆级标题,2) 3、添加文本 para…

Spring IOC—基于XML配置和管理Bean 万字详解(通俗易懂)

目录 一、前言 二、通过类型来获取Bean 0.总述(重要) : 1.基本介绍 : 2.应用实例 : 三、通过指定构造器为Bean注入属性 1.基本介绍 : 2.应用实例 : 四、通过p命名空间为Bean注入属性 1.基本介绍 : 2.应用实例 : 五、通过ref引用实现Bean的相…

手机也能“敲”代码?

除了PC个人电脑外,很多电子产品也可以实现代码的编辑,比如智能手机。现在主流的手机操作系统只有两种,一种是大部分手机厂商选择的安卓系统,另外一种是苹果公司独创的ios操作系统。而Android系统是基于Linux开发的专属于移动设备的…

【Leetcode题单】(01 数组篇)刷题关键点总结03【数组的改变、移动】

【Leetcode题单】(01 数组篇)刷题关键点总结03【数组的改变、移动】(3题) 数组的改变、移动453. 最小操作次数使数组元素相等 Medium665. 非递减数列 Medium283. 移动零 Easy 大家好,这里是新开的LeetCode刷题系列&…

Java数据结构之《构造哈夫曼树》题目

一、前言: 这是怀化学院的:Java数据结构中的一道难度中等(偏难理解)的一道编程题(此方法为博主自己研究,问题基本解决,若有bug欢迎下方评论提出意见,我会第一时间改进代码,谢谢!) 后面其他编程题…

【蓝桥杯】翻硬币

翻硬币 思路&#xff1a; 其实有点贪心的意思&#xff0c;依次比较&#xff0c;不同就1&#xff0c;然后修改自己的字符串和下一个的字符串&#xff0c;再匹配。 #include<iostream> #include<string> using namespace std;string now,res;int main(void) {cin&g…

MQ - 消息系统

消息系统 1、消息系统的演变 在大型系统中&#xff0c;会需要和很多子系统做交互&#xff0c;也需要消息传递&#xff0c;在诸如此类系统中&#xff0c;你会找到源系统&#xff08;消息发送方&#xff09;和 目的系统&#xff08;消息接收方&#xff09;。为了在这样的消息系…

java高校实验室排课学生考勤系统springboot+vue

随着各高校办学规模的迅速扩大,学科专业的不断拓宽,传统的实验教学和实验室管理方法已经不能适应学校管理的要求,特别是化学实验室的管理,化学实验室仪器药品繁杂多样,管理任务繁重,目前主要使用人工记录方法管理,使用不便,效率低下,而且容易疏漏.时间一长将产生大量的文件和数…

【面试经典150 | 二分查找】搜索二维矩阵

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;二分查找 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等…

c# OpenCV 读取、显示和写入图像(二)

读取、显示和写入图像是图像处理和计算机视觉的基础。即使在裁剪、调整大小、旋转或应用不同的滤镜来处理图像时&#xff0c;您也需要先读取图像。因此&#xff0c;掌握这些基本操作非常重要。 imread()读取图像imshow()在窗口中显示图像imwrite()将图像保存到文件目录里 我们…

细说CountDownLatch

CountDownLatch 概念 CountDownLatch可以使一个获多个线程等待其他线程各自执行完毕后再执行。 CountDownLatch 定义了一个计数器&#xff0c;和一个阻塞队列&#xff0c; 当计数器的值递减为0之前&#xff0c;阻塞队列里面的线程处于挂起状态&#xff0c;当计数器递减到0时…

力扣226:翻转二叉树

力扣226&#xff1a;翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; 输入&#xff1a;root [2,1,3]…

分享一个国内可用的免费AI-GPT网站

背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具&#xff0c;近期的热度直接沸腾&#x1f30b;。 我们也忍不住做了一个基于ChatGPT的网站&#xff0c;可以免登陆&#xff01;&#xff01;国内可直接对话AI&#xff0c;也有各种提供工作效率的工具供大家使用。 可以这…

判断二叉树是否为完全二叉树

具体思路&#xff1a; 将二叉树层序遍历&#xff08;节点&#xff09;插进队列中&#xff0c;遇到空时就break&#xff08;退出循环&#xff09;&#xff0c;再重新遍历一遍&#xff0c;若空的后面又再次出现数据&#xff0c;则返回false&#xff08;不是完全二叉树&#xff0…

SpringSecurity和JWT实现认证和授权

SpringSecurity和JWT实现认证和授权 框架介绍SpringSecurityJWT组成实例JWT实现认证和授权的原理 Hutool 使用表整合SpringSecurity及JWT在pom.xml中添加依赖添加JWT token的工具类添加RbacAdminService&#xff1a;添加自定义mapper创建SpringSecurity配置类添加ProjectSecuri…
最新文章