Deformable Convolution Networks[译]

参考资料:

原paper地址:https://arxiv.org/abs/1703.06211

知乎讨论地址:https://www.zhihu.com/question/57493889

csdn blog地址:http://blog.csdn.net/yaoqi_isee/article/details/65963253

Notes地址:https://medium.com/@phelixlau/notes-on-deformable-convolutional-networks-baaabbc11cf3


Abstract

    由于构造卷积神经网络 (CNN) 所用的模块中几何结构是固定的,其几何变换建模的能力本质上是有限的。在我们的工作中,我们引入了两种新的模块来提高卷积神经网络 (CNN) 对变换的建模能力,即可变形卷积 (deformable convolution) 和可变形兴趣区域池化 (deformable ROI pooling)。它们都是基于在模块中对空间采样的位置信息作进一步位移调整的想法,该位移可在目标任务中学习得到,并不需要额外的监督信号。新的模块可以很方便在现有的卷积神经网络 (CNN) 中取代它们的一般版本,并能很容易进行标准反向传播端到端的训练,从而得到可变形卷积网络 (deformable convolutional network)。大量的实验验证了我们的方法在目标检测和语义分割这些复杂视觉任务上的有效性。代码地址:这里


1.Introduction

   在这项工作中,我们引进了新的模块,大大增强了CNN的几何变换建模能力。首先是可变形卷积。它在标准卷积中向常规采样网格添加了2D偏移。


Figure 1 展示了卷积核大小为 3x3 的正常卷积和可变形卷积的采样方式:(a) 所示的正常卷积规律的采样 9 个点(绿点),(b)(c)(d) 为可变形卷积,在正常的采样坐标上加上一个位移量(蓝色箭头),其中 (c)(d) 作为 (b) 的特殊情况,展示了可变形卷积可以作为尺度变换,比例变换和旋转变换的特殊情况

    二是deformable RoI pooling。它在以前的RoI pooling中的常规bin partition中为每个bin添加了一个offset。类似地,从先前的特征图和RoI学习偏移,使得能够对具有不同形状的对象进行自适应部分定位。

    两个模块的权值都不多。它们因为加入了偏移的学习添加了少量参数和计算。它们可以轻松集成到深CNN架构中,并通过反向传播进行端到端的训练。这种结构叫做deformable convolutional networks或deformable ConvNets.

    两者原理是一样的,就是在这些卷积或者ROI采样层上,添加了位移变量,这个变量根据数据的情况学习,偏移后,相当于卷积核每个方块可伸缩的变化,从而改变了感受野的范围,感受野成了一个多边形。


2.Deformable Convolutional Networks

    虽然CNN中的特征映射图和卷积核是3D tensor,但可变卷积和RoI池都在2D空间域上运行的,并且在通道维度上保持不变。

2.1Deformable Convolution

一个2D的卷积由两步组成:

1)使用框架R在输入的特征图上采样

2)将采样值与对应的权重相乘,再求和

R定义了感受野的大小和dilation。例如:

R = {(−1, −1),(−1, 0), . . . ,(0, 1),(1, 1)}  定义了3×3的内核,dilation为1

对于输出特征图y上的每个位置p0,我们有


Figure 2 正常卷积公式

Deformable Conv操作并没有改变卷积的计算操作,而是在卷积操作的作用区域上,加入了一个可学习的参数∆pn。对于变形的卷积,增加了一个参数,即偏移量 {∆pn|n = 1, ..., N}, where N = |R|.


Figure 3 变形卷积公式

然而,这样的操作引入了一个问题,即需要对不连续的位置变量求导。作者在这里借鉴了之前Spatial Transformer Network和若干Optical Flow中warp操作的想法,使用了bilinear插值将任何一个位置的输出,转换成对于feature map的插值操作。


Figure 4 p =p0 + pn + ∆pn for Eq. (2), q enumerates all integral spatial locations in the feature map x
Figure 5 G(·, ·) is the bilinear interpolation kernel.

上式中的g(a, b) = max(0, 1 − |a − b|),等式3是很容易计算的,大多数的q位置G为0。

总结一下上面四个公式就是,公式1是正常的卷积计算公式,公式2是添加了偏移后的公式,然后对这个公式做线性插值变化就成了3,3的左边是原始图的位置,x(q)是卷积后的特征图,G就是需要学习的变换核。这样就可以求偏导进行梯度下降学习了。4就是这个需要学习的核的表示。


Figure 6 说明了一个3X3的变形卷积 ,首先通过一个小卷积层(绿色)的输出得到可变形卷积所需要的位移量,然后将其作用在卷积核(蓝色)上,达到可变形卷积的效果

对于输入的一张feature map,假设原来的卷积操作是3*3的,那么为了学习offset,我们定义另外一个3*3的卷积层,输出的offset field其实就是原来feature map大小,channel数等于2(分别表示x,y方向的偏移)。这样的话,有了输入的feature map,有了和feature map一样大小的offset field,我们就可以进行deformable卷积运算。所有的参数都可以通过反向传播学习得到。

2.2 Deformable ROI Pooling

    RoI池模块将任意大小的输入矩形区域转换为固定大小的特征。给定一个ROI,大小为w*h,它最后会被均匀分为K*K块,k是个自由参数。标准的ROI pooling是从输入的特征图x中生成k*k个输出特征图y.第(i,j)个块的pooling操作可以被定义为:


Figure 7 standard ROI pooling

p0是左上方的角落块,nij是这个块内的像素值。类似的定义变形的ROI pooling,增加一个偏移量∆pij,如下定义


Figure 8 deformable ROI pooling


Figure 9 描述了一个3*3的deformable ROI pooling


2.3. Deformable ConvNets

    可变卷积和RoI池模块都具有与其简单的额版本有着相同的输入和输出。因此,他们可以取代在现有的CNNs中原有的模块的位置。在训练的时候,用于偏移学习的附加conv / fc层初始化为0,他们的学习速率是现有layers的β倍(默认为β= 1)。他们的值是通过bp训练,由双线性插值运算,见公式 (3)和(4)。所得到的CNN称为deformable ConvNets。

    我们可以把deformable ConvNets分成两步,一是用一个深度全卷积网络从输入的图上得到特征图,二是,用一层具有特定功能的网络从特征图中产生结果。


Figure 10:在两层的标准卷积(a)中使用固定感受野和在可变形卷积(b)中使用可变形的感受野。顶部:顶部功能图上的两个激活单元,在不同尺寸和形状的两个对象上。激活来自3×3过滤器。中间:3×3过滤器在以前的特征图上的采样位置。另外两个激活单元被突出显示。底部:上一个特征图上两个级别的3×3滤波器的采样位置。两组位置突出显示,对应于上面突出显示的单位。

3. Understanding Deformable ConvNets

    这是建立在一个简单的想法之上的。卷积和RoI合并中的空间采样位置增加了额外的偏移量。这些偏移量是从数据中学习的,被目标驱动的。当可变形模块堆叠成多层时,复合变形的影响是深刻的。


Figure 11 Understanding Deformable ConvNets

4. Experiments

作者在不同网络结构上的实验结果在文章中描述的很清楚,下面是我自己跑的作者的代码(这里):

下面是网络结构,deformable CNN 比Normal CNN多了Convoffset2D层。

Normal CNN


Deformable CNN

增加Convoffset2D层并不会改变层与层之间输入与输出的shape,因此可以很容易的在现有的网络中增加offset,从而变成deformable ConvoNets,但毫无疑问会增加训练参数的数量,因为多了offset.


这是代码中对Convoffset2D的描述


这是conv内部结构的代码描述(keras keras.backend=tensorflow)

Normal CNN测试mnist image和scaled mnist image的准确率:

Deformable CNN测试mnist image和scaled mnist image的准确率:


可以看到,Deformable CNN对scaled image有着非常大的优势

分别打印出三个deformable convnet layer


结果如下

水平有限,欢迎大佬指教~    ^_^  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,097评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,198评论 3 410
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 173,602评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,750评论 1 304
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,684评论 6 404
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,151评论 1 317
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,349评论 3 433
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,430评论 0 282
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,986评论 1 328
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,969评论 3 351
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,071评论 1 359
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,667评论 5 352
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,358评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,757评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,944评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,684评论 3 384
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,123评论 2 368

推荐阅读更多精彩内容