[深度学习论文笔记] UNet++: A Nested U-Net Architecture for Medical Image SegmentationUNet++

[论文解读] UNet++: A Nested U-Net Architecture for Medical Image Segmentation(UNet++:一种用于医学图像分割的嵌套U-Net结构)
Unet论文:https://arxiv.org/pdf/1807.10165
Unet源代码:https://github.com/MrGiovanni/UNetPlusPlus
发表:2018 DLMIA

一、基本介绍
1.1历史背景
图像分割的SOTA模型有各种基于像U-Net和FCN解码编码结构的变体。这些被用来分割的解码-编码网络结构都给我们展示了一个关键且相似的东西:即跳跃连接,用来结合来自解码子网络中深度语义粗略的特征图和来自编码子网络中浅层低级详细的特征图.这种跳跃连接已经证明在恢复目标对象的详细细节上是有效的;可以最终在复杂的背景中产生更加细节的分割图.跳跃连接也是一个用来实现实例分割 模型的基本组成要素,例如MaskRCNN能够识别并分割遮挡的对象。可以证明, 在自然图像中的图像分割已经达到了满意的表现,但是用这些模型是否可以满足医学图像中的严格的分割要求呢?

1.2 精度问题
在医学图像中分割病灶或者畸形部分比自然图像需要一个更高级别的分割精度。自然图像中一个精确的分割可能没有那么重要,而在医学图像中微不足道的分割差错可以误导经验不足的使用者在临床配置的时候。举个例子,小瘤附近的细微刺状图案可以指出瘤的恶性;因此,在临床方面他们从分割图判断的结论应该降低模型的可信度。而且,在随后计算机生成的诊断中,不精确的分割也可能导致一个大的改变。例如一个错误的瘤增长测量可以给一个筛选病人最终一个不正确的肺结节分类分配.因此,在医学图像分割中更加需要设计一个网络可以更有效地恢复目标对象的细节。

1.3提出的背景
为了设法解决这种在医学图像中更加精准的分割需求, UNet++,这个网络是基于嵌套的和稠密的跳跃连接来实现的。即当高分辨率特征图从编码网络逐渐地和解码网络中的相应语义的特征图优先进行融合,这个网络它可以更高效地捕获前景对象的深层细节.我们提出的理由是当解码和编码的特征图的语义相似进行融合时,它学习的效果会更好,这与UNet的朴素跳跃连接不同,在UNet中高分辨率特征图快速直接地从编码到解码,结果是不相似语义的特征图之间进行融合。

二、网络结构
2.1 Unet++对比Unet的改进
如果想要详细了解Unet++ 一定要先看一下这个
(UNet++作者在知乎上进行的解读)
作者原话:(值得学习)
“很多论文给出了他们建议的网络结构,其中包括非常多的细节,比如用什么卷积,用几层,怎么降采样,学习率多少,优化器用什么,这些都是比较直观的参数,其实这些在论文中给出参数并不见得是最好的,所以关注这些的意义不大,一个网络结构,我们真正值得关注的是它的设计给我们传达了什么信息,给我们引起了什么样的思考,所以我们应该要关注论文所传递的大方向,不要被论文中的细节局限了创造力, 而像这种细节参数的调整是属于比较朴素的深度学习方法论,很容易花费你很多时间,而最终并没有自身科研水平的提升”
里面具体讲的有:
① 网红拓扑结构
② 降采样和升采样问题
③ 网络要多深问题
④ 以及UNet++发展的萌芽
⑤ 无法训练的问题
⑥ 直到UNet++模型诞生
⑦ 做实验研究参数多了是导致UNet++比UNet好吗
⑧ 对UNet++的解读
⑨ 深监督(Deep Supervision)问题
⑩ 剪枝(为什么可以剪枝,如何剪枝,好处)

2.2结构详解
在这里插入图片描述
图中:
(a) UNet++包含编码和解码以及一系列将它们连接的嵌套稠密的卷积块。
UNet++背后的主要的思路是在融合之前先架起编码解码的特征图之间的语义不同。
例如,在(X0,0 X1,3)之间的语义差异是使用一个有3层卷积的稠密卷积块来架起。在图中,黑色表示原始原来的U-Net,绿色和蓝色表示在跳跃连接上的稠密卷积块,红色表示深度监督。红色,绿色和蓝色的成分是UNet++的用来区别于UNet。
(b)UNet++跳跃路径的分析细节
(c )如果Unet++用深度监督来训练的话,它可以在预测的时候被简化

2.3UNet++和U-Net架构的示意图对比
在这里插入图片描述
UNet++ 在原始的U-Net上加了3个东西:
① 重新设计的跳跃路径(显示为绿色) 以弥补编码器和解码器子路径之间的语义差别。
U-Net采用跳跃连接,直接连接编码器和解码器之间的特征映射,导致把语义上不相似的特征映射相融合。
然而,在UNet++中,相同dense block的前一个卷积层的输出与较低层dense block对应的上采样输出进行融合。这使得已编码特征的语义级别更接近于等待在解码器中的特征映射的语义级别,因此,当接收到语义上相似的特征映射时,优化更容易。
② 密集跳跃连接(显示为蓝色) 实现了编码器和解码器之间的跳跃路径。
这些Dense blocks是受到DenseNet的启发,目的是提高分割精度和改善梯度流。
密集跳跃连接确保所有先验特征图都被累积,并通过每个跳跃路径上的dense卷积块而到达当前节点。这将在多个语义级别生成完整分辨率的特征映射。
③深度监督(显示为红色) 通过修剪模型来调整模型的复杂性,在速度(推理时间)和性能之间实现平衡。
对于accurate模式,所有分割分支的输出进行平均。对于fast模式,最终的分割图从分割分支之一选择。进行了实验,以确定在不同剪枝水平下的最佳分割性能。使用的度量是IoU和推理时间。
他们试验了四种分割任务:a)细胞核,b)结肠息肉,c)肝脏,d)肺结节。结果如下:

L3与L4相比,平均减少了32.2%的推理时间,同时IoU略微降低了。
更激进的修剪方法,如L1和L2,可以进一步减少推理时间,但以显著的分割性能为代价。
在使用UNet++时,我们可以调整用例的层数。

三、方法亮点
3.1 深监督(Deep Supervision)
这个结构在反向传播的时候, 如果只用最右边的一个loss来做的话, 中间部分会收不到过来的梯度,导致无法训练, 解决的办法除了用短连接的那个结构外,还有一个办法就是用深监督.如下图所示,具体的实现操作就是在图中 X0,1 、X0,2、 X0,3 、X0,4后面加一个1x1的卷积核,相当于去监督每个层次,或者说监督每个分支的U-Net的输出。
在这里插入图片描述

四、网络模型主要应用及结果
4.1在多种医学图像分割任务中比较了UNet++、UNet以及UNet衍生网络的预测效果:小剂量的CT胸透扫描瘤分割、显微镜里的细胞核分割、腹部CT的肝脏分割以及结肠息肉分割.我们的实验说明了具有深度监督结构的UNet++取得平均3.9的IoU和3.4 points 分别超过了U-Net和U-Net的衍生
在这里插入图片描述
4.2 实验中使用的图像分割数据集
我们使用了四种医学图像数据集用来模型的评估,包括来自不同医学成像模态的病变/器官
在这里插入图片描述
Unet、wide Unet和UNet++之间的定性比较,显示了息肉、肝脏和细胞核数据集的分割结果(仅2D用于独特的可视化)。
为了比较,我们使用了原始的U-Net和wide U-Net。我们选择U-Net,因为它是图像分割的通用性能基准。我们也设计一个具有相似参数的数量wide U-Net作为我们的建议的架构。(作者知乎上有详细解释)这是为了确保我们的体系结构产生的性能收益不仅仅是由于参数数量的增加。

4.3 实现细节
监控了Dice系数和Intersectionover Union (IoU),并在验证集上使用了提前终止机制。我们还使用了学习率为0.0001的Adam optimizer。
UNet和wide U-Net的架构细节如表所示。UNet++是由原来的U-Net架构构建的。所有沿跳跃路劲(Xi;j)的卷积层使用大小为3×3(或3×3×3用于三维肺结节分割)的k个核,其中k = 32×2i。为了实现深度监控,在每个目标节点上附加1×1的卷积层和一个sigmoid激活函数。

结果,给定一个输入图像UNet++生成四个分割图,这将进一步平均,以生成最终的分割图。
在这里插入图片描述
4.4总结:
为了解决更精确的医学图像分割的需要,我们提出了UNet++。建议的架构利用了重新设计的跳跃路径和深度监督。重新设计的跳跃路径旨在减少编码器和解码器子网的特征映射之间的语义差距,从而为优化器解决一个可能更简单的优化问题。深度监控还可以更准确地分割病变,特别是出现在多个尺度上的病变,如结肠镜检查视频中的息肉。我们使用四组医学成像数据集对UNet++进行了评估,包括肺结节分割、结肠息肉分割、细胞核分割和肝脏分割。我们的实验表明,UNet++在深度监管下,比U-Net和wide U-Net的平均IoU增益分别为3.9和3.4。

五、网络缺陷和不足
5.1 不足之处
UNet++在UNet基础上进行改进,它是通过设计具有嵌套和密集跳过连接的体系结构。
然而,它没有从多尺度中表达足够的信息,仍然有很大的改进空间。
为此提出了一种新颖的UNet 3+(UNet+++),它利用了全尺度的跳跃连接和深度监督。全尺度的跳跃连接把来自不同尺度特征图中的高级语义与低级语义结合;而深度监督则从多尺度聚合的特征图中学习层次表示。除了提高精度外,所提出的UNet 3+还可以减少网络参数,提高计算效率。

5.2研习Unet++
关于深监督:
在深度神经网络的某些中间隐藏层加了一个辅助的分类器作为一种网络分支来对主干网络进行监督的技巧,用来解决深度神经网络训练梯度消失和收敛速度过慢等问题。还可以起到一定的正则化的作用。
简单说就是针对中间隐藏层特征透明度不高以及深层网络中浅层以及中间网络难以训练的问题,对隐藏层再进行监督(损失函数),这样的话同时用最后的output的监督以及中间的隐藏层的监督(伴随损失函数)对网络进行训练,促进网络更好更快的收敛。

六、个人思考总结
作者在知乎给我们简述了研究历程, 这个过程我们可以了解到要想设计出更强的结构,你得首先明白这个结构,甚至它的原型(如U-Net)设计背后的心路历程。
(从认识原型,到分析它的组成,到批判性的解读,再到改进思路的形成,实验设计,自问自答 ,这是作者身上值得我们学习的东西)
作者在分析UNet时是从一个大的方向上分析,首先提出疑问,实践验证,总结改进,重复上述过程…最后UNet++诞生了,虽然新的网络很快代替它,但是作者的这种研究态度和方式是值得学习的!

总结:
UNet++的目标是提高分割精度,通过一系列嵌套的,密集的跳跃路径来实现。重新设计的跳跃路径使语义相似的特征映射更容易优化。密集的跳跃连接提高了分割精度,改善了梯度流。深度监督允许模型复杂性调优,以平衡速度和性能优化。
UNet++的第一个优势就是精度的提升,这个应该是它整合了不同层次的特征所带来的,第二个是灵活的网络结构配合深监督,让参数量巨大的深度网络在可接受的精度范围内大幅度的缩减参数量。

参考文章:
详解医学图像分割利器:UNet++

おすすめ

転載: blog.csdn.net/weixin_49627776/article/details/114240531