可变形卷积系列(一) 打破常规,MSRA提出DCNv1 | ICCV 2017 Oral
论文提出可变形卷积帮助模型高效地学习几何变换能力,能够简单地应用到分类模型和检测模型中,思想新颖,效果显著,十分值得学习
来源:晓飞的算法工程笔记 公众号
论文: Deformable Convolutional Networks

Introduction
常规卷积操作的感受域是固定的,但不同大小的目标应该需要不同大小的感受域,甚至是不规则的感受域。为此,论文提出两个模块来使CNN具备几何变换的建模能力:

- deformable convolution,在常规的卷积中增加2D偏移值,可以将采样区域自由变形,如图1(d)。偏移值是可学习的,通过额外的卷积层获得,取决于输入的特征。
- deformable RoI pooling,为RoI pooling中的每个bin添加一个偏移值做整体的移动,能够自适应不同形状目标的局部定位。同样,偏移值是可学习的,取决于输入特征和RoI区域。
Deformable Convolutional Networks
Deformable Convolution

2D卷积包含两个步骤,首先采样输入特征的规则区域\(\mathcal{R}\),然后求和采样值与权重\(w\)间的乘积,区域\(\mathcal{R}\)由卷积核大小和膨胀(dilation)决定,如上为\(3\times 3\)、膨胀为1的卷积区域。

输出特征图\(y\)中的点\(p_0\)的值计算如公式1,\(p_n\)为\(\mathcal{R}\)中所有采样点。

在可变性卷积中,使用偏移\(\{\Delta p_n | n=1,...,N \}\)将区域\(\mathcal{R}\)的每个点进行位移,公式1转换成了公式2


由于\(\Delta p\)通常为小数,使用公式3的双线性插值计算偏移位置的值,\(G(\cdot, \cdot)\)为双线性插值权重,\(q\)为特征图\(x\)上所有的点,\(g(a, b)=max(0, 1-|a-b|)\)

如图2所示,偏移特征图通过旁路的卷积层获得,\(N\)为主干的卷积核大小,对输入特征进行变形卷积时取偏移特征图上对应点的偏移值向量组合成完整的offsets。训练时,同时学习两条路径,对于偏移值,通过公式3进行梯度的回传。
Deformable RoI Pooling
RoI Pooling
对于输入特征图\(x\)和RoI区域\(w\times h\),左上角坐标为\(p_0\),RoI pooling将区域分为\(k\times k\)个bin,输出大小\(k\times k\)的特征图

对于序号为\((i,j)\)的bin,输出的计算如公式5,\(n_{i,j}\)为bin中的像素总数,范围为\(\lfloor i \frac{w}{k} \rfloor \le p_x < \lceil (i+1) \frac{w}{k} \rceil\)和\(\lfloor j \frac{h}{k} \rfloor \le p_y < \lceil (j+1) \frac{h}{k} \rceil\)

类似于公式2,可变形RoI pooling采用偏移值\(\{ \Delta p_{ij} | 0 \le i,j < k \}\)对bin进行整体移动,输出计算如公式6,由于\(\Delta p_{ij}\)是小数,同样需要公式3和公式4进行双线性插值计算

可变形RoI pooling的逻辑如图3,偏移值通过旁路卷积层获得,旁路的输入为RoI区域池化后的特征,接一个fc层输出归一化的偏移值\(\Delta \hat{p}_{ij}\),与RoI的尺寸无关,然后根据RoI区域大小转换为偏移值\(\Delta p_{ij}=\gamma \cdot \Delta \hat{p}_{ij} \circ (w, h)\),\(\gamma=0.01\)为预设的幅值,偏移值在RoI区域内所有channel共用,取对应的位置。
Position-Sensitive (PS) RoI Pooling

可变形PS RoI pooling遵循RFCN的全卷积理念,先用一个卷积层获得channel为\(2k^2(C+1)\)的偏移特征图,单图大小与主干的score map一样,然后通过PS RoI pooling得到归一化的偏移值\(\Delta \hat{p}_{ij}\),然后根据RoI大小转换为最终的偏移值\(\Delta p_{ij}\)。在实际实现中,一般会在PS RoI Pooling后接一个输出为\(2N\)全连接层,与可变形RoI pooling类似。
Deformable Convolution/RoI Pooling Backpropagation

公式2可变形卷积的偏移值\(\Delta p_n\)的梯度就算如公式7,\(\frac{\partial G(q,p_0+p_n+\Delta p_n)}{\partial \Delta p_n}\)由公式4计算,\(\Delta o_n\)是2D的,\(\partial \Delta p_n\)实际表示\(\partial \Delta p_n^x\)和\(\partial \Delta p_n^y\)

可变形RoI pooling的偏移值计算如公式8,而归一化偏移值\(\Delta \hat{p}_{ij}\)则可以通过计算\(\Delta p_{ij}=\gamma \cdot \Delta \hat{p}_{ij} \circ (w, h)\)的导数获得。
Understanding Deformable ConvNets

如图5所示,可变形卷积将原本固定的感受域根据目标自适应地调整,随着可变形卷积地叠加,高维像素点对应的感受域将会有很大的差异。

图6为图5中高层像素对应的低维像素的对应图,可以看到高层像素的感受域大都跟物体的位置相关。

图7为RoI区域对应的bin的位置,可以看到bin移动到了与物体更相关的位置。
Experiments
Ablation Study



Deformable Convolution
表1测试了在不同的位置加入可变形卷积的效果,不同的网络的效果不一致,整体都是可以提升的。而表2则是统计了不同大小物体的平均偏移值,偏移值跟物体大小相关,而背景的偏移介于中大物体之间,说明背景需要更大的感受域进行识别。表3与空洞卷积进行了对比,更大的膨胀值能有更好的性能,说明原来的感受域太小了,而不同的任务最优的膨胀值不太一样,说明可变形卷积是有存在意义的。
Deformable RoI Pooling
如表3,可变形RoI Pooling搭配可变形卷积能够达到最优的模型。
Model Complexity and Runtime

可变形卷积只增加了少量参数量和计算耗时,说明可变形卷积是通过提升模型的几何变化能力来提高性能,而不是堆参数。
Object Detection on COCO

Conclusion
论文提出可变形卷积帮助模型高效地学习几何变换能力,能够简单地应用到分类模型和检测模型中,思想新颖,效果显著,十分值得学习
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

可变形卷积系列(一) 打破常规,MSRA提出DCNv1 | ICCV 2017 Oral的更多相关文章
- Deformable Convolutional Networks-v1-v2(可变形卷积网络)
如何评价 MSRA 视觉组最新提出的 Deformable ConvNets V2? <Deformable Convolutional Networks>是一篇2017年Microsof ...
- 深度学习方法(十三):卷积神经网络结构变化——可变形卷积网络deformable convolutional networks
上一篇我们介绍了:深度学习方法(十二):卷积神经网络结构变化--Spatial Transformer Networks,STN创造性地在CNN结构中装入了一个可学习的仿射变换,目的是增加CNN的旋转 ...
- 卷积网络可解释性复现 | Grad-CAM | ICCV | 2017
觉得本文不错的可以点个赞.有问题联系作者微信cyx645016617,之后主要转战公众号,不在博客园和CSDN更新. 论文名称:"Grad-CAM: Visual Explanations ...
- 卷积涨点论文 | Asymmetric Convolution ACNet | ICCV | 2019
文章原创来自作者的微信公众号:[机器学习炼丹术].交流群氛围超好,我希望可以建议一个:当一个人遇到问题的时候,有这样一个平台可以快速讨论并解答,目前已经1群已经满员啦,2群欢迎你的到来哦.加入群唯一的 ...
- 论文阅读:Deformable ConvNets v2
论文地址:http://arxiv.org/abs/1811.11168 作者:pprp 时间:2019年5月11日 0. 摘要 DCNv1引入了可变形卷积,能更好的适应目标的几何变换.但是v1可视化 ...
- 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)
完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...
- CNN中各类卷积总结:残差、shuffle、空洞卷积、变形卷积核、可分离卷积等
CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量.我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中 ...
- 『计算机视觉』物体检测之RefineDet系列
Two Stage 的精度优势 二阶段的分类:二步法的第一步在分类时,正负样本是极不平衡的,导致分类器训练比较困难,这也是一步法效果不如二步法的原因之一,也是focal loss的motivation ...
- SEPC:使用3D卷积从FPN中提取尺度不变特征,涨点神器 | CVPR 2020
论文提出PConv为对特征金字塔进行3D卷积,配合特定的iBN进行正则化,能够有效地融合尺度间的内在关系,另外,论文提出SEPC,使用可变形卷积来适应实际特征间对应的不规律性,保持尺度均衡.PConv ...
- ESPNet/ESPNetV2:空洞卷积金字塔 | 轻量级网络
ESPNet系列的核心在于空洞卷积金字塔,每层具有不同的dilation rate,在参数量不增加的情况下,能够融合多尺度特征,相对于深度可分离卷积,深度可分离空洞卷积金字塔性价比更高.另外,HFF的 ...
随机推荐
- virtualapp 应用启动源码分析
应用启动源码分析 在HomeActvity中的OnCreate方法会调用initLaunchpad private void initLaunchpad() { mLauncherView.setHa ...
- itsdangerous模块的使用
简介 生成临时身份令牌(通过邮件让用户注册激活的时候地址当中带有用户的信息.但是信息一般都是敏感信息,而且还想让它具有时效性,所以就可以选择itsdangerous模块 官网:https://itsd ...
- win终端利器-Cmder的安装使用
cmder 官网:https://cmder.app/ 安装 直接选择full版本下载,完成后解压即可 启动 直接双击Cmder.exe 如果每次都进入到 Cmder 解压目录双击 Cmder.exe ...
- Android底层渲染原理
Overview多年前Android的UI流畅性差的问题一直饱受诟病,Google为了解决这个问题开发了Project Butter项目,也就是黄油计划,期望彻底改善Android系统的流畅性.这是A ...
- 01、uwsgi、gunicorn如何实现优雅重启
1.为何需要优雅重启 在实际开发过程中,我们会不断迭代升级产品,每次迭代后,都需要在线上服务器更新代码.一般小公司的迭代升级,是没有做到像金丝雀发布或者使用到kubernetes这些东西的.那如何保证 ...
- 制作docker方式执行Gitlab Runner所需要的镜像
背景知识 启动Gitlab Runner时,使用Gitlab提供的官方镜像gitlab/gitlab-runner:latest即可. Runner以容器的方式启动以后,根据前文我们注册到Gitlab ...
- Html飞机大战(十五): 上线
好家伙, 我的飞机大战部署上线了 胖虎的飞机大战 感兴趣的可以去玩一下 (怕有人接受不了这个背景,我还贴心的准备切换背景按钮,然而这并没有什么用) 现在,我们停下脚步,重新审视这个游戏 ...
- expect tcl 摘录
目录 部分参考来源说明 例子 expect命令 核心命令有三个 spawn.expect.send 其他expect命令 expect命令的选项 变量 tcl摘录 数据类型 符号 命令 其他说明 部分 ...
- Python 潮流周刊第 40 期(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- GaussDB(DWS)集群通信:详解pooler连接池
本文分享自华为云社区<GaussDB(DWS) 集群通信系列一:pooler连接池>,作者:半岛里有个小铁盒. 1.前言 适用版本:[8.1.0(及以上)] GaussDB(DWS) 为M ...