zoukankan      html  css  js  c++  java
  • 可变形卷积网络:Deformable Convolutional Networks

    论文地址 :https://arxiv.org/abs/1703.06211
    工程地址:https://github.com/msracver/Deformable-ConvNets

    0. 摘要
      卷积神经网络对位置变化的建模存在天然缺陷,这是由于网络固定的位置结构。该论文提出两个新的模块来增强CNNs的这种建模能力,称为deformable convolution and deformable RoI pooling,两个模块的基本思想采样时增加额外的参数offets并学习这种偏移,新模块可以直接替换现有CNNs中的对应方法并且可以通过后向传播算法端到端训练,由此产生deformable convolutional networks。实验表明这两个模块对于目标检测任务和语义分割任务的精度都有一定的提升。

    1. 介绍
      视觉任务的一大挑战在于如何在变形物体上有效泛化或者说在物体层面对各种变形进行建模,一般有两种方法,一是建立包含各种变形的数据集,二是使用具有平移不变性的特征和算法。然而这两种方法存在两个问题:

    (1)变形有固定的方向而且可知
    (2)手工设计的具有不变性的特征和算法对于具有复杂变形的物体,可能无法描述或这描述过于困难。
      尽管CNNs在各种计算机视觉任务上都取得了非常好的效果但是也无法完全解决上述两个问题,各种方法对物体变形的建模能力无非来自数据增广,大模型和简单设计的模块{比如最大池化在轻微的变形上的效果}
      简而言之,由于内部模块的结构,CNNs对大的未知的变换的建模能力天然不足:卷积单元对输入的特征图在固定的位置进行采样;池化层不断减小着特征图的尺寸;RoI池化层产生空间位置受限的RoI。网络内部缺乏能够解决这个问题的模块,这会产生显著的问题,例如,同一CNN层的激活单元的感受也尺寸都相同,这对于编码位置信息的浅层神经网络并不可取,因为不同的位置可能对应有不同尺度或者不同形变的物体,这些层需要能够自动调整尺度或者感受也的方法。再比如,目标检测虽然效果很好但是都依赖于基于特征提取的边界框,这并不是最优的方法,尤其是对于非网格状的物体而言。
      该论文介绍了两个新型的模块极大地增强了CNNs对于变形目标的建模能力,1) Deformable convolution: 在常规的网格状空间采样中加入2D偏移如下图所示; 2) Deformable RoI pooling: 在常规RoI池化的bin位置加入偏移。

     两个模块都是轻量的,通过增加较少的参数和计算用于offsets的学习,替换标准CNNs中对应的方法简单快捷形成的网络称为:Deformable ConvNets
      论文中提出的方法与空间变换网络和可变形模型共享浅层特征,二者都有变换相关的参数并且从数据中学习,不同在于论文提出的方法能够以较为简单有效的方式处理较为复杂的变形。

     

     

    如上图所示,偏差是通过一个卷积层来获得的,其卷积核与普通的卷积层无异。输出的偏差域和输入特征图的尺寸相同,通道维度的2N对应N 二维偏移。生成偏移和输出特征的卷积核同时训练,为了学习偏移,梯度通过双线性操作后向传播。

    2.2 Deformable RoI Pooling

     注意:可变形卷积网络与传统网络结构上的区别如下图所示:
    在这里插入图片描述

    可变形卷积的学习过程?

    在这里插入图片描述
    图a是标准卷积的采样过程,图b是可变形卷积的采样过程。

    我们一层层的看:
    最上面的图像是在大小不同的物体上的激活单元。
    中间层是为了得到顶层激活单元所进行的采样过程,左图是标准的3x3方阵采样,右图是非标准形状的采样,但是采样的点依然是3x3.
    最下面一层是为了得到中间层进行的采样区域。明显发现,可变形卷积在采样时可以更贴近物体的形状和尺寸,而标准卷积无法做到这一点。

    可变形卷积如何实现?
    上面我们说过,可变形卷积是在传统卷积的基础上,增加了调整卷积核的方向向量,使的卷积核的形态更贴近特征物。那么这个过程是如何实现的?下面我们详细说一下这个过程。

    ① 我们一开始,和正常的卷积神经网络一样,根据输入的图像,利用传统的卷积核提取特征图。

    ②我们把得到的特征图作为输入,对特征图再施加一个卷积层,这么做的目的是为了得到可变形卷积的变形的偏移量。

    ③偏移层是2N,是因为我们在平面上做平移,需要改变x 值和y 值两个方向。

    ④在训练的时候,用于生成输出特征的卷积核和用于生成偏移量的卷积核是同步学习的。其中偏移量的学习是利用插值算法,通过反向传播进行学习。

     

     Ref:

          (40条消息) 可变形卷积Deformable Convolution Net(DCN)理解_scut_salmon的博客-CSDN博客_dcn可变形卷积

           (40条消息) 可变形的卷积网络_yeler082的博客-CSDN博客_可变形卷积

           (40条消息) deformable convolution(可变形卷积)算法解析及代码分析_mykeylock的博客-CSDN博客_可变形卷积代码

  • 相关阅读:
    WebService帮助类改良版,支持多webservice
    .NET-list扩展方法Distinct去重
    C#创建泛型类T的实例的三种方法
    划水网站
    DataGridView增加右键取消操作
    Sql Server 快捷键
    SQL Server中使用convert进行日期转换
    ToolStrip 选中某一项打勾
    H5实现手写功能
    git使用
  • 原文地址:https://www.cnblogs.com/cy0628/p/15572685.html
Copyright © 2011-2022 走看看