可变形卷积神经网络 | Deformable Network

  • 论文标题:Deformable Convolutional Networks

  • 论文链接:https://arxiv.org/abs/1703.06211 可变形卷积神经网络 | Deformable Network

所要解决的问题

视觉识别的关键挑战是如何在对象比例、姿势等形变问题上适应几何变化或对几何转换建模。一般情况下有以下两种方法:

  • 1、通常是对数据集进行仿射变换。如角度变化、剪切等以此来扩充数据集,增加算法的鲁棒性。

  • 2、使用变换不变的特征和算法。如SIFT和基于滑动窗口的对象检测。

这两种方法都有很大的局限性:几何形变被假设是固定和已知的,这是一种先验信息,用这些已知的形变去处理未知的形变是不合理的;手工设计的特征或算法无法应对过度复杂的形变,即使该形变是已知的。

所以本文作者提出了两种模块可以大大提高CNN对目标几何变换的鲁棒性。

简介

本文提出了两种模块:

  • Deformable convolution:它将2D偏移量添加到标准卷积中的常规网格采样位置,可以使采样网格*变形。如下图所示。这些offset是通过附加的卷积层从前面的特征图中学习的。因此,变形以局部,密集和自适应的方式取决于输入特征。

可变形卷积神经网络 | Deformable Network

(a)是常见的3x3卷积核的采样方式,(b)是采样可变形卷积,加上偏移量之后的采样点的变化,其中(c)(d)是可变形卷积的特殊形式

  • Deformable ROI polling:它为ROI Pooling的常规bin分区的每个位置添加了一个offsetoffset也是从先前的特征图和ROI polling中学习,从而可以对具有不同形状的对象进行自适应定位。

这两个模块都是轻量级的,它们为offset learning添加少量参数和计算,可以很稳定的替换CNN中的常规卷积。并可以通过反向传播进行端到端的训练。

Deformable Convolution Networks

Deformable convolution

在可变形卷积中,可变形卷积操作和池化操作都是2维的,都是在同一channel上进行的,常规的卷积操作主要可以分为两部分:

(1)在输入的feature map上使用规则网格R进行采样;

(2)进行加权运算,R定义了感受野的大小和扩张。

常规卷积对于在输出的feature map上的每个位置P0,通过下列式子进行计算:

可变形卷积神经网络 | Deformable Network 其中,Pn是对R中所列位置的枚举。

可变形卷积的操作是不同的,在可变形网络的操作中,常规的规则网格R通过增加一个偏移量进行扩张,同样的位置P0变为:

可变形卷积神经网络 | Deformable Network

现在,采样的位置变成了不规则位置,由于偏移量△Pn通常是小数,因此我们通过双线性插值法进行实现,公式为: 可变形卷积神经网络 | Deformable Network

如下图所示,大体流程为,在输入的feature map中,原始的通过sliding window得到的是绿框,引入可变形卷积后,我们把原来的卷积网路分为两路,共享input feature map,其中上面的一路用一个额外的conv层来学习offset,得到HW2N的输出offset,其中,2N的意思是有x,y两个方向的偏移,得到这个之后,我们对原始卷积的每一个窗口,都不再是原来规整的sliding window(input feature map中的绿框)而是经过平移后的window(input feature map中的篮框),取得数据后计算过程和常规卷积一样,即input feature map和offset共同作为deformable conv层的输入。

可变形卷积神经网络 | Deformable Network

Deformable ROI Polling

ROI Pooling模块是two-stage中常见的池化方法,基于目标检测方法中所有的region proposal。将任意输入大小的矩形调整为固定尺寸大小的feature。给定input feature map x 和一个大小为w * h,位于左上角的区域P0,ROI Pooling将会把这个ROI划分为k*k个bins,同时输出一个size为k * k的feature map y,可以用如下公式表示:

可变形卷积神经网络 | Deformable Network

其中,nij是bin中像素的数量 有了这个基础,我们再来看可变形池化,公式如下: 可变形卷积神经网络 | Deformable Network

相比普通ROI Pooling,同样增加了一个offset,下图为其网络结构:具体操作为,首先,通过普通的ROI Pooling得到一个feature map,如下图中的绿色块,通过得到的这个feature map,加上一个全连接层,生成每一个位置的offset,然后按照上面的公式得到△Pij,为了让offset的数据和ROI 的尺寸匹配,需要对offset进行微调。全连接层的参数可以通过反向传播进行学习。 可变形卷积神经网络 | Deformable Network

把可变形卷积用在SOTA网络结构上

可变形卷积神经网络 | Deformable Network

可变形过滤器的三个级别采样位置

可变形卷积神经网络 | Deformable Network

可变形ROI Polling的offset阐述

可变形卷积应用在RCNN、Faster-RCNN等SOTA网络架构

可变形卷积神经网络 | Deformable Network可变形卷积神经网络 | Deformable Network

由上述表可以得到:把Deformable ConvNet应用到RCNN、Faster—RCNN上,性能都得到了不错的提升,说明可变形网络可行且有效。

结论

本文提出了可变形的ConvNets,它是一种简单,高效,深入且端到端的解决方案,用于对密集的空间变换进行建模。结果表明,对于复杂的视觉任务,比如目标检测和语义分割,可变形卷积都可以大幅度提高各项性能。

简单的代码实现

https://github.com/4uiiurz1/pytorch-deform-conv-v2

上一篇:Mac下载brew,简单,中文,可以选择镜像源的


下一篇:Mac安装Homebrew(Mac系统升级后