Deformable Convolution应用于目标分类(占坑)

摘要

Deformable Convnets自从被提出以后就受到了广泛的关注,文章将网络应用于目标检测取得里很好的成果,那本人好奇的是如果将这个网络的思想应用在目标分类任务中会取得怎样的结果呢?

这个坑占了有段时间了,现在才来填,略感抱歉。

本文所有源码可以从本人的github个人主页上获取到。

Deformable convolution的概念

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

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

现在,采样就在不规则有偏移的位置 ?n+Δ?n 上进行。因为这个偏移 Δ? 通常是小数,等式(2)要按以下进行双线性插值
?(?)=?G(?,?)·?(?),   (3)
其中 ? 表示一个任意的(小数)位置(对于等式(2) ?=?0+?n+Δ?n ), ? 穷举在特征图 ? 上的所有整数空间位置,并且 G(··) 是双线性插值的核。注意 G 是二维的。它被分成两个一维的核
G(?,?)=g(qx,px)·g(qy,py),   (4)
其中 g(a,b)=max(0,1|ab|). 等式(3)
的计算会很快因为 G(?,?) 只在几个 ? 上是非零的。
Fig2
正如在图2中描述的一样,偏移是通过在同一个输入特征图上再应用一个卷积层来获得的。卷积核的空间分辨率和扩张量和目前的卷积层一样(比如,在图2中也是 3×3 扩张量为1)。输出的偏移的域的和输入的特征图有相同的空间分辨率。通道维度 2N 对应着 N 个2D的偏移。在训练中,用于产生输出特征和偏移的卷积核同时在进行学习。要学习到偏移量,梯度通过等式(3)和(4)中的双线性操作进行反向传播。详情参见附录A.

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

应用于MNIST数据集的分类结果

应用于distorted MNIST数据集的分类结果

结论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值