美文网首页语义分割
deeplab 系列文章

deeplab 系列文章

作者: horsetif | 来源:发表于2018-08-04 14:55 被阅读80次

    deeplab v1 :semantic image segmentation with deep convolutional nets and fully connected CRFs

    对于传统的DCNN网络来说,其实都是具有不变性的这个特征的,深度学习是十分适合高阶的计算机视觉任务。但是,对于底层的比如semantic segmentation的任务来说,是十分不利的。
    目前的两个大问题就是:1,降采样问题。2,不变形问题。
    对于降采样问题,我们使用’atrous'新型卷积来实现。不变性问题,我们加入CRF来对图像进行优化,最终得到不错的结果。

    网络结构:我们在VGG16中,去掉了最后两个max pooling层,加入了‘atrous’方法。


    image.png image.png

    pipline:


    image.png

    CRF算法:


    image.png

    这里要再仔细看下。

    DeepLabv2:Semantic Image Segmentation with Deep Convolutional Nets,Atrous Convolution,and Fully Connected CRFs

    这篇文章主要的看点是:1,在tensorflow中以模块化方式,实现了'atrous convolution',作为一个非常有效的工具。2,实现了ASPP,‘atrous spatial pyramid pooling',能够十分鲁棒地实现图像分割。3,利用CRF优化 ,推出Dense CRF。

    1,模块化实现‘atrous pooling’

    由于这种卷积方法,很好地平衡了accurate localization(small field-of-view)和context assimilation(large field-of-view)。在具体实现上有两种方法,一种是upsample the filter 或者是对图像稀疏采样,这种不太好。第二种,The second method, originally proposed by [82] and used in [3], [16] is to subsample the
    input feature map by a factor equal to the atrous convolution rate r , deinterlacing it to produce r2 reduced resolution maps, one for each of the r×r possible shifts. 利用tensorflow实现了这种方法。


    image.png
    image.png

    2,实现多尺度ASPP

    多个尺度的洞卷积,并行执行。实现最终结果。


    image.png

    3,不在使用传统的CRF方法,而是利用dense CRF的方法,得到较为优秀的结果。

    DeeplabV3:Rethinking Atrous Convolution for Semantic Image Segmentation

    这篇文章主要是改进了级联的方式,综合运用串行和并行的方式,实现对多尺度物体分割。
    这里,我们加入output_stride,从而来表示最终得到的图片与输入尺度的大小对比。然后使用更加深的网络对图像进行深度分割。



    image.png

    加入这种多尺度的方法主要是由于当空洞卷积越大的时候,他每次卷积的时候的有效权重就会越小(padding)的原因。所以我们应用多尺度的方法,最后加入average pooling的方法,取得一个好的结果。

    Deeplab V3+:Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

    由于在encoder的时候会更加关注多尺度的纹理信息,在decoder的时候可以使得边界更加光滑,我们使用这种结构。同时我们在encoder结构中加入Xception 模型和深度卷积,可以更加快速地实现分割。


    image.png

    1,Atrous convolution

    这里不在赘述,主要是看这个公式。


    image.png

    2,depthwise separable convolution

    为了降低计算量,我们这里可以按照mobile net的方法,先做depthwise的卷积,然后再做1*1的卷积。我们这里把depthwise的卷积改成atrous separable convolution.

    3,使用Deeplabv3作为 encoder:

    我们加入output stride来决定最后输出的尺度比例。只要使用的ASPP的模块。

    4,加入decoder:

    之前我们直接使用bilinearly upsampled的方法,但是这样的结果就导致细节并不锋利。这里我们使用如图的方法。

    5,Modified Aligned Xception

    使用目前最新的aligned Xception,但是做了细微的修改。1,更深的Xception。2,把所有max pooling全都换成depthwise separable convolution with striding。3,在每一个3×3的深度卷积之后都加入BN和ReLU。

    相关文章

      网友评论

        本文标题:deeplab 系列文章

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