Deformable ConvNets
可变形卷积网络v1
论文:Deformable Convolutional Networks
2017 IEEE International Conference on Computer Vision
引入了两个新的模块来增强cnn的转换建模(transformation model capability)能力:
CNN中的 SIFT?
- 可变卷积 deformable convolution;
- 可变RoI池 deformable RoI pooling。
这两种方法都是基于在没有额外监督的情况下,用额外的偏移量来增加模块中的空间采样位置,并学习目标任务的偏移量。
Both are based on the idea of augmenting the spatial sampling locations in the modules with additional offsets and learning the offsets from the target tasks, without additional supervision.
新模块可以很容易地取代现有cnn中的普通模块,并可以很容易地通过标准的反向传播进行端到端训练,从而产生可变形的卷积网络。
Introduction
视觉识别中的一个关键挑战是如何适应物体尺度、姿态、视点和部分变形的几何变化或模型几何变换。
作者指出:传统的方法有两种,一是 数据增强;二是 使用尺度不变特征,如 SIFT (scale invariant feature transform) 和 滑动窗口目标检测的范例。作者认为它们存在两个缺点:1. 假设几何变换是固定且已知的,如数据增强/设计特征和算法时所使用的先验知识,这降低了其泛化能力;2. 手动设计的不变特征和算法对于复杂的变化transformation 时困难的,甚至不可行的,即使我们知道这些变化transformation。
CNN 也同样面临这两个问题,它们的泛化能力主要来自 数据增强、大模型、人工设计的模块(小型平移不变的 max-pooling)
作者认为,当前那些目标检测方法依赖于基于特征提取的原始的 bounding box,这是此有的,特别对于非刚性物体(non-rigid objects).
在这项工作中,我们引入了两个新的模块,大大提高了cnn 模型的几何变换的能力 ——
capability of modeling geometric transformations.。
可变形卷积示意图:
可变形卷积:通过额外的卷积层,从前面的特征映射中学习偏移量。因此,变形以局部、密集和自适应的方式取决于输入特征。
[23] M. Jaderberg, K. Simonyan, A. Zisserman, and K. Kavukcuoglu. Spatial transformer networks. In NIPS, 2015.
[10] P. F. Felzenszwalb, R. B. Girshick, D. McAllester, and D. Ramanan. Object detection with discriminatively trained part-based models. TPAMI, 2010.
作者相比于前人空间变化的那些工作(spatial transform networks [23] and deformable part models [10].),他认为 可变形卷积网络与之前工作的一个关键区别是,它们以一种简单、高效、深入和端到端方式处理密集空间变换。
可变形卷积网络
Deformable Convolutional Networks
可变形卷积
作者将2d卷积分为两步: 1.使用一个方形方格 R 在特征图 x 上;2. 使用 权重w 将它们求和。即
- sampling using a regular grid R over the input feature map x ;
- summation of sampled values weighted by w .
网格 R 决定了 感受野大小 receptive field size 和 膨胀? dilation ,例如:
普通卷积:对于特征图y 上的每个位置 \(P_0\) :
在可变形卷积中,R 通过增加偏移 \({\Delta p_n|n=1,...,N}\)(N=|R|) 得到了增强,式(1)变为:
现在采样点不再是方形的了,甚至不再有规律,\(\Delta p_n\) 一般是分数(is typically fractional),上式(2)一般通过 双线性插值 bilinear interpolation 实现,如:
上式中, p 表示一个任意(分数)arbitrary (fractional)位置;\(p=p_0+p_n+\Delta p_n\) ,q 枚举了特征图x上的所有空间位置;G(·,·) 是双线性插值核 the bilinear interpolation kernel.。注意 G 是两个纬度的,它被分成如下两个纬度核:
此处 \(g(a,b)=max(0,1-|a-b|)\)。
因为只有少数 q 可以使 G(q,p) 非零,所以等式(3)计算很快。
示意图:
卷积核具有与当前卷积层相同的空间分辨率和膨胀度。?
The convolution kernel is of the same spatial resolution and dilation as those of the current convolutional layer.
输出偏移场与输入特征图具有相同的空间分辨率。
The output offset fields have the same spatial resolution with the input feature map.
在训练过程中,同时学习产生输出特征的卷积核和偏移量。为了学习偏移量,梯度通过Eq.(3)和Eq.(4)反向传播。
可变RoI池化
RoI 池化
回顾 RoI 池化,它用于所有的基于区域建议的目标检测方法。它将一个任意大小的矩形区域分成固定大小的特征。
输入特征图 x 和一个大小为 \(w \times h\) 的 RoI ,以及一个左上角 \(p_0\) ,RoI 池化将 RoI 分成 kxk 块(bins)(k是一个自由参数),输出一个 kxk 的特征图 y。
对于第 (i,j) 个 bin (0≤i,j≤k),
此处,\(n_{ij}\) 是 bin 中的像素点个数。第 (i,j) 个 bin 跨度为:
\(\lfloor i \frac{w}{k} \rfloor \leq p_x \leq \lceil (i+1)\frac{w}{k} \rceil\) 和 \(\lfloor j \frac{h}{k} \rfloor \leq p_y \leq \lceil (j+1)\frac{h}{k} \rceil\)
类似于之前的可变形卷积,,可变形RoI池化也在原来RoI的基础上加了偏移 \({\Delta p_n|n=1,...,N}\),Eq(5) 变成了:
一般 \(\Delta p_{ij}\) 是分数。上式(6)同样也用之前的双线性插值Eq.(3)和(4)来实现。
可变形RoI池化:
如上图3所示,首先,使用式(5)的原版RoI及逆行池化得到特征图,再用全连接层生成一个归一化的偏移( the normalized offsets) \(\Delta{\hat{p}_{ij}}\),它将被转换为式(6)中的\(\Delta{p_{ij}}\)。转换方式为:\(\Delta{p_{ij}} = \gamma · \Delta{\hat{p}_{ij}} \circ (w,h)\) 这里的 \(\gamma\) 是预定义的标量来调节偏移的大小(magnitude),实验验证(empirically)为 \(\gamma = 0.1\).为了使偏移学习不受RoI大小的影响,偏移归一化是必要的。
位置敏感RoI池化
Position-Sensitive (PS) RoI Pooling [R-fcn]
不同于 RoI池化,这个是全卷积的。
我们先讲一下原本的 位置敏感RoI池化。首先啊通过一个卷积层所有的输入特征图被转换为 \(k^2\) 分数图(score maps) 根据每个物体的类别(C个物体类别就输出C+1个特征图)。如图四所示。不需要区分类,如分数图 \(\{x_{i,j} \}\) 这里(i,j)就是所有bins的枚举.输出 第(i,j)个 bin 由对应的分数图 \(\{x_{i,j} \}\) 求和得来。总之,他与 RoI池化(Eq(5))的不同之处在于 通用的特征图x被替换为 特殊的位置敏感的分数图 \(\{x_{i,j} \}\).
再说 可变 PS RoI 池化 就是在式(6) 的基础上将 x 改为 \(x_{i,j}\) ,然而,偏移学习也是不同的,它受全卷积的启发,如图4。在上面的分支中,一个卷积层生成 全空间分辨率的偏移fields。对每个 RoI,同时也是每个类别,PS RoI 池化被用于这样的 fields 去获取归一化的偏移 \(\Delta{\hat{p}_{ij}}\) ,它将会如同上面(可变RoI池化)一样被转换为真实使用的偏移。
可变卷积网络
可变卷积和可变池化都可以代替它们的普通版本,在训练中,这些附加的conv和fc层的偏移学习被初始化为零权值。
它们的学习率设置为现有层的学习率的β倍(默认为β = 1,在Faster R-CNN中fc层的β = 0.01)。它们通过Eq.(3)和Eq.(4)中的双线性插值运算进行反向传播训练。得到的cnn称为变形卷积网deformable ConvNets。
作者决定使用 R-CNN 架构的网络。
可变卷积用于特征提取
作者使用当时的两种SOTA网络:
- ResNet-101
- Inception-ResNet
都被 ImageNet 数据集预训练过。
Inception-ResNet 存在特征偏移问题所以它不适合密集预测,对于这个问题的改进版本 “Aligned-Inception-ResNet”
这两个模型包含若干卷积块、一个平均池化和一个 1000 way 的全连接层用于ImageNet的分类任务。
作者对网络进行了一些改动:删除了平均池化和全连接层。在最后添加一个随机初始化的1x1卷积来使通道维数降维到 1024,与通常的做法[3,6]一样,最后一个常规块的有效步幅从32像素减少到16像素,以提高特征图的分辨率。具体来说,在最后一段开始时,步幅stride由2变为1(ResNet101 和 Aligned-Inception-ResNet的 conv5),作为补偿,在这个块中的卷积滤波器(卷积核大小大于1)的膨胀从 1 变成 2.(用膨胀dilation代替stride)
可选地,可变形卷积应用于最后几个卷积层(内核大小为> 1)。我们实验了不同数量的这样的层,发现对于不同的任务,3层是一个很好的权衡,如表1所示。
接下来是几个可变卷积/池化的示例图:
..
...