Deformable ConvNets论文笔记

来源:互联网 发布:mac 充电iphone 好快 编辑:程序博客网 时间:2024/04/29 03:01

2.1 Deformable Convolution
2D的卷积包括两个步骤:1)用一个规则的网格R在输入特征图上进行采样;2)对于采样的值用w进行加权再求和。网格R定义了感受野大小和扩张量。比如

R={(1,1),(1,0),,(0,1),(1,1)}
定义了一个3×3的核并且扩张量(空洞)为1。
对于在输出特征图y上的每一个位置p0来说,我们有
y(p0)=pnRw(pn)x(p0+pn),   (1)
其中pn会穷举在R中的位置。
在可变形卷积中,用偏移{Δpn|n=1,,N}对规则的网格R进行扩充,其中N=|R|.公式(1)就变成
y(p0)=pnRw(pn)x(p0+pn+Δpn).   (2)

现在,采样就在不规则有偏移的位置pn+Δpn上进行。因为这个偏移Δp通常是小数,等式(2)要按以下进行双线性插值
x(p)=qG(q,p)x(q),   (3)
其中p表示一个任意的(小数)位置(对于等式(2)p=p0+pn+Δpn),q穷举在特征图x上的所有整数空间位置,并且G()是双线性插值的核。注意G是二维的。它被分成两个一维的核
G(q,p)=g(qx,px)g(qy,py),   (4)
其中g(a,b)=max(0,1|ab|).等式(3)的计算会很快因为G(q,p)只在几个q上是非零的。
Fig2
正如在图2中描述的一样,偏移是通过在同一个输入特征图上再应用一个卷积层来获得的。卷积核的空间分辨率和扩张量和目前的卷积层一样(比如,在图2中也是3×3扩张量为1)。输出的偏移的域的和输入的特征图有相同的空间分辨率。通道维度2N对应着N个2D的偏移。在训练中,用于产生输出特征和偏移的卷积核同时在进行学习。要学习到偏移量,梯度通过等式(3)和(4)中的双线性操作进行反向传播。详情参见附录A.
2.2 Deformable RoI pooling
在所有基于region proposal候选区域的物体检测方法中都有用到RoI pooling。它把一个输入的任意大小的矩形区域转化为一个固定大小的特征。
RoI pooling 给定一个输入特征图x和一个大小为w×h的RoI以及其左上角p0,RoI pooling把RoI分成k×k(k是自由参数)个长方块并且输出一个k×k的特征图y。对第(i,j)个长方块(0i,j<k),有
y(i,j)=pbin(i,j)x(p0+p)/nij    (5)
其中nij是在长方块中的像素点数。第(i,j)个长方块范围是iwkpx<(i+1)wk并且jhkpy<(j+1)hk.
类似于等式(2),在可变形RoI pooling中,偏移{Δpij|0i,j<k}会被加入到空间长方块的位置上。这样等式(5)就变成
y(i,j)=pbin(i,j)x(p0+p+Δpij)/nij    (6)

Δpij往往是小数。等式(6)通过等式(3)和(4)中的双线性插值来实现。
Fig3
Fig3画出了如何获取偏移。首先,RoI pooling(等式5)产生pooled的特征图。从这些图中,一个fc层产生归一化后的偏移Δp^ij,这个归一化的量之后会被转化为公式(6)中的偏移量Δpij,通过与RoI的宽和高做元素间的乘法,即Δpij=γΔp^ij(w,h).这里面的γ是一个提前定义好的标量用来调节偏移的幅度。跟据经验设为γ=0.1。偏移归一化是有必要的,为了让偏移的学习不因RoI的尺寸不同而变化。fc层用反向传播来学习,细节在附录A中。
Position-Sensitive(PS) RoI Pooling 这是全卷积的,并且和RoI Pooling不同。 通过一个卷积层,所有的输入特征图都首先被转化,对每个物体类别有k2个分数图(如果物体类别是C,那么总共有C+1种),就如在图4中最底下的那个分支一样。不需要在类别之间进行区分,这种分数图被表示为{xi,j}其中(i,j)对所有长方块进行穷举。Pooling会在这些分数图上进行,对于第(i,j)个长方块的输出值是通过相应的长方块的分数图xi,j进行求和而获得的。简言之,与等式(5)中的RoI Pooling不同的地方是一个本来是一个整体的特征图x,现在换成了一个特定的对位置敏感的分数图xi,j.
在deformable PS RoI pooling中,只在等式(6)中更改了一处,就是将x改为了xi,j。然而,学习偏移的方式是不同的。它遵循了论文全卷积的精神,就如同图4描述的一样。在最高的分支中,一个卷积层生成完全的空间像素偏移域。对于每一个RoI(同时也对于每一个类别),PS RoI pooling会被应用在这些域上以获取归一化的偏移量Δp^ij,然后通过上述deformable RoI pooling中一样的方法变成真正的偏移量Δpij
Fig4
2.3 Deformable ConvNets
deformable convolution和RoI pooling模块与它们的平凡版本有相同的输入和输出,因此,就能方便地替换现有CNN中对应的普通模块。在实际训练中,这些添加的用于学习偏移的conv和fc层都以零权重初始化。学习率设为现有层的学习率的β倍(默认β=1,在Faster R-CNN中的fc层设β=0.01)。它们要利用等式(3)和(4)中的双线性插值,通过BP的方法训练。最终的CNN就叫做deformable ConvNets。
要把deformable ConvNets和目前为止最好的CNN架构结合起来,我们注意到这些架构都是由两个阶段组成:第一,一个深度的全卷积网络在整张输入图上产生特征图;第二,一个范围窄的针对特定任务的网络由特征图来生成结果。我们在以下内容中对这两点进行详细说明。
Deformable Convolution for Feature Extraction

原创粉丝点击