《Deformable Convolutional Network》笔记

Introduction

Deformable Convolutional Network 对卷积或池化的核的每个位置增加一个偏移量,与图片在非常规的滑动窗口中进行卷积或池化操作,以有效地对对象的空间形变进行建模。

Deformable Convolution

Deformable Convolution 首先通过一个卷积分支计算出卷积核的偏移量offsets。先对input feature map用传统的卷积得到一个channel数为2N的offset field,大小和feature map一样,N表示卷积核的元素的数量,2表示x和y方向上的offset。每个滑动窗体中的卷积核offset在offset field中对应的区域找。卷积核的每个位置按照offsets进行移动,然后与偏移后位置上的像素进行相乘。如果offset不是整数,offset位置的像素值用双线性插值的方法求。Deformable convolution的示意图如下
Deformable Convolution

对卷积核进行变形可以使卷积模型适应任意的空间变形,如下图的c可以模拟放大变换,d可以模拟旋转变换。
Deformable Convolution

Deformable RoI Pooling

与Deformable convolution相似,首先用RoI pooling得到一个feature map,然后接一个FC生成normalized offsets Δ p ^ i j \Delta \hat{p}_{ij} Δp^ij。接着对 Δ p ^ i j \Delta \hat{p}_{ij} Δp^ij进行转换, Δ p ^ i j \Delta \hat{p}_{ij} Δp^ij和RoI的宽高进行对应元素相乘,再乘以一个固定的尺度 γ = 0.1 \gamma=0.1 γ=0.1,即
Δ p i j = γ ⋅ Δ p ^ i j ∘ ( w , h ) \Delta p_{ij} = \gamma \cdot \Delta \hat{p}_{ij} \circ (w, h) Δpij=γΔp^ij(w,h)
对于第(i,j)个pooling bin,原来对应的pooling区域是 ⌊ i w k ⌋ ≤ p x < ⌈ ( i + 1 ) w k ⌉ \lfloor i\frac{w}{k} \rfloor \le p_x \lt \lceil (i+1)\frac{w}{k} \rceil ikwpx<(i+1)kw ⌊ j h k ⌋ ≤ p y < ⌈ ( j + 1 ) h k ⌉ \lfloor j\frac{h}{k} \rfloor \le p_y \lt \lceil (j+1) \frac{h}{k} \rceil jkhpy<(j+1)kh。k表示 k × k k\times k k×k个bins。根据偏移量 Δ p i j \Delta p_{ij} Δpij偏移bin的区域,在新的区域中进行pooling。Deformable RoI Pooling的公式如下
y ( i , j ) = ∑ p ∈ b i n ( i , j ) x ( p 0 + p + Δ p i j ) / n i j y(i,j)=\sum_{p \in bin(i,j)} x (p_0 + p + \Delta p_{ij})/n_{ij} y(i,j)=pbin(i,j)x(p0+p+Δpij)/nij
其中 p 0 p_0 p0表示RoI区域左上角的位置, p p p表示 b i n ( i , j ) bin(i,j) bin(i,j)中相对 p 0 p_0 p0的位置, Δ p i j \Delta p_{ij} Δpij表示 b i n ( i , j ) bin(i,j) bin(i,j)区域的偏移量, n i j n_{ij} nij表示 b i n ( i , j ) bin(i,j) bin(i,j)区域的位置数,该公式使用average pooling。
Deformable RoI Pooling 的示意图如下
Deformable RoI Pooling

Position-Sensitive (PS) RoI Pooling

位置敏感的RoI pooling的重点在于不同的feature map重点关注一个位置上面的信息,在RoI pooling的时候,一个bin的pooling的区域是在其中几个feature map上,而不是所有的feature map上。把Deformable添加到Position-Sensitive RoI pooling上,就成了deformable PS RoI pooling,如下图所示
deformable PS RoI pooling
首先看下边的分支,通过卷积操作,生成 k 2 ( C + 1 ) k^2(C+1) k2(C+1)个feature map,注意到这些feature map分成了 C + 1 C+1 C+1组,每组有一种颜色表示。一组feature map只关注部分位置的信息,而部分位置在方法中主要是指roi网格上的其中一个bin,比如蓝色的feature map主要关注RoI的左上角的bin。在pooling的时候,每个bin的pooling区域只在对应的一个feature map上的对应区域。比如,对于c类,蓝色的bin只在蓝色的feature map中对应c类的那张feature map的对应bin区域进行pooling。

上面的分支用来预测出每个bin的偏移量,从feature map上提取RoI每个bin偏移量的过程使用了PS roi pooling,过程和上面描述是一样的。有了每个bin的偏移量之后,图片下面的分支的pooling操作就在偏移之后的bin中进行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值