deeplab 系列文章

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 系列文章)