[深度学习论文笔记] nnU-Net: Breaking the Spell on Successful Medical Image Segmentation(nnunet)

[深度学习论文解读] nnU-Net: Breaking the Spell on Successful Medical Image Segmentation
(nnU-Net: 破除魔咒,一个成功的医学图象分割技术)
Published:2019
论文:https://arxiv.org/pdf/1904.08128v1.pdf
论文:https://arxiv.org/pdf/1809.10486
代码:https://github.com/MIC-DKFZ/nnunet

一、基本介绍
1.1历史背景
语义分割现在是个热门话题,在医学图象领域70%的国际比赛都是关于这个。引起人们长期兴趣的原因很显然是医学图像领域中遇到的数据集的多样性和独特性。当考虑图像的大小、尺寸、分辨率、体素强度等等,数据集之间的差别常常变得非常之大。 传统的图像标签常常十分地失衡,而且可以是非常模棱两可的,而且医学专家标注的结果,在不同的数据集上,也常常是千差万别的。不仅如此,某些数据集在图像几何和形状等属性上非常不同,切片不对齐和各向异性的问题也非常地严重。总结起来就是,在医学图像上,想泛化一些具有普适性方法是非常地困难。 想要做出新的设计和调整新的设计是非常地难的,而且很多的设计的决定之间的依赖关系非常低复杂。

1.2 问题根源
一些常见的很优秀的案例:跳跃连接skip connection的变种,首先被引入到U-Net中,其中包括残差连接residual connections。 注意力机制,额外的损失层。特征图重校等。这些修改彼此之间差别很大,但是大多都是聚焦在结构上。一方面是大量的论文被发表,另一方面是大量的千差万别的数据集,越来越难以确定到底哪些设计才是真正适用于所有数据集的好办法。
医疗图像领域一个很关键的问题是,对一个旧问题,迁移到新问题的时候,这一过程常常是人为驱动的。大量的论文只会关注于结构的改善,而对超参数则常常略微提及,超参数的不足常由结构的改良所抵消。因为强烈的特定问题的依赖性,和超参数空间里的局部最优使得优化一个普适的办法十分地困难。

1.3 nnunet
提出了一个叫做no-new-Net(nnU-Net)的分割结构,包括一套能够自动适应新数据集的办法。根据对数据集的自动分析,nnU-Net自动设计网络和执行训练流程。在标准原始的U-Net网络结构下,认定一套系统地,精心挑选的超参数会产生极具竞争力的表现。实际上,没有任何人工调参操作,取得了state of the art的表现,在很多高规格医学分割比赛上都是如此。

二、解决思路
2.1 分割算法
一个分割算法可以表示为function fθ(x) = ˆy ,x表示图片,ˆy表示对应的分割结果,θ是训练和应用方法对应的超参数。θ 的维度可以非常高,囊括了预训练的全部实验流程。其他的论文大多聚焦在报告和证实有关θ的超参数的选择上,理想情况下会提供源代码以覆盖全部的θ。
这种做法,缺乏对于问题深入的了解,因为由于不同的数据集的不同属性,θ必须做出变化。这里做出了第一次的尝试,试图将这个过程正规化。提出一个function g(X,Y)= θ,这个function能适应不同的数据集。首先,要求首先确认那些不需要调整的超参数, 因为这些参数在我们的案例中反映出简单强大的鲁棒性的训练方案。而那些需要动态调整的超参数,需要依赖X和Y的不同做相应的调整。
其次,定义g,代表动态参数,在案例中,表示一系列启发性的设置,它们能够适应正则化和重采样方案,配置patch size、batch size等,并确定网络的几何形状。总而言之,这是nnU-Net,一个分割框架,无需人工自动适应新数据集。

2.2结构详解
①预处理:(图像标准化)
nnU-Net需要知道其输入通道是哪种形式的。 如果不是CT,则nnU-Net通过减去平均值并除以标准差来归一化强度值。 如果模态是CT,则将收集训练集中的所有前景体素,并基于这些值的0.5%和99.5%进行强度值的类似水平窗口的自动裁剪。 为了符合典型的权重初始化方法,然后使用全局前景均值和标准差对数据进行归一化。所描述的方案被独立地应用于每种情况。
②网络体系结构:
作者提出了3个网络,分别是2D U-Net、3D U-Net和级联Unet。三个U-net模型彼此独立地配置,设计和训练:一个2D U-Net,一个3D U-Net和两个3D U-Net模型的级联,其中第一个生成低分辨率,随后进行细分 由第二个模型完善。 对比原始U-Net体系结构的唯一显着变化是使用填充卷积来实现相同的输出和输入形状,使用Leaky ReLU取代ReLU,使用Instance normalization(实例规范化)取代Batch normalization(批量标准化)。

2D U-Net: 既然有了3D U-Net,为啥还用2D的。因为有证据(这证据也是作者发现的)表明当数据是各向异性的时候,传统的3D分割方法就会很差。 (证据

3D U-Net: 3D U-net固然好,就是太占用GPU显存。那可以使用小一点的图像块去训练,但这对于那些较大的图像例如肝脏,这种基于块的方法就会阻碍训练。这是因为受限于感受野的大小,网络结构不能收集足够的上下文信息去正确的识别肝脏和其他器官。

级联3D U-Net:为了解决3D U-Net在大图像尺寸数据集上的缺陷,提出了级联模型。首先第一级3D U-Net在下采样的图像上进行训练,然后将结果上采样到原始的体素间距。将上采样的结果作为一个额外的输入通道(one-hot编码)送入第二级3D U-Net,并使用基于图像块的策略在全分辨率的图像上进行训练。
在这里插入图片描述
第1阶段(左):一个3D U-Net处理下采样数据,得到的分割图被更新到原始分辨率。第二阶段(右):将这些分割部分作为one-hot编码连接到全分辨率数据,并通过第二个3D U-Net进行细化。

由于输入图像大小的不同,输入图像块大小和每个轴池化操作的数量(同样也是卷积层的数量)必须能够自适应每个数据集去考虑充足的空间信息聚合。除了自适应图像几何,还需要考虑显存的使用。

级联U-Net的第二级接受前一级的输出作为输入的一部分,为了防止强协同适应,应用随机形态学操作(腐蚀、膨胀、开运算、闭运算)去随机移除掉这些分割结果的连通域。

图像块采样:为了增强网络训练的稳定性,强制每个批量中超过1/3的样本包含至少一个随机选择的前景。

③网络超参数:
参数需要根据预处理的训练数据的形状来调整。具体来说,nnU-Net自动设置批量大小,图像分块大小和每个轴的池化次数,使得显存消耗保持在特定范围内。在这一步中,较大的图像分块大小优先于批量大小(最小批量大小为2),以获取更多的空间上下文信息。每个轴的大小会池化到4个体素以下。所有U-Net结构在第一层使用30个卷积滤波器,并在每个池化操作时将此数量加倍。如果所选择的图像分块大小覆盖的体素少于25%,则会使用下采样的数据训练级联的3D U-Net。级联旨在当图像分块大小太小而无法覆盖整个分辨率,使nnU-Net仍能获得足够的上下文。

③网络训练:
所有UNet架构均经过五折交叉验证训练。一个周期定义为处理250个批次。交叉熵损失和dice损失的总和用作损失函数。

优化器:Adam,初始学习率3×10−4,每个epoch有250个batch。

学习率调整策略:计算训练集和验证集的指数滑动平均loss,如果训练集的指数滑动平均loss在近30个epoch内减少不够5×10−3,则学习率衰减5倍。
训练停止条件:当学习率低于10-6且验证集的指数滑动平均loss在近60个epoch内减少不到5×10−3,则终止训练。

数据增强:使用batchgenerators (数据增强工具包)在训练期间进行在线数据增强
具体为:弹性变形、随机缩放和随机旋转以及gamma增强,如果数据是各向异性的,则在平面内进行2D的空间变换

注:如果3D U-Net的输入图像块尺寸的最大边长是最短边长的两倍以上,这种情况对每个2维面做数据增广。

④网络配置:
2D U-Net, 图像大小=256*256,batch size=42,最高层的特征图数量30(每个下采样特征图数量翻倍),自动将这些参数调整为每个数据集的中值平面大小(使用面内间距最小的平面,对应于最高的分辨率),以便网络有效地训练整个切片。将网络配置为沿每个轴进行池化,直到该轴的特征图小于8(但最多不超过6个池化操作)。

3D U-Net, 图像大小=128* 128* 128, batch size=2, 最高层的特征图数量30。由于显存限制,不去增加图像大小超过1283体素,而是匹配输入图像和数据集中体素中值大小的比率。如果数据集的形状中值比1283小,那就使用形状的中值作为输入的图像大小并且增加batch size(目的是将体素的数量和128* 128* 128大小,batch size为2的体素数量相等)。沿每个轴最多池化5次直到特征图大小为8。

在每个优化步骤中,限制每个网络的体素数量(输入图像的体素 X batch size)最多为数据集的5%。如果超过,则降低batch size(最小为2)。
在这里插入图片描述
可以看到不同数据集的输入图像块大小是不同的,3D U-Net lowres 为级联3D U-Net的第一级,第二级的配置和3D U-Net网络一致。

⑤推论:
使用滑动窗口方法对案例进行预测,预测之间的patch size重叠为一半。 相对于边界,这增加了靠近中心的预测的权重。 通过沿所有的轴做镜像来实现测试数据的增强。 nnU-Net集成了两个U-Net配置(2D,3D和级联)的组合,并根据交叉验证结果自动选择最佳的单个模型或整体用于测试集预测。 对于选定的配置,nnU-Net还使用交叉验证生成的五个模型进行集成。

⑥后处理:
对训练数据执行所有真实分割标签的连接成分分析。如果一个类在所有情况下都位于一个连接的组件中,这种行为就被视为数据集的一般属性。因此,在相应数据集的预测图像上,除了最大的连通分量之外,该类的所有连通分量都被自动移除。

例如:LiTS
肝肿瘤分割的挑战由131个训练图像(CT)和70个测试用例组成。对于训练病例,提供了肝脏和肝脏肿瘤的分割。nnU-Net在病变和肝脏上的Dice评分分别为0.725和0.958。通过移除最大连通前景区域以外的所有区域进行后处理将Dice得分提高到0.738和0.960,在开放的排行榜病变分割的Dice评分达到了state of the art,并且肝脏分割在123支队伍排名第17位(第一名:0.966)。

LiTS的结果表明,正确选择的后处理可能是有益的。这种后处理可以通过分析训练数据或通过基于交叉验证结果选择方案来自动化。

三、方法亮点
1、并没有提出新的网络结构,但打破常规,依靠一些技巧,将分割任务进行了大统一,并在很多任务上得到了非常好的成绩上
2、作者更多的关注结构以外的部分,比如预处理、训练和推理策略、后处理等部分
3、对于每个任务,nnU-Net自动对三个不同的自动配置的U-Net模型进行五重交叉验证,并选择前景骰子平均得分最高的模型(或集合)进行最终提交。

四、网络模型主要应用及结果
4.1 nnU-Net在医学细分挑战测试集上的性能总结
在这里插入图片描述
十项全能医学竞赛第一阶段的七个训练数据集,这些数据集涵盖了医学分割问题中通常遇到的大量可变性和挑战

医学细分十项全能挑战赛:该挑战的第一阶段由上述七个数据集组成,参与者使用这些数据集来开发可推广的分割算法。在第二阶段,提供了另外三个以前未知的数据集。算法被应用于这些数据集,没有进一步的改变或用户交互。对这两个阶段的评估都是在官方测试集上进行的。nnU-Net在第一阶段和第二阶段的十项全能挑战中都是明显的赢家。

4.2 BraTS数据集:
在这里插入图片描述
赢得了2020 BraTS大赛。在测试集上,模型得到全肿瘤、核心肿瘤和增强肿瘤的Dice得分分别为88.95、85.06和82.03, HD95值分别为8.498、17.337和17.805。

五、网络缺陷和不足
不足之处:
①给定大量的细分数据集,未来可以尝试直接从数据集的属性中学习。
②尽管nnU-Net的特定属性可在许多数据集中实现强大的分割性能,但并未找到全局最佳配置。
③选择用leaky ReLU代替ReLU不会影响性能,但数据增强方案可能并不适合所有数据集。
④最终结果不考虑测试时间,离最终的临床有点偏离

六、个人思考总结
nnunet并没有提出一个新的网络结构,而是从一些细节处理方面下手,这无疑是一种崭新的思路,我们可以从不同的方面去研究一个问题,用不同的方法去尝试解决问题。

4.3总结:
建立了迄今为止被认为是最强的U-Net基线,可以系统地评估更高级的网络设计的通用性以及相对于这里使用的简单架构的性能增益。因此,nnU-Net不仅可以用作现成的细分工具,还可以用作强大的U-Net baseline和未来细分相关想法的平台。

猜你喜欢

转载自blog.csdn.net/weixin_49627776/article/details/115288399