可变形卷积神经网络 | Deformable Network
论文标题:Deformable Convolutional Networks
论文链接:https://arxiv.org/abs/1703.06211
所要解决的问题
视觉识别的关键挑战是如何在对象比例、姿势等形变问题上适应几何变化或对几何转换建模。一般情况下有以下两种方法:
1、通常是对数据集进行仿射变换。如角度变化、剪切等以此来扩充数据集,增加算法的鲁棒性。
2、使用变换不变的特征和算法。如SIFT和基于滑动窗口的对象检测。
这两种方法都有很大的局限性:几何形变被假设是固定和已知的,这是一种先验信息,用这些已知的形变去处理未知的形变是不合理的;手工设计的特征或算法无法应对过度复杂的形变,即使该形变是已知的。
所以本文作者提出了两种模块可以大大提高CNN对目标几何变换的鲁棒性。
简介
本文提出了两种模块:
Deformable convolution:它将2D偏移量添加到标准卷积中的常规网格采样位置,可以使采样网格自由变形。如下图所示。这些
offset
是通过附加的卷积层从前面的特征图中学习的。因此,变形以局部,密集和自适应的方式取决于输入特征。
(a)是常见的3x3卷积核的采样方式,(b)是采样可变形卷积,加上偏移量之后的采样点的变化,其中(c)(d)是可变形卷积的特殊形式
Deformable ROI polling:它为ROI Pooling的常规bin分区的每个位置添加了一个
offset
。offset
也是从先前的特征图和ROI polling中学习,从而可以对具有不同形状的对象进行自适应定位。
这两个模块都是轻量级的,它们为offset learning
添加少量参数和计算,可以很稳定的替换CNN中的常规卷积。并可以通过反向传播进行端到端的训练。
Deformable Convolution Networks
Deformable convolution
在可变形卷积中,可变形卷积操作和池化操作都是2维的,都是在同一channel上进行的,常规的卷积操作主要可以分为两部分:
(1)在输入的feature map上使用规则网格R进行采样;
(2)进行加权运算,R定义了感受野的大小和扩张。
常规卷积对于在输出的feature map上的每个位置P0,通过下列式子进行计算:
其中,Pn是对R中所列位置的枚举。
可变形卷积的操作是不同的,在可变形网络的操作中,常规的规则网格R通过增加一个偏移量进行扩张,同样的位置P0变为:
现在,采样的位置变成了不规则位置,由于偏移量△Pn通常是小数,因此我们通过双线性插值法进行实现,公式为:
如下图所示,大体流程为,在输入的feature map中,原始的通过sliding window得到的是绿框,引入可变形卷积后,我们把原来的卷积网路分为两路,共享input feature map,其中上面的一路用一个额外的conv层来学习offset,得到HW2N的输出offset,其中,2N的意思是有x,y两个方向的偏移,得到这个之后,我们对原始卷积的每一个窗口,都不再是原来规整的sliding window(input feature map中的绿框)而是经过平移后的window(input feature map中的篮框),取得数据后计算过程和常规卷积一样,即input feature map和offset共同作为deformable conv层的输入。
Deformable ROI Polling
ROI Pooling模块是two-stage中常见的池化方法,基于目标检测方法中所有的region proposal。将任意输入大小的矩形调整为固定尺寸大小的feature。给定input feature map x 和一个大小为w * h,位于左上角的区域P0,ROI Pooling将会把这个ROI划分为k*k个bins,同时输出一个size为k * k的feature map y,可以用如下公式表示:
其中,nij是bin中像素的数量 有了这个基础,我们再来看可变形池化,公式如下:
相比普通ROI Pooling,同样增加了一个offset,下图为其网络结构:具体操作为,首先,通过普通的ROI Pooling得到一个feature map,如下图中的绿色块,通过得到的这个feature map,加上一个全连接层,生成每一个位置的offset,然后按照上面的公式得到△Pij,为了让offset的数据和ROI 的尺寸匹配,需要对offset进行微调。全连接层的参数可以通过反向传播进行学习。
把可变形卷积用在SOTA网络结构上
可变形过滤器的三个级别采样位置
可变形ROI Polling的offset阐述
可变形卷积应用在RCNN、Faster-RCNN等SOTA网络架构
由上述表可以得到:把Deformable ConvNet应用到RCNN、Faster—RCNN上,性能都得到了不错的提升,说明可变形网络可行且有效。
结论
本文提出了可变形的ConvNets,它是一种简单,高效,深入且端到端的解决方案,用于对密集的空间变换进行建模。结果表明,对于复杂的视觉任务,比如目标检测和语义分割,可变形卷积都可以大幅度提高各项性能。
简单的代码实现
https://github.com/4uiiurz1/pytorch-deform-conv-v2
可变形卷积神经网络 | Deformable Network相关推荐
- 更灵活、有个性的卷积——可变形卷积(Deformable Conv)
作者简介 CW,广东深圳人,毕业于中山大学(SYSU)数据科学与计算机学院,毕业后就业于腾讯计算机系统有限公司技术工程与事业群(TEG)从事Devops工作,期间在AI LAB实习过,实操过道路交通元 ...
- 可变形卷积(Deformable Convolution)
可变形卷积 前言: 一.可变形卷积 1.原文摘要(Abstract) 2.可变形卷积 前言: 之前分了两次将深度学习中常用的各种卷积操作进行了汇总介绍,具体包括标准2D卷积.1×1卷积.转置卷积.膨胀 ...
- 可变形卷积网络--Deformable Convolutional Networks
https://arxiv.org/abs/1703.06211 Microsoft Research Asia Code coming soon 本文可以看做是对 Spatial Transform ...
- 深度学习之 DCN(Deformable Convolution)-可变形卷积
Paper link: http://openaccess.thecvf.com/content_ICCV_2017/papers/Dai_Deformable_Convolutional_Netwo ...
- CNN卷积神经网络之DCN(Deformable Convolutional Networks、Deformable ConvNets v2)
可变形卷积网络Deformable ConvNets V1.V2 前言 一.Deformable Convolutional Networks Deformable Convolution Defor ...
- 可变形卷积(Deformable Conv)原理解析与torch代码实现
1. 可变形卷积原理解析 1.1 普通卷积原理 传统的卷积操作是将特征图分成一个个与卷积核大小相同的部分,然后进行卷积操作,每部分在特征图上的位置都是固定的. 图1 普通卷积过程 图1所示为普通卷积在 ...
- 常用的卷积神经网络-1-卷积和通道
文章目录 CNN 1. CNN基本结构 2. 卷积和通道 2.1 分组卷积(Group Convolution) 2.2 Convolution VS Group Convolution 2.3 Gr ...
- 深度学习【5】卷积神经网络CNN(2)
文章目录 一.卷积的变种 1.分组卷积 (1).定义 (2).优势 (3).应用场景 2.转置卷积 (1).定义 (2).优势 (3).具体步骤 (4).应用场景 3.空洞卷积 (1).定义 (2). ...
- 卷积神经网络(CNN)的进化史以及常用的CNN框架
引言 首先用下面一张图简单回顾CNN的结构,CNN的最大特性就是局部连接和参数共享. # 2D-CNN 首先看一下最一般的二维空间Feature-Map CNN.输入的是一个矩阵,输出的也是一个矩阵, ...
最新文章
- 今晚8点开播 | 深度解析知识图谱发展关键阶段技术脉络
- 科大讯飞年报出炉,2018每天赚148万元,53%是政府补助
- ACCESS高级注入
- object-c中的bool
- time,gettimeofday,clock_gettime,_ftime
- 最简单的React和Redux整合的例子
- 机器学习基石HOW部分(1)
- linux firewalld
- 一位程序员妹纸讲述她是如何拿到美团offer的?
- 使用flatten-maven-plugin对发布的POM进行精简
- 《基于MFC的OpenGL编程》Part 7 Animation
- 海马玩关联android,Android ADB连接海马玩模拟器
- python 物理引擎 摩擦力_为什么单机游戏中的碰撞很不真实?物理引擎真的很难做到和现实一样吗?...
- CVPR 2021 目标检测论文大盘点(65篇论文)
- 开源硬件的舞者--WIZnet
- 机房环动监控系统作用
- LaTex引用中文论文
- Layer For Mobile
- 基于TIA博途SCL语言的设备累计运行时间FB函数库_具体方法及程序示例
- js中的includes用法
热门文章
- nginx+tomcat+redis负载均衡,实现session共享
- 读取数据库并写入excel表中 发送邮件
- centos7.3部署django用uwsgi和nginx[亲测可用]
- Oracle or Question Solve(二)
- 编写让别人能够读懂的代码
- 【译】《Pro ASP.NET MVC4 4th Edition》第三章(二)
- 利用request库请求api
- XM7 FOR ANDROID,如何使用Android Studio开发Gradle插件
- 回溯算法——复原IP地址(Leetcode 93)
- 手机点餐系统概述_疫情之下,无接触点餐模式再成热搜,扫码点餐系统能不能普及?...