【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation

简介: 《nnU-Net: 自适应框架用于基于U-Net的医学图像分割》是一篇2018年的论文,发表在Nature上。该研究提出了一种自适应的医学图像分割框架nnU-Net,能够自动调整模型的超参数以适应不同的数据集。通过2D和3D U-Net及级联U-Net的组合,nnU-Net在10个医学分割数据集上取得了卓越的性能,无需手动调整。该方法强调数据增强、预处理和训练策略等技巧,为医学图像分割提供了一个强大的解决方案。

【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation

image-20240821180027918

这是一个2018年的文章,其中很多医学图像分割领域的专家都知道的论文,虽然不是完全的小样本学习,我这里也还是放在这里做一个简单的笔记。牛逼的是,这个文章后面是发表在nature上的。

文章的地址:[1809.10486] nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation (arxiv.org)

代码的地址:github.com

摘要

nnU-Net 中的nn分别表示no和new,这个网络不能算作是小样本的医学图像分割方法,但是可以作为一种自适应的医学图像分割方法。该方法能够根据数据集的内容自动的修改模型的超参数,让你的unet模型更加适配你的数据集,从而可以得到一个比较sota的模型。这里作者实践出真知,在比赛中提供了10个数据集上都拿到了不错的成绩,并且这个模型中使用的一些tricks在后续的比赛中都可以借鉴。

U-Net于2015年推出。凭借其简单而成功的架构,它迅速发展成为医学图像分割中常用的基准。然而,U-Net对新问题的适应包括关于精确架构、预处理、训练和推理的几个自由度。这些选择不是相互独立的,并且会对整体性能产生重大影响。本文介绍了nnU-Net(“nonew-Net”),它是一种基于2D和3D vanilla U-Nets的鲁棒自适应框架。我们认为去掉许多网络设计中多余的花里胡哨,而把重点放在其他方面,使方法的性能和通用性。我们在医学分割十项挑战的背景下评估了nnU-Net,该挑战测量了包含不同实体、图像模式、图像几何形状和数据集大小的10个学科的分割性能,不允许在数据集之间进行手动调整。在稿件提交时,nnU-Net在挑战的在线排行榜上获得了所有类别和七个阶段1任务(脑瘤1类除外)的最高平均骰子分数。

当前的主要问题是很多医学图像分割的方法都是在各自的任务上设计了特殊的结构,才让各自的任务达到了最佳,但是这些方法切换一个任务效果就会下降很多。The Medical Segmentation Decathlon计划通过这种方式解决这个问题:希望参赛者设计一种算法,在10种数据集上进行测试,都能够达到很好的效果,而算法不能够针对某种数据集进行人为的调整,只能自动的去适应。

所以作者这里的方法没有侧重于网络结构,而是更多地侧重于tricks,包括数据增强、预处理和训练策略以及后处理方面。

作者提出的方法

模型方面

首先是模型方面,因为作者后面使用到了模型集成的技术,模型集成也就是使用了多个模型进行投票,按照作者原文的方法,作者通过排列组合的方式两两去组合模型,得到结果之后选择投票分数最高的进行预测,其中选择模型的依据是根据五折交叉验证中选择平均分数来决定。作者这里使用了3个模型,分别是2d-unet、3d-unet和作者提出的cascade-unet。

2d-unet : 直观地说,在3D医学图像分割的背景下使用2D U-Net似乎是次优的,因为沿着z轴的有价值的信息不能被聚合和考虑。然而,有证据表明,如果数据集是各向异性的,传统的3D分割方法的性能会下降

3d-unet: 3D U-Net似乎是选择3D图像数据的合适方法。在一个理想的世界里,我们会在病人的整个图像上训练这样一个架构。然而,在现实中,我们受到可用GPU内存数量的限制,这使得我们只能在图像补丁上训练这种架构。虽然对于由较小图像组成的数据集(按每个患者的体素数计算),如脑肿瘤、海马体和前列腺数据集来说,这不是问题,但对于具有大图像的数据集(如肝脏)来说,基于补丁的训练可能会阻碍训练。这是由于建筑的视野有限,因此无法收集足够的上下文信息,例如,正确区分肝脏的部分和其他器官的部分。

cascade-unet: 为了解决3D U-Net在大图像数据集上的这个实际缺点,我们另外提出了一个级联模型。因此,首先在下采样图像上训练3D U-Net(阶段1)。然后将该U-Net的分割结果上采样到原始体素间隔,并作为额外的(一个热编码)输入通道传递给第二个3D U-Net,后者在全分辨率的补丁上进行训练(阶段2)。

image-20240821173512311

网络自适应的策略是:我们从网络配置开始,我们知道它与我们的硬件设置一起工作。对于2D U-Net,该配置是输入补丁大小为256×256,批处理大小为42,最高层中有30个特征图(每次下采样特征图的数量增加一倍)。我们自动将这些参数调整到每个数据集的中位数平面大小(其中我们使用平面内间距最小的平面,对应于最高分辨率),以便网络有效地在整个切片上进行训练。我们将网络配置为沿着每个轴进行池,直到该轴的特征映射大小小于8(但不超过最多6个池化操作)。就像2D U-Net一样,我们的3D U-Net使用最高分辨率层的30个特征图。这里我们从输入补丁大小为128 × 128 × 128的基本配置开始,批处理大小为2。由于内存限制,我们没有将输入补丁体积增加到1283体素以上,而是将输入补丁大小的纵横比与数据集体素中位数大小的纵横比相匹配。如果数据集的中位数形状小于1283,那么我们使用中位数形状作为输入patch大小并增加批大小(以便处理的体素总数与128 × 128 × 128和批大小为2相同)。就像2D U-Net一样,我们沿着每个轴进行池(最多5次),直到特征地图具有大小8. 对于任何网络,我们将每个优化器步骤处理的体素总数(定义为输入补丁体积乘以批处理大小)限制为最大值数据集的5%。对于过多的情况,我们减少批大小(下界为2)。

通过这样的设计得到的网络结构如下:

image-20240821175228151

另外作者还采用了切片、重采样、归一化等一系列的技术保证数据的分布尽可能科学。切片之后可能会导致网络中有大量的背景类存在,为此,为了提高网络训练的稳定性,我们强制要求批处理中超过三分之一的样本至少包含一个随机选择的前景类。推理的时候使用五折交叉验证,验证之后的结果通过后处理来进行操作,对训练数据进行所有地面真值分割标签的连通成分分析。如果一个类在所有情况下都位于单个连接的组件中,则此行为将被解释为数据集的一般属性。因此,在相应数据集的预测图像上,除了最大的连接组件外,该类的所有组件都被自动删除。以及最终的结果由多个模型投票得出。

本方法的一些效果

作者给出了在榜单上的效果,可以说是遥遥领先。

image-20240821175558388

结论

总的来说,是一份非常工程化的论文,也可以说是非常实际化的一篇论文,除了论文之外,很多比赛、项目都是要效果的。同样的,在这样的基础上,可以将现在的一系列的sam、transoformer的方法移动到这个二阶段的分割网络上面,从小样本或者单纯网络结构改进的角度出来,应该可以得到不错的效果。

目录
相关文章
|
11天前
使用的是.NET Framework 4.0,并且需要使用SMTP协议发送电子邮件
使用的是.NET Framework 4.0,并且需要使用SMTP协议发送电子邮件
28 1
|
23天前
|
C#
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
2月前
|
开发框架 缓存 前端开发
实战.NET Framework 迁移到 .NET 5/6
从.NET Framework 迁移到.NET 5/6 是一次重要的技术革新,涵盖开发环境与应用架构的全面升级。本文通过具体案例详细解析迁移流程,包括评估现有应用、利用.NET Portability Analyzer 工具识别可移植代码、创建新项目、逐步迁移代码及处理依赖项更新等关键步骤。特别关注命名空间调整、JSON 序列化工具更换及数据库访问层重构等内容,旨在帮助开发者掌握最佳实践,确保迁移过程平稳高效,同时提升应用性能与可维护性。
82 2
|
2月前
|
开发框架 JSON 监控
实战指南:从 .NET Framework 迁移到 .NET 5/6 的策略与最佳实践
【8月更文挑战第28天】从 .NET Framework 迁移到 .NET 5/6 是一次重要的技术升级,涉及开发环境与应用架构的改进。本文通过具体案例分析,介绍迁移策略与最佳实践,帮助开发者顺利完成转变。
55 1
|
2月前
|
缓存 程序员
封装一个给 .NET Framework 用的内存缓存帮助类
封装一个给 .NET Framework 用的内存缓存帮助类
|
2月前
|
XML JSON 程序员
总结一下 .NET FrameWork 和 .NET Core 创建的项目的不同点
总结一下 .NET FrameWork 和 .NET Core 创建的项目的不同点
|
2月前
|
消息中间件 开发框架 .NET
闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?
闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?
|
2月前
|
开发框架 前端开发 .NET
闲话 .NET(3):.NET Framework 的缺点
闲话 .NET(3):.NET Framework 的缺点
|
1月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
32 7
|
1月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
44 0