【论文笔记】UNet++:一种用于医学图像分割的嵌套U-Net结构
本文是《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^)=−N1b=1∑N(21⋅Yb⋅logY^b+Yb+Y^b2⋅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结构相关推荐
- UTNet 用于医学图像分割的混合Transformer
点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨李响 来源丨 GiantPandaCV 文章目录 1 概述 2 浅析 Transformer ...
- 基于U-Net系列算法的医学图像分割(课程设计)
基于U-Net系列算法的医学图像分割(课程设计) 参考论文:包括U_Net/R2U_Net/AttU_Net/R2AttU_Net,如下图所示: 基于Pytorch的代码和数据集下载地址:下载地址 运 ...
- 【论文阅读】一种用于消歧和语义表示的统一模型 A Unified Model for Word Sence Representation and Disambiguation
[论文阅读]一种用于消歧和语义表示的统一模型 A Unified Model for Word Sence Representation and Disambiguation 问题 解决方案 模型搭建 ...
- (脑肿瘤阅读笔记:四十六)KIU-Net用于医学图像分割和体积分割的过完备卷积网络架构
目录 Title:KiU-Net: Overcomplete Convolutional Architectures for Biomedical Image and Volumetric Segme ...
- 【论文汇总】CVPR2020语义分割医学图像分割paper汇总
语义分割&医学图像分割 segmentation@CVPR2020 CVPR2020语义分割和医学图像分割文章总结 文章目录 语义分割&医学图像分割 segmentation@CVPR ...
- 论文笔记:一种适用于NILM的暂态事件检测算法(滑动窗双边CUSUM)
目录 1. 前言 2. 双边CUSUM算法原理 3. 引入滑动窗 4. 算法参数 5. 算法流程 6. Next Action 1. 前言 本文是对以下论文的阅读笔记,附有一定的解读和思考. 牛卢璐, ...
- 论文浅尝 | 一种用于多关系问答的可解释推理网络
论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答. 来源:COLING 2018 链接:https://www.aclweb.org/anthology/C18-1171 问题背景与 ...
- NeurlPS 2022 | 用于医学图像分割的类感知生成对抗Transformer
论文标题: Class-Aware Generative Adversarial Transformers for Medical Image Segmentation 收录会议: NeurlPS 2 ...
- 【论文笔记】ICNet:用于无监督医学图像配准的逆一致性模型
本文是文章<Inverse-Consistent Deep Networks for Unsupervised Deformable Image Registration>的阅读笔记. 过 ...
最新文章
- 刷题一个4ms的程序,代码如何优化到3ms再到2ms?
- 从网页中读取数据 python_数据分析硬核技能:用 Python 爬取网页
- Codeforces 858A. k-rounding 数论
- mysql 数据传输 定时,MySQL数据库定时备份的实现方法
- HTML页面显示透视效果,html – CSS – 对背景图像的“敲除”/透视效果
- 鸿蒙os2.0公测机型,鸿蒙OS2.0第二期第三期公测机型陆续公布 麒麟980和麒麟820将登场...
- vim 实用技巧 查找和替换
- 【干货分享】通用工具类
- .sig 签名文件怎么使用
- 四、BDB JE学习(对java中内置对象的存储)
- 文字和表单(checkbox/radio)元素垂直对齐方法,兼容Firefox和IE。
- 解码H264文件的一些基础知识
- 图片转Excel表格在线工具,分享几款不错的工具!
- 四,AXI总线协议解析
- Java经典书籍推荐
- 解读物联网八大环节供应链(附13大电子行业产业链全景图)
- a href标签下载文件遇到下载失败 打开文件的问题
- 数据分析 知识体系 Python篇
- 解决SVN文件不显示绿色小钩图标问题
- <Zhuuu_ZZ>大数据技术之Flume详解
热门文章
- 连夜干出来一个自动处理【微信消费者投诉管理系统】,支持多商户
- java中带参数的try(){}语法含义是什么?
- Unity:图片翻动浏览效果Demo
- Wiki with Adjacent Letters
- ROS语音控制——小乌龟按设定图形路线运动
- 使用C#制作一个完整的聊天系统
- unity内置浏览器的使用
- linux recv返回值,recv recvfrom
- 音乐播放器的html 代码大全,关于HTML 音乐播放器代码|音乐播放器网页代码大全(转)...
- 斯坦福大学计算机科学申请,美国斯坦福大学计算机科学专业申请条件有哪些?核心领域有哪些?...