精读论文UNet++: A Nested U-Net Architecture for Medical Image Segmentation(附翻译)

UNet++: A Nested U-Net Architecture for Medical Image Segmentation(附翻译)

写于2020年7月,本学期精读的第二篇论文,加油菜菜的小孙同学!原文链接 源代码(附原作者知乎讲解)

个人感觉这篇文章文风读起来没有U-Net流畅,如果不看作者的blog,可能不太明白每一步要做什么。但是作者的工作态度和科研精神也是非常值得我去学习的,一个网络结构的设计理念和传达信息才是值得创新的,而不是停留在改参调参上。 

一、outline

本文的工作是基于U-Net网络提出了用于医疗影像分割的UNet++网络,改进如下:

1. re-designed skip pathways

重设计跳跃路径:
  原本的跳跃连接是编码子网络的高分辨率特征图和解码子网络相对应的上采样输出相叠加,作者认为这会产生语义鸿沟。(语义鸿沟:我的理解是encoder最初的卷积得到的feature map表示的是低维的特征,对应尺寸的decoder的feature map 则已经经过了数次卷积,不是一个尺度的特征,U-Net中进行long-skip的融合会丢失一些信息。)
  作者提出一种假设,把高分辨率的特征图和相应语义的特征图相融合的模型可以捕捉更多细节,同时可以使优化器完成一个简单的优化任务,所以重设计了一系列nested(嵌套的),dense(密集的) skip pathways(跳跃路径),抓取不同层次的特征通过叠加的方式整合,加入了更浅的U-Net,使得融合时的feature map尺度差异更小。(仅有长连接,梯度无法回传,只有短连接又失去了长连接的作用——长连接联系了输入图像的很多信息,有助于还原降采样所带来的信息损失,所以作者提出了长连接和短连接相结合的方法)
在这里插入图片描述
  相对于原来的Unet网络,Unet++把1~4层的U-Net全给连一起了。这个结构的好处就是我不管你哪个深度的特征有效,我干脆都给你用上,让网络自己去学习不同深度的特征的重要性。第二个好处是它共享了一个特征提取器,也就是你不需要训练一堆U-Net,而是只训练一个encoder,它的不同层次的特征由不同的decoder路径来还原。这个encoder依旧可以灵活的用各种不同的backbone来代替。

2. deep supervision

深度监督:
  除了skip connection做出的改变之外,为了能够让中间部分收到传递过来的梯度,Unet++使用了深监督(deep supervision)的方案。具体的操作就是将结构的   X 0 , 1 \ X^{0,1}  X0,1   X 0 , 2 \ X^{0,2}  X0,2   X 0 , 3 \ X^{0,3}  X0,3后加一个1x1的卷积核,相当于去监督每个level,或者每个分支的U-Net的输出。在深监督过程中,每个子网络的输出都已经是图像分割结果了,所以作者提出了剪枝,剪枝使得网络有精准模式和快速模式两种。
在这里插入图片描述

为什么可以剪枝?

why:
  因为在深监督的过程中,每个子网络的输出都其实已经是图像的分割结果了,所以如果小的子网络的输出结果已经足够好了,我们可以随意的剪掉那些多余的部分了。
  在测试的阶段,由于输入的图像只会前向传播,扔掉这部分对前面的输出完全没有影响的,而在训练阶段,因为既有前向,又有反向传播,被剪掉的部分是会帮助其他部分做权重更新的。测试时,剪掉部分对剩余结构不做影响,训练时,剪掉部分对剩余部分有影响。

如何剪枝?剪枝好处?

how:
  将数据集分成训练集和验证集,根据子网络在验证集的结果来决定剪多少,剪枝越多参数越少,在不影响准确率的前提下,剪枝可以降低计算时间。
在这里插入图片描述
  L1只有0.1M,而L4有9M,也就是理论上如果L1的结果我是满意的,那么模型可以被剪掉的参数达到98.8%。不过根据我们的四个数据集,L1的效果并不好。但是其中有三个数据集显示L2的结果和L4已经非常接近了,也就是说对于这三个数据集,在测试阶段,我们不需要用9M的网络,用半M的网络足够了。
  剪枝应用最多的就是在移动手机端了,根据模型的参数量,如果L2得到的效果和L4相近,模型的内存可以省18倍。还是非常可观的数目。

3. summary

创新点:
  UNet++网络结构提高了分割精准度,因为整合了不同层次的特征图。同时灵活的网络结构配合深监督,可以进行剪枝,让参数量巨大的深度网络在可接受的精度范围内大幅度的缩减参数量。

4. 参数数量

问:Unet++网络比U-Net效果好,但是这个网络增加了多少的参数,是不是通过增加参数就能达到Unet++的能力?
答:作者提出了wide U-Net网络,给U-Net增加卷积核的数量,使得wide U-Net和Unet++网络参数相近,结果表现并不好。

二、翻译

0. 摘要

abstract:
  在这篇文章中,我们提出了一个全新的的更强的用于医疗影像分割的网络结构UNet++。我们的结构本质上是一个深度监督( deeply-supervised)的编码-解码的网络,编码解码的子网络通过一系列的嵌套的(nested)稠密的跳跃路径(dense skip pathways)相连接。重设计跳跃路径的目的是减少编码、解码子网络特征图的语义缺失(semantic gap)。当解码和编码网络的特征图语义类似的时候,我们认为这个优化器将会处理一个更简单的任务。我们在多个医疗影像分割任务来分别评估了UNet++和U-Net、wide UNet预测效果,包括小剂量的CT胸透扫描瘤分割、显微镜里的细胞核分割、腹部CT的肝脏分割以及结肠息肉分割。我们的实验证明带有深度监督的UNet++取得了平均3.9的IoU和3.4 points,超过了U-Net、wide UNet。

1. 介绍

introduction:
  图像分割的SOTA模型都是基于解码-编码结构的变体,像U-Net和FCN。这些被用于图像分割的解码-编码网络都有一个关键且相似的特性,即跳跃连接(skip connections),用来结合解码子网络深度、语义、粗颗粒(coarse-grained)的特征图和编码子网络的低层、浅层、细颗粒的特征图。这种跳跃连接在复原目标对象的细节上非常有效,即使在非常复杂的背景中也可以生成带有细节的分割图。跳跃连接也是实现实例级(instance-level)分割模型的基础,例如Msak-RCNN,可以分割被遮挡的物体。可以说图像分割技术在自然图像上已经达到了很满意的效果,但是这些模型可以满足医疗影像的分割需求吗?
  相比较自然图像分割,在医学图像中对病变或异常进行分割需要更高的准确性。在自然图像中精准的分割可能不是特别重要,但是在医疗影像中即使是边缘分割错误,也会导致临床环境中的用户体验不佳。举个例子,小瘤附近的细微刺状图案(subtle spiculation patterns)可能预示着瘤的恶性,因此从临床角度看,从分割任务中排除它们会降低模型的可信度。更进一步讲,不正确的分割可能会导致计算机后续的诊断发生很大的改变。例如,对结节生长的错误测量可能会给筛查患者带来错误的Lung-RADS类别判断。因此在医学图像分割中更加需要设计一个网络可以更有效地恢复目标对象的细节。
  为了满足对医学图像中更精确分割的需求,我们提出了UNet++,这个网络是基于嵌套的和稠密的跳跃连接来实现的。我们架构的基本假设是,当编码网络高分辨率的特征图和解码网络的相应的语义特征图逐渐融合时,可以有效捕捉前景对象(foreground object)的细节(fine-grained details)。我们认为当解码和编码网络的特征图语义类似的时候,这个优化器将会处理一个更简单的任务。这和在U-Net中使用的跳跃连接不同,U-Net直接快速地把高分辨率的特征图从编码到解码,这会导致语义不相近的特征图融合。根据我们的实验,我们提出的网络是非常有效的,与U-Net和广泛的U-Net相比,可显著提高性能。

2. 相关工作

Related Work:
  Long等人首先提出了全连接网络(FCN),同年Ronneberger等人提出了U-Net网络,他们都有一个关键思想:跳跃连接(skip connections)。在FCN中,上采样时的特征图是用来自编码的特征图进行像素点的加操作(summation),而U-Net在每个上采样之间有进行维度拼接的叠操作(concatenation)、卷积和非线性激活函数。在网络输出时,这些跳跃连接都很好地展现了复原空间分辨率的作用,证明了全卷积方法对于语义分割是非常适用的。受到DenseNet architecture的启发,Li等人提出H-denseunet用于肝脏和肝瘤的分割,收到同样启发,Drozdzalet等人系统地研究了跳跃连接的重要性,并在编码器中引入了短跳跃连接。尽管在上述的网络结构中存在着细微的差异,不过他们都倾向融合解码、编码子网络中语义不同的特征图,但是在我们的实验中,这样的方式降低了分割的效果。
  近期另外的两项相关研究分别是GridNet和Mask-RCNN。GridNet是一种编码器-解码器体系结构,其中的特征图以网格形式进行连接,从而概括了几种经典的分段体系结构,然而GridNet在跳跃连接间缺乏上采样层,因此它不能代表UNet++。Mask-RCNN或许是最重要的目标识别、分类、分割的框架。我们想指出的是,只需用嵌套的密集的跳跃路径替换普通跳过连接,即可将UNet ++轻松部署为Mask-RCNN中的骨干架构。由于篇幅所限,我们无法包含以UNet ++作为主干架构的Mask RCNN的结果。 但是,有兴趣的读者可以阅读补充材料获取更多详细信息。

3. UNet++

网络:
  图a展示了UNet++的一个总体的概述。我们可以看到UNet++是由一个编码的子网络或骨干开始的,然后跟随了解码的子网络。UNet++和U-Net(黑色部分)不同的是重设计的跳跃路径(绿色和蓝色部分),重设计的跳跃路径连接了两个子网络,同时也利用了深度监督(红色部分)。
在这里插入图片描述

3.1 重设计的跳跃路径

re-designed skip pathways
  重新设计的跳过路径可改变编码器和解码器子网的连通性。 在U-Net中,编码器的特征图直接在解码器中接收; 但是,在UNet ++中,它们经历了密集的卷积块,其卷积层数取决于金字塔级别。例如,结点   X 0 , 0 \ X^{0,0}  X0,0   X 1 , 3 \ X^{1,3}  X1,3间包括了密集的卷积块和三个卷积层,其中每个卷积层前都有一个串联层,该层将同一密集块卷积层的输出与相应的下层密集块的上采样输出融合。本质上,密集卷积块(dense convolution )使编码器特征图的语义级别更接近解码器中特征图的语义级别。假设当接收到的编码器特征映射和相应的解码器特征映射在语义上相似时,优化器将面临更容易的优化问题。
  我们设计的跳跃路径如下:让   x i , j \ x^{i,j}  xi,j表示结点   X i , j \ X^{i,j}  Xi,j输出,i代表沿着编码方向的下采样层索引,j代表沿着跳跃路径的密集块卷积层的索引。由   x i , j \ x^{i,j}  xi,j表示的特征图计算如下:
  x i , j = { H ( x i − 1 , y ) j = 0 H ( [ [ x i , k ] k = 0 j − 1 , μ ( x i + 1 , j − 1 ) ] ) j > 0 \ x^{i,j}=\begin{cases} \Eta(x^{i-1,y})&j=0 \\ \Eta([[x^{i,k}]_{k=0}^{j-1},\mu(x^{i+1,j-1})])&j>0 \end{cases}  xi,j={H(xi1,y)H([[xi,k]k=0j1,μ(xi+1,j1)])j=0j>0
  函数   H ( ⋅ ) \ \Eta(\cdot)  H()是一个卷积操作,且紧跟着一个激活函数。   μ ( ⋅ ) \ \mu(\cdot)  μ()是一个上采样操作,[ ]表示叠层。   j = 0 \ j =0  j=0的节点只从编码路径的先前层接收一个输入,   j = 1 \ j =1  j=1的节点接收两个输入,它们都来自编码子网络且是两个连续的层,   j > 1 \ j >1  j>1的节点接收   j + 1 \ j +1  j+1个节点,其中   j \ j  j 个输入是在相同的跳跃路径的先前   j \ j  j个节点输出,而最后一个输入是从更低一层的跳跃路径的上采样的输出。先前的特征图都会累积到当前节点的原因是因为我们沿每个跳过路径使用了密集的卷积块。如上图的(b)所示。

3.2 深度监督

我们提出在UNet ++中使用深度监督,使模型可以在两种模式下运行:

  • 精准模式:对所有分割分支的输出取均值
  • 快速模式:最终分割图从其中一个分支中选择,这个选择决定了模型修剪的程度和速度。

图c显示了快速模式下分割分支的选择是如何导致架构的复杂度不同。
  由于嵌套的跳跃路径,UNet ++可以在多个语义级别生成完整分辨率的特征图,   { x 0 , j , j ∈ { 1 , 2 , 3 , 4 } } \ \{x^{0,j},j\in \{ 1,2,3,4\}\}  {x0,j,j{1,2,3,4}},是值得深度监督的。我们在上述四个语义级别中的每个级别上都添加了二元交叉熵和Dice系数的组合作为损失函数,其描述为:
  T ( Y , Y ^ ) = − 1 N ∑ b = 1 N ( 1 2 ⋅ Y b ⋅ l o g Y b ^ + 2 ⋅ Y b ⋅ l o g Y b ^ Y b + Y b ^ ) \ \Tau(Y,\widehat{Y})=-\frac{1}{N}\sum\limits_{b=1}^N(\frac{1}{2}\cdot Y_b\cdot log\widehat{Y_b}+\frac{2\cdot Y_b\cdot log\widehat{Y_b}}{Y_b+\widehat{Y_b}})  T(Y,Y )=N1b=1N(21YblogYb +Yb+Yb 2YblogYb )
Y b ^ \widehat{Y_b} Yb 代表第b个图像的预测结果,   Y b \ Y_b  Yb代表实际标注结果(ground truths),   N \ N  N代表batchsize
UNet++和传统的U-Net不同的地方有三处:

  • 1.UNet++在跳跃路径内有卷积层,搭建了编码特征图和解码特征图之间的语义鸿沟(semantic gap)
  • 2.UNet++在跳跃路径上有密集的跳跃连接,这改善了梯度流
  • 3.UNet++还有深度监督,能够进行模型的修剪和改进,或者在最坏的情况下达到与仅使用一个损耗层相当的性能

4. 实验

dataset:
  我们使用了四种医学图像数据集用来模型的评估,包括来自不同医学成像模态的病变/器官。有关数据集和相应数据预处理的进一步详细信息请参阅补充资料。
在这里插入图片描述
baseline model:
  为了比较,我们使用了原始的U-Net和wide U-Net.我们选择U-Net,因为它是图像分割的通用基准网络。我们也设计一个和我们网络参数的数量相近的wide U-Net。这是为了确保我们网络的收益不仅取决于参数数量的增加。
在这里插入图片描述
Implementation details:
  我们监测了Dice系数和IoU,在数据集上使用了early-stop方法。我们使用了优化方法Adam,学习率为3e-4。跳跃路径   ( X i , j ) \ (X^{i,j})  (Xi,j)所有卷积层都使用k个33大小(或3×3×3用于三维肺结节分割)的卷积核,   k = 32 ∗ 2 i \ k=32*2^i  k=322i。为了确保深度监督,一个11的卷积层和sigmoid激活函数加载了每个目标节点上:   { x 0 , j , j ∈ { 1 , 2 , 3 , 4 } } \ \{x^{0,j},j\in \{ 1,2,3,4\}\}  {x0,j,j{1,2,3,4}}。最终UNet++生成四个分割图像,并将其进一步平均以生成最终的分割图。更多的细节在tgithub.com/Nested-UNet。
Results:
  如下表所示,在肺结节分割,结肠息肉分割,肝分割和细胞核分割任务中,我们比较了U-Net,wide U-Net和UNet ++的参数数量和分割精度。
在这里插入图片描述
  如图所示,Wide U-Net的性能始终胜过U-Net,除了在肝脏分割上两者性能相近,这种改进是因为Wide U-Net的参数较多。UNet++在没有深度监督的情况下,在UNet和宽U-Net上都获得了显著的性能提升,IoU平均提高2.8和3.3分。有深度监督的UNet++平均比没有深度监督的UNet++提高0.6分。具体来说,使用深度监督可以明显改善肝、肺结节的分割,但这种改善消失在细胞核和结肠息肉的分割上,这是因为息肉和肝脏在视频帧和CT切片中以不同的比例出现,因此,使用所有分割分支(深度监督)的多尺度方法对于准确细分至关重要。
model pruning
  (模型修剪)下图展示了UNet++经过不同修剪后的分割表现。我们使用UNet++   L i \ L^i  Li表示UNet++修剪在i层。由此可见,UNet++   L 3 \ L^3  L3平均推理时间减少32.2%,IoU仅减少0.6分。更积极的剪枝会降低时间,但是准确性也会显著下降。

5. 结论

conclusion:
  为了满足对更精确的医学图像分割的需求,我们提出了UNet ++网络,这个网络结构的优势在于重设计跳跃路径和深度监督。重设计跳跃路径目的在降低编码子网络特征图和解码子网络特征图的语义鸿沟,从而给优化器带来一个更简单的优化问题。深度监督也能更准确地分割图像,尤其是出现在多个尺度的病变(例如结肠镜检查视频中的息肉)。我们用四个医疗影像的数据集来评估UNet++,数据集包括肺部结节分割、结肠息肉分割、细胞核分割、肝脏分割。我们的实验证明带有深度监督的UNet++取得了平均3.9的IoU和3.4 points,超过了U-Net、wide UNet。

三、纸质版学习材料

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 25
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值