美文网首页
初探Unet网络

初探Unet网络

作者: LiBiscuit | 来源:发表于2019-12-02 19:07 被阅读0次

    十二月快乐鸭!21世纪10年代的最后一个12月 也要加油鸭!
    又是拖了一周才来写…真的不能这么懒啦!
    今天记录的内容来自于@一只大南瓜 之前让我看的Unet网络。
    ————————

    Unet网络

    对于一个网络模型来说,我个人认为,主要看的是:网络模型提出的背景、网络模型的结构、网络模型的训练以及结果、网络模型的应用和缺陷不足。

    背景

    先引入涉及的处理问题以建立的基础:图像分割
    图像分割,简单来说就是给出一张图像,分割出图像的中所需物体的一个完整准确的轮廓,其实也就相当于现实中的“抠图”。如下图,就是图像的分割。

    实现图像分割的方法有很多,这边只叙述一下unet的建立基础
    FCN(全卷积网络)
    先上图,如下所示: 网络的整体结构分为:全卷积部分和反卷积部分。
    全卷积部分:借用了一些经典的CNN网络并把最后的全连接层换成卷积,用于提取特征,形成热点图;
    反卷积部分:将小尺寸的热点图上采样得到原尺寸的语义分割图像。
    简单来说,就是将原本CNN过程中最后的 Fully Connected 换成了卷积,直接输出目标物体所属的像素范围。
    FCN的主要技术
    1.卷积化(Convolutional)
    全连接层(6,7,8)都变成卷积层,适应任意尺寸输入,输出低分辨率的分割图片。为什么要把全连接层变为卷积层?【当我们输入的图片大小和卷积核大小一致时,其实等价于建立全连接,但是还是有区别。全连接的结构是固定的,当我们训练完时每个连接都是有权重的。而卷积过程我们其实为训练连接结构,学习了目标和那些像素之间有关系,权重较弱的像素我们可以忽略。连接不会学习过滤,会给每个连接分权重并不会修改连接关系。卷积则是会学习有用的关系,没用得到关系它会弱化或者直接 dropout。这样卷积块可以共用一套权重,减少重复计算,还可以降低模型复杂度。】
    2.上采样(Upsample)
    上采样指的是任何可以让图像变成更高分辨率的技术。最简单的方式是重采样和插值:将输入图片进行rescale到一个想要的尺寸,而且计算每个点的像素点,使用如双线性插值等插值方法对其余点进行插值来完成上采样过程。
    3.跳跃结构(Skip Layer)
    如果利用之前提到的上采样技巧对最后一层的特征图进行上采样的到原图大小的分割,由于最后一层的特征图太小,我们会损失很多细节。因而作者提出增加Skips结构将最后一层的预测(有更富的全局信息)和更浅层(有更多的局部细节)的预测结合起来,这样可以在遵守全局预测的同时进行局部预测。

    三个技术都已构建模型之中,通过一定标记数据的训练后,模型已经学会了如何识别类别,并且能反卷积得到对应类别所在的像素区域。输出的效果如下:


    总的来说:FCN对图像进行像素级的分类,从而解决了语义级别的图像分割问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
    这部分可参考:全卷积网络 FCN 详解
    这里不详细展开
    重点看看在FCN基础上改进的unet
    网络结构如下:
    详解:
    1.输入是572x572的,但是输出变成了388x388,这说明经过网络以后,输出的结果和原图不是完全对应的,这在计算loss和输出结果都可以得到体现。
    2.蓝色箭头代表3x3的卷积操作,并且stride是1,padding策略是vaild,因此,每个该操作以后,featuremap的大小会减2。
    3.红色箭头代表2x2的maxpooling操作,需要注意的是,此时的padding策略也是vaild(same 策略会在边缘填充0,保证featuremap的每个值都会被取到,vaild会忽略掉不能进行下去的pooling操作,而不是进行填充),这就会导致如果pooling之前featuremap的大小是奇数,那么就会损失一些信息 。
    4.绿色箭头代表2x2的反卷积操作,这个只要理解了反卷积操作,就没什么问题,操作会将featuremap的大小乘2。
    5.灰色箭头表示复制和剪切操作,可以发现,在同一层左边的最后一层要比右边的第一层要大一些,这就导致了,想要利用浅层的feature,就要进行一些剪切,也导致了最终的输出是输入的中心某个区域。
    6.输出的最后一层,使用了1x1的卷积层做了分类。

    U-net网络比较简单,前半部分也就是图中左边部分的作用是特征提取,后半部分也就是图中的右边部分是上采样。
    在一些文献中也把这样的结构叫做编码器-解码器结构。由于此网络整体结构类似于大写的英文字母U,故得名U-net。
    U-net与其他常见的分割网络有一点非常不同的地方:U-net采用了完全不同的特征融合方式:拼接,U-net采用将特征在channel维度拼接在一起,形成更厚的特征。而FCN融合时使用的对应点相加,并不形成更厚的特征。
    总结一下:U-net建立在FCN的网络架构上,作者修改并扩大了这个网络框架,使其能够使用很少的训练图像就得到很 精确的分割结果。添加上采样阶段,并且添加了很多的特征通道,允许更多的原图像纹理的信息在高分辨率的layers中进行传播。U-net没有FC层,且全程使用valid来进行卷积,这样的话可以保证分割的结果都是基于没有缺失的上下文特征得到的,因此输入输出的图像尺寸不太一样

    Unet可以较好地应用在医学图像领域,具体可参考如下:
    Unet神经网络为什么会在医学图像分割表现好?
    其余应用:


    ————————
    搬运参考:Unet学习笔记
    【深度学习论文】:U-Net

    相关文章

      网友评论

          本文标题:初探Unet网络

          本文链接:https://www.haomeiwen.com/subject/pxdfgctx.html