本文是《UNet++: A Nested U-Net Architecture for Medical Image Segmentation》论文的阅读笔记。强烈建议大家去看下作者对这篇论文的思维过程:研习UNet。

文章提出了一个UNet++的网络,它是一个使用了深度监督(deep supervised)的编码器-解码器结构,在解码器和编码器之间有一系列的密集跳跃连接(dense skip connections)。

一、跳跃连接的重要性

有很多效果不错的网络结构都采用了跳跃连接的方式,如UNet网络和FCN(全卷积网络)。不同的是,FCN的跳跃连接是通过元素级的相加来实现的,而UNet的跳跃连接是通过通道的拼接来实现的。此外,ResNet中的shortcut和DenseNet中的密集连接(dense connection)也有异曲同工之妙。跳跃连接可以让解码器中深层的、语义的、粗糙的特征图和编码器中浅层的、低级的、精细的特征图相结合。

由于医学图像是对手术有指导意义,而万一有所偏差则会产生较为严重的后果,所以医学图像的处理要求比自然图像有更高的精度。

二、网络结构

UNet++网络的结构如上图(a)所示,其中黑色的部分是原来的UNet,绿色和蓝色的部分是在跳跃路径上的密集卷积块(dense convolution blocks),红色的连线表示深度监督。

UNet++与原始的UNet主要有三点不同之处:

  • 在跳跃路径上有卷积层(图中绿色部分),减小了编码器和解码器特征图之间的语义鸿沟(semantic gap)
  • 在跳跃路径上有密集跳跃连接(图中蓝色部分),提升了梯度流
  • 有深度监督(图中红色部分),可以让模型实现剪枝和提升

1. 跳跃连接

让 x i , j x^{i,j} xi,j表示节点 X i , j X^{i,j} Xi,j的输出,其中 i i i表示层数, j j j表示当前层的第 j j j个卷积层。 x i , j x^{i,j} xi,j就可以通过一下公式来计算:
x i , j = { H ( x i − 1 , j ) , j = 0 H ( [ [ x i , k ] k = 0 j − 1 , U ( x i + 1 , j − 1 ) ] ) , j > 0 x^{i, j}=\left\{\begin{array}{l} \mathcal{H}\left(x^{i-1, j}\right), \quad j=0 \\ \mathcal{H}\left(\left[\left[x^{i, k}\right]_{k=0}^{j-1}, \mathcal{U}\left(x^{i+1, j-1}\right)\right]\right), \quad j>0 \end{array}\right. xi,j={H(xi−1,j),j=0H([[xi,k]k=0j−1​,U(xi+1,j−1)]),j>0​
其中,函数 H ( ⋅ ) \mathcal H(\cdot) H(⋅)表示卷积操作和激活函数, U ( ⋅ ) \mathcal U(\cdot) U(⋅)表示上采样层, [ ] [] []表示拼接层(concatenation layer)。UNet++中的密集连接如上图(b)所示。

2. 深度监督

模型一共有四层,也就是有四个分支(语义级),深度监督有两种模式:

  • 精确模式,在该模式下所有分割分支的结果取平均值得到最终的结果;
  • 快速模式,在该模式下只选择一个分割分支,其他的被剪枝。

当某个分支的权重为0时,就相当于是对其进行剪枝了,示意图如上图©所示。

用二值交叉熵和DICE系数的结合来作为四个语义级的损失函数,如下所示:
L ( Y , Y ^ ) = − 1 N ∑ b = 1 N ( 1 2 ⋅ Y b ⋅ log ⁡ Y ^ b + 2 ⋅ Y b ⋅ Y ^ b Y b + Y ^ b ) \mathcal{L}(Y, \hat{Y})=-\frac{1}{N} \sum_{b=1}^{N}\left(\frac{1}{2} \cdot Y_{b} \cdot \log \hat{Y}_{b}+\frac{2 \cdot Y_{b} \cdot \hat{Y}_{b}}{Y_{b}+\hat{Y}_{b}}\right) L(Y,Y^)=−N1​b=1∑N​(21​⋅Yb​⋅logY^b​+Yb​+Y^b​2⋅Yb​⋅Y^b​​)
其中, Y b ^ \hat{Y_b} Yb​^​和 Y b Y_b Yb​分别表示第 b b b张图片的预测概率和ground truth, N N N表示batch size。

三、实验

实验过程使用了四个数据集,如表1所示,分别为:。

用于作比对的网络模型选用的是原始的UNet和自定义的wide UNet模型。评价指标选用的是DICE系数和IoU(交并比)。采用学习率为3e-4的Adam作为训练的优化器,UNet和wide UNet的详细结构如表2所示。第 i i i层的卷积层使用的是 k k k个卷积核为 3 × 3 3\times3 3×3或 3 × 3 × 3 3\times3\times3 3×3×3的卷积操作,其中 k = 32 × 2 i k=32\times2^i k=32×2i。在深度监督时,每个目标节点 { x 0 , j ∣ j ∈ { 1 , 2 , 3 , 4 } } \{x^{0,j}|j\in\{1,2,3,4\}\} {x0,j∣j∈{1,2,3,4}}后跟着的是 1 × 1 1\times1 1×1的卷积操作和sigmoid激活函数。


实验结果如上图和表3所示,在IoU指标上,没有深度监督(DS)的UNet++比baseline平均提升了2.8到3.3个点。有深度监督的UNet++平均提升了0.6个点。

上图显示的是不同的剪枝下模型的效果和时间对比图,其中UNet++ L i L^i Li表示的是在第 i i i个level进行剪枝的UNet++模型。可以发现UNet++ L 3 L^3 L3在损失一点精度的情况下实现了时间的大幅缩减。

四、其他

根据作者《研习UNet》的文章,我下面来捋一下作者的idea产生的过程。

首先作者意识到了跳跃连接会提升模型的效果,但是模型的深度为多少时才最合适呢?当然我们可以创建不同深度的模型然后分别进行实验,找出最优的那个,但是这样太遭罪了。下图是不同深度下的网络模型,所以作者想可不可以将不同深度的模型拼成一个呢?于是就得到了UNet++网络的雏形。

拼凑的结果如下图所示,但是该模型有个问题,就是红色三角形的部分在反向传播时不能更新,因为 X 0 , 3 , X 1 , 2 , X 2 , 1 X^{0,3},X^{1,2},X^{2,1} X0,3,X1,2,X2,1和右边的操作没有路径连接。

这时有两种解决办法,一种是上面提到的深度监督,另一种更直接一点,将 X 0 , 3 , X 1 , 2 , X 2 , 1 X^{0,3},X^{1,2},X^{2,1} X0,3,X1,2,X2,1和右边的操作连接起来就得了。

但是这样又有一个问题,UNet中使用的是长连接,而上图使用的是短连接,而作者认为长连接是有必要的。所以就将其改成了密集连接的形式,如本文最开始的那张图所示。

而深度监督的加入又让模型具有了剪枝的能力,如下图所示,当某个分支的权重为0时,就相当于做了剪枝操作。

不得不说,妙啊!

【论文笔记】UNet++:一种用于医学图像分割的嵌套U-Net结构相关推荐

  1. UTNet 用于医学图像分割的混合Transformer

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨李响 来源丨 GiantPandaCV 文章目录 1 概述 2 浅析 Transformer ...

  2. 基于U-Net系列算法的医学图像分割(课程设计)

    基于U-Net系列算法的医学图像分割(课程设计) 参考论文:包括U_Net/R2U_Net/AttU_Net/R2AttU_Net,如下图所示: 基于Pytorch的代码和数据集下载地址:下载地址 运 ...

  3. 【论文阅读】一种用于消歧和语义表示的统一模型 A Unified Model for Word Sence Representation and Disambiguation

    [论文阅读]一种用于消歧和语义表示的统一模型 A Unified Model for Word Sence Representation and Disambiguation 问题 解决方案 模型搭建 ...

  4. (脑肿瘤阅读笔记:四十六)KIU-Net用于医学图像分割和体积分割的过完备卷积网络架构

    目录 Title:KiU-Net: Overcomplete Convolutional Architectures for Biomedical Image and Volumetric Segme ...

  5. 【论文汇总】CVPR2020语义分割医学图像分割paper汇总

    语义分割&医学图像分割 segmentation@CVPR2020 CVPR2020语义分割和医学图像分割文章总结 文章目录 语义分割&医学图像分割 segmentation@CVPR ...

  6. 论文笔记:一种适用于NILM的暂态事件检测算法(滑动窗双边CUSUM)

    目录 1. 前言 2. 双边CUSUM算法原理 3. 引入滑动窗 4. 算法参数 5. 算法流程 6. Next Action 1. 前言 本文是对以下论文的阅读笔记,附有一定的解读和思考. 牛卢璐, ...

  7. 论文浅尝 | 一种用于多关系问答的可解释推理网络

    论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答. 来源:COLING 2018 链接:https://www.aclweb.org/anthology/C18-1171 问题背景与 ...

  8. NeurlPS 2022 | 用于医学图像分割的类感知生成对抗Transformer

    论文标题: Class-Aware Generative Adversarial Transformers for Medical Image Segmentation 收录会议: NeurlPS 2 ...

  9. 【论文笔记】ICNet:用于无监督医学图像配准的逆一致性模型

    本文是文章<Inverse-Consistent Deep Networks for Unsupervised Deformable Image Registration>的阅读笔记. 过 ...

最新文章

  1. 刷题一个4ms的程序,代码如何优化到3ms再到2ms?
  2. 从网页中读取数据 python_数据分析硬核技能:用 Python 爬取网页
  3. Codeforces 858A. k-rounding 数论
  4. mysql 数据传输 定时,MySQL数据库定时备份的实现方法
  5. HTML页面显示透视效果,html – CSS – 对背景图像的“敲除”/透视效果
  6. 鸿蒙os2.0公测机型,鸿蒙OS2.0第二期第三期公测机型陆续公布 麒麟980和麒麟820将登场...
  7. vim 实用技巧 查找和替换
  8. 【干货分享】通用工具类
  9. .sig 签名文件怎么使用
  10. 四、BDB JE学习(对java中内置对象的存储)
  11. 文字和表单(checkbox/radio)元素垂直对齐方法,兼容Firefox和IE。
  12. 解码H264文件的一些基础知识
  13. 图片转Excel表格在线工具,分享几款不错的工具!
  14. 四,AXI总线协议解析
  15. Java经典书籍推荐
  16. 解读物联网八大环节供应链(附13大电子行业产业链全景图)
  17. a href标签下载文件遇到下载失败 打开文件的问题
  18. 数据分析 知识体系 Python篇
  19. 解决SVN文件不显示绿色小钩图标问题
  20. <Zhuuu_ZZ>大数据技术之Flume详解

热门文章

  1. 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户
  2. java中带参数的try(){}语法含义是什么?
  3. Unity:图片翻动浏览效果Demo
  4. Wiki with Adjacent Letters
  5. ROS语音控制——小乌龟按设定图形路线运动
  6. 使用C#制作一个完整的聊天系统
  7. unity内置浏览器的使用
  8. linux recv返回值,recv recvfrom
  9. 音乐播放器的html 代码大全,关于HTML 音乐播放器代码|音乐播放器网页代码大全(转)...
  10. 斯坦福大学计算机科学申请,美国斯坦福大学计算机科学专业申请条件有哪些?核心领域有哪些?...