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

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

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

目录

    • UNet++: A Nested U-Net Architecture for Medical Image Segmentation(附翻译)
  • 一、outline
    • 1. re-designed skip pathways
    • 2. deep supervision
      • 为什么可以剪枝?
      • 如何剪枝?剪枝好处?
    • 3. summary
    • 4. 参数数量
  • 二、翻译
    • 0. 摘要
    • 1. 介绍
    • 2. 相关工作
    • 3. UNet++
      • 3.1 重设计的跳跃路径
      • 3.2 深度监督
    • 4. 实验
    • 5. 结论
  • 三、纸质版学习材料

一、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)的方案。具体的操作就是将结构的X0,1\ X^{0,1} X0,1X0,2\ X^{0,2} X0,2X0,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 ++中,它们经历了密集的卷积块,其卷积层数取决于金字塔级别。例如,结点X0,0\ X^{0,0} X0,0和X1,3\ X^{1,3} X1,3间包括了密集的卷积块和三个卷积层,其中每个卷积层前都有一个串联层,该层将同一密集块卷积层的输出与相应的下层密集块的上采样输出融合。本质上,密集卷积块(dense convolution )使编码器特征图的语义级别更接近解码器中特征图的语义级别。假设当接收到的编码器特征映射和相应的解码器特征映射在语义上相似时,优化器将面临更容易的优化问题。
  我们设计的跳跃路径如下:让xi,j\ x^{i,j} xi,j表示结点Xi,j\ X^{i,j} Xi,j输出,i代表沿着编码方向的下采样层索引,j代表沿着跳跃路径的密集块卷积层的索引。由xi,j\ x^{i,j} xi,j表示的特征图计算如下:
xi,j={H(xi−1,y)j=0H([[xi,k]k=0j−1,μ(xi+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(xi−1,y)H([[xi,k]k=0j−1​,μ(xi+1,j−1)])​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 ++可以在多个语义级别生成完整分辨率的特征图,{x0,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^)=−1N∑b=1N(12⋅Yb⋅logYb^+2⋅Yb⋅logYb^Yb+Yb^)\ \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)=−N1​b=1∑N​(21​⋅Yb​⋅logYb​​+Yb​+Yb​​2⋅Yb​⋅logYb​​​)
Yb^\widehat{Y_b}Yb​​代表第b个图像的预测结果,Yb\ 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。跳跃路径(Xi,j)\ (X^{i,j}) (Xi,j)所有卷积层都使用k个33大小(或3×3×3用于三维肺结节分割)的卷积核,k=32∗2i\ k=32*2^i k=32∗2i。为了确保深度监督,一个11的卷积层和sigmoid激活函数加载了每个目标节点上:{x0,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++Li\ L^i Li表示UNet++修剪在i层。由此可见,UNet++L3\ L^3 L3平均推理时间减少32.2%,IoU仅减少0.6分。更积极的剪枝会降低时间,但是准确性也会显著下降。

5. 结论

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

三、纸质版学习材料








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

  1. [论文翻译]UNet++: A Nested U-Net Architecture for Medical Image Segmentation

    UNet++论文: 地址 UNet++: A Nested U-Net Architecture for Medical Image Segmentation UNet++:一个用于医学图像分割的嵌套 ...

  2. UTNet: A Hybrid Transformer Architecture for Medical Image Segmentation

    UTNet: A Hybrid Transformer Architecture for Medical Image Segmentation UTNet:一种用于医学图像分割的混合transform ...

  3. [论文阅读] TransUNet: Transformers Make Strong Encoders for Medical Image Segmentation

    论文地址:https://arxiv.org/abs/2102.04306 代码:https://github.com/Beckschen/TransUNet 发表于:arXiv 21.02 Abst ...

  4. [论文阅读] TransFuse: Fusing Transformers and CNNs for Medical Image Segmentation

    论文地址:https://arxiv.org/abs/2102.08005 发表于:MICCAI'21 Abstract 医学图像分割,这一众多临床需求的先决条件–已经被卷积神经网络(CNN)的最新进 ...

  5. 深度学习论文: U-Net and its variants for Medical Image Segmentation : A short review

    深度学习论文: U-Net and its variants for Medical Image Segmentation : A short review U-Net and its variant ...

  6. Nested Named Entity Recognition from Medical Texts: An Adaptive Shared Network Architecture with Att

    论文名称:Nested Named Entity Recognition from Medical Texts: An Adaptive Shared Network Architecture wit ...

  7. 【论文研读】【医学图像】【R2UNet】Recurrent residual U-Net for medical image segmentation

    [R2UNet]Recurrent residual U-Net for medical image segmentation Abstract 1 Introduction 2 Related Wo ...

  8. 读论文3:SELFEXPLAIN: A Self-Explaining Architecture for Neural Text Classifiers

    标题 读论文3:SELFEXPLAIN: A Self-Explaining Architecture for Neural Text Classifiers 标题 Abstract:[读论文1](h ...

  9. 论文解析[3] U-Net and its variants for Medical Image Segmentation : A short review

    发表年份:2022 论文地址:https://arxiv.org/abs/2204.08470v1 文章目录 论文概要 1. 介绍 2. 方法 2.1 传统分割 2.2 U-Net 2015 2.3 ...

最新文章

  1. P of EAA 总结
  2. 在同一台电脑上弄分布(异步)式训练
  3. 在Swing和Swt中使用JavaFX
  4. 即时通讯软件开发界公认的说法
  5. Cognos 增加全局类
  6. [洛谷P1407][国家集训队]稳定婚姻
  7. [MetalKit]37-Using-ARKit-with-Metal使用ARKit与Metal
  8. 【网络攻防原理与技术】第6章:特洛伊木马
  9. 傅里叶变换到拉普拉斯变换及收敛域分析
  10. 干货:大米云LAMP使用说明
  11. Maya: 菜单 曲面 双轨成形双轨成形2工具
  12. 计算机硬盘启动设置方法,如何进入BIOS设置硬盘启动顺序|计算机BIOS硬盘启动设置方法...
  13. php的seeder是什么,Seeder(一)
  14. 计算机技术与软件专业技术资格(水平)考试岗位设置与描述
  15. java实现第八届蓝桥杯平方十位数
  16. 面试让我手写红黑树?!
  17. zabbix 5.0中自定义监控单个IP的最大流量
  18. 计算机显卡和cpu的关系,cpu和显卡的关系
  19. Red Team后漏洞利用秘籍:如何使用C#语言实现系统调用
  20. [Magento] Overriding Core files

热门文章

  1. window10护眼模式在哪里?
  2. lua搭建ui_Unity游戏开发笔记-UI框架之Lua层封装-上篇
  3. oracle基础回顾(超详细)
  4. 西门子s7-200smart与西门子v20变频器modbus 西门子s7-200smart与西门子变频器通讯
  5. Linux:命令行使用技巧
  6. jvisualvm的简略介绍
  7. 扔物线Git小册笔记
  8. 胳膊难拧大腿:全美达停产移动处理器
  9. JSON和几个的全局异常处理
  10. 嵌入式ARM平台基于Linux配置24bit RGB输出