论文阅读——U-Net论文总结与复现

本文详述了U-Net卷积神经网络在医学图像分割中的应用,它采用编码器-解码器结构,通过卷积和池化操作提取特征,并通过特征图拼接融合浅层与深层信息。U-Net网络结构中,编码器缩小尺寸增加通道,解码器则反之,同时利用中心裁剪确保特征图匹配。训练时,使用one-hot编码和交叉熵损失函数,预测时通过argmax获取类别。在PaddlePaddle框架下成功复现了该模型,输出与输入尺寸相同。
摘要由CSDN通过智能技术生成

论文【U-Net: Convolutional Networks for Biomedical Image Segmentation】2015 MICCAI

UNet是为了解决医学图像分割问题而提出的CNN模型,谷歌学术目前引用已经达到20000左右,是非常有影响力的工作。

UNet沿袭了FCN中的编码器-解码器结构,并将浅层与深层信息的融合做的更加彻底。论文中网络结构图如下:
在这里插入图片描述
上图的左边就是编码器部分,这里通过不断进行卷积和池化的操作将输入图像的特征图尺寸不断变小,将特征图通道数不断增加。可以看到UNet作者采用了和VGG类似的策略,每次pooling特征图的边长减半,通道数变为原来的2倍。

上图的右边就是解码器部分,这里通过不断的卷积和反卷积将特征图尺寸不断增大,将特征图通道不断减小。可以看到编码器阶段的特征图被拷贝过来,与解码器阶段的的特征图拼接在一起参与后面的卷积与反卷积运算,相当于把浅层信息融合进来。

编码器与解码器阶段特征图的融合使用concat的方式,即将特征图大小相同的矩阵在通道维度上拼接起来。从图中可以看出编码器与解码器阶段的特征图由于卷积池化的原因大小并不完全相同,作者通过中心裁剪的方式将编码器阶段特征图裁剪了一下,使之与解码器对应阶段特征图大小相同。(裁剪可从图中特征图上的虚线可以看出)

另外,直接相加的融合方式也可以考虑,效果不一定比拼接差,而且显存消耗更小。

网络最终的输出是与输入大小相同的图像,通道数即为类别数目。最后用一个softmax就可以将每个位置像素点在各个通道的值变为分属各个类别的概率。训练时,将标签用one-hot编码也变成n个通道的图像(n为类别数),再用交叉熵损失函数计算。预测时,用argmax函数取每个位置概率最大值所在的通道,该像素点即被分类为该通道对应类别。

图中可以看出输出和输入并不相同,这是因为作者设置输入图像的时候进行了膨胀采样,实际预测的是输入图像的中心部分。至于为什么这么做,原因可能有以下几点:

  1. 边缘像素参与卷积比中心像素少的多,所以预测效果可能不好,只预测中心部分可以规避这一点。
  2. 原始图像很大的话直接送入网络可能显存不足,此时可通过无重叠裁剪patch的方法每次预测一部分。但这样会带来一个问题,即patch边缘像素不能考虑在原图中的四周信息,预测效果不好。此时通过重叠的膨胀采样只预测中心的方式可以解决这一点。

复现,在paddlepaddle框架下UNet网络代码如下:

import numpy as np
import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph import to_variable
from paddle.fluid.dygraph import Layer
from paddle.fluid.dygraph import Conv2D
from paddle.fluid.dygraph import BatchNorm
from paddle.fluid.dygraph import Pool2D
from paddle.fluid.dygraph import Conv2DTranspose

class Encoder(Layer):
    def __init__(self, num_channels, num_filters):
        super().__init__()
        self.conv1 = Conv2D(num_channels,
                            num_filters,
                            filter_size=3,
                            stride=1,
                            padding=1)
        self.bn1 = BatchNorm(num_filters, act='relu')

        self.conv2 = Conv2D(num_filters,
                            num_filters,
                            filter_size=3,
                            stride=
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值