zoukankan      html  css  js  c++  java
  • Deeplab

    Deeplab系列是谷歌团队的分割网络.

    DeepLab V1

    CNN处理图像分割的两个问题

    • 下采样导致信息丢失
      maxpool造成feature map尺寸减小,细节信息丢失.
    • 空间不变性
      所谓空间不变性,就是说比如一张狗的图,狗位于图片正中还是某一个角,都不影响模型识别出这是一个狗. 即模型对于输入图像的空间位置不敏感,不管这个图片旋转,平移等,都能够识别. 对分类来说,这是ok的.但是对于分割来说,这就不OK了,图片旋转以后,每一个像素所属的分类当然就改变了.
      究其原因,分类处理的是更"高级"的特征,而分割是对每一个像素做分类,需要更多的细节.

    deeplab v1采用2个方法解决这两个问题

    • 空洞卷积
    • 条件随机场CRF

    空洞卷积

    为什么要有maxpool?
    一方面是为了减小feature map尺寸.一方面也是为了增大feature map中的每一个元素的感受野.

    FCN是怎么做的?
    得到特征图后,用deconv的方式上采样将feature map恢复到原始图像尺寸.但是这种先max pool下采样再deconv上采样的过程势必会损失掉一部分信息.

    deeplab如何解决这个问题?
    deeplab提出了一种dilated conv(空洞卷积)的卷积方式,去替代max pool,但同时感受野不丢失.

    dilated的好处是不做pooling损失信息的情况下,加大了感受野,让每个卷积输出都包含较大范围的信息。,对图像分割这种对空间位置,细节信息很敏感的任务而言,空洞卷积是一种很好的方式.

    空洞卷积的卷积方式如下图所示:

    (a)图对应3x3的1-dilated conv,和普通的卷积操作一样,(b)图对应3x3的2-dilated conv,实际的卷积kernel size还是3x3,但是空洞为1,也就是对于一个7x7的图像patch,只有9个红色的点和3x3的kernel发生卷积操作,其余的点略过。也可以理解为kernel的size为7x7,但是只有图中的9个点的权重不为0,其余都为0。 可以看到虽然kernel size只有3x3,但是这个卷积的感受野已经增大到了7x7(如果考虑到这个2-dilated conv的前一层是一个1-dilated conv的话,那么每个红点就是1-dilated的卷积输出,所以感受野为3x3,所以1-dilated和2-dilated合起来就能达到7x7的conv),(c)图是4-dilated conv操作,同理跟在两个1-dilated和2-dilated conv的后面,能达到15x15的感受野。对比传统的conv操作,3层3x3的卷积加起来,stride为1的话,只能达到(kernel-1)*layer+1=7的感受野,也就是和层数layer成线性关系,而dilated conv的感受野是指数级的增长。

    如何理解空洞卷积

    CRF

    由于CNN天然的空间不变性,使得对分割任务而言,CNN提取到的特征不够精细.所以在特征提取后,我们再加一个CRF,达到更精细的特征提取目的.

    以前写过一篇条件随机场笔记

    说白了,就是一堆特征提取函数(相当于CNN中的卷积核),对不同的特征提取函数赋以不同的权重(相当于全连接层),再做指数化和正则化(相当于softmax)得到一个概率值.

    https://blog.csdn.net/hjimce/article/details/50888915

    DeepLab V2

    相较于v1

    • ASPP
    • 基础特征提取网络由vgg替换为resnet

    重点是ASPP

    ASPP(Atrous Spatial Pyramid Pooling)

    看名字就知道了,空间金字塔.用以解决多尺度问题.即对同一个物体,不管其在图像中是大或小都可以准确识别.

    具体如下:

    用不同的空洞卷积对输入做卷积,再融合不同的feature map.


    如上图所示,(a)是没有用ASPP的,(b)是用了ASPP的结构.

    DeepLab V3

    论文地址:https://arxiv.org/abs/1706.05587
    v3对网络结构做了比较大的改变,主要是:

    • 去掉了crf.
    • 改造了resnet,在resnet中使用空洞卷积和金字塔空洞卷积

    对resnet的改造体现在两点:

    1. 使用空洞卷积,去掉下采样,如此,保证感受野与feature map尺寸不变
    2. 在残差块内部使用ASPP,保证对多尺度的敏感

    使用空洞卷积


    feature map的尺寸减小的同时,相当于空间信息的丢失.图像分割对空间信息很敏感,所以保持feature map的size是非常重要的,deeplab系列的设计思路也是如此,即在保留感受野的情况下,同时保持feature map的size不变
    (a)是普通的不带空洞卷积的方式,(b)通过空洞卷积的方式,在保持了感受野的同时,还没有减小feature map的尺寸.

    aspp


    在block内部使用rate不同的空洞卷积并行地做卷积,再对得到的feature做融合.

    google团队的网络风格就是这样,总是喜欢在一种卷积方式上不断演化,inception系列如此,deeplab系列也是如此.

  • 相关阅读:
    .Net5开发MQTT服务器
    使用Docker搭建MQTT服务器
    使用Docker搭建MQTT服务器
    在Raspberry Pi上安装Docker
    阿里云=>RHSA-2019:1884-中危: libssh2 安全更新
    MediaAPIController
    CentOS7 mysql支持中文
    设置centos7中的mysql5.7不区分表名大小写有关操作
    CentOS7 安装mysql(YUM源方式)
    centos7下安装nginx
  • 原文地址:https://www.cnblogs.com/sdu20112013/p/12310183.html
Copyright © 2011-2022 走看看