可变形卷积系列(一) 打破常规,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的 ...
随机推荐
- paste命令
paste命令 paste命令会把每个文件以列对列的方式,一列列地加以合并. 语法 paste [OPTION]... [FILE]... 参数 -d, --delimiters=[LIST]: 用指 ...
- Error parsing HTTP request header--400 bad request
问题描述: JSP中通过form post方式请求URL传入json格式参数报错: 信息: Error parsing HTTP request header Note: further occur ...
- 图文并茂之AES加密
本文改编自:http://www.sohu.com/a/198681357_505794 假设有一个发送方在向接收方发送消息.如果没有任何加密算法,接收方发送的是一个明文消息:"我是小灰&q ...
- virtualbox中给redhat安装增强功能
关于虚拟机中安装redhat请参考其他教程: 1.点击虚拟机菜单:设备--安装增强功能.... 2.ssh连接到redhat,执行以下操作: [root@rhel-server ~]# mount / ...
- Array.forEach() 与 Array.map()这些方法的第三个可选参数 array 的作用
说明 let thisArray = [] thisArray.forEach((item, index, array)=>{ //为什么要有array,而不是直接用thisArray? }) ...
- Android加载PDF方案(pdf.js,支持缩放)
都知道,Android本身的webview是不支持pdf加载的(比不上iOS的webview,谁让人家NB呢),因此通过连接Google的一个服务器转换成功后返回给WebView显示.但是,但是,但是 ...
- 项目实战:Qt管道焊接参数条码打印系统(条码打印机TSC 244 Pro、打印条码、打印中文、打印字符、多张连续打印)
需求 电脑端通过条码打印机TSC-TTP244 Pro: 1. 打印出尺寸为60*30cm 2. 条码打印机TSC-TTP244 Pro 不干胶纸 (不需要碳带,热敏纸) 3. window ...
- KVM整理
管理命令: virsh list --all 查看所有虚拟机状态 virsh start vm1 VM1开机 virsh shutdown vm1 VM1关机 virsh destroy vm1 强制 ...
- kotlin协程异常处理之-CoroutineExceptionHandler
转载请标明出处:https://www.cnblogs.com/tangZH/p/17307406.html kotlin协程小记 协程的async使用 kotlin协程异常处理之-try catch ...
- 2、mysql存储引擎
存储引擎 1 存储引擎概述 和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎. 存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 .存 ...