论文提出DCNv2,不仅对DCNv1的结构进行了改进,还使用了有效的蒸馏学习策略,使得性能有很大的提升,各个方面都值得借鉴



来源:晓飞的算法工程笔记 公众号

论文: Deformable ConvNets v2: More Deformable, Better Results

Introduction


  在提出可变形卷积DCNv1后,论文提出新版本的可变形卷积DCNv2,通过两种互补的策略以及蒸馏学习来增强模型的性能:

  • 增加可变形卷积的层数,使得DCNv2拥有更强的几何变换的学习能力,能够进行准确地预测。
  • 在可变形卷积模块中增加调制机制,每次采样不仅进行偏移,还会使用学习到的权重进行调节,能够进行更复杂的几何变换学习。
  • 为了充分榨干DCNv2提升的能力,借用知识蒸馏的方法进行训练,以R-CNN作为指导网络(teacher network),在训练时模仿其特征值。

Analysis of Deformable ConvNet Behavior


Spatial Support Visualization

  论文从3个互补的视角来了解图像区域对输出的影响:

  • Effective sampling / bin locations,通过计算输出值对应像素位置上的梯度来表示像素的重要程度。
  • Effective receptive fields,理论感受域内的像素对输出的贡献是不一样的,贡献可以通过有效感受域来表示,通过计算输出值对应每个像素的值扰动时的梯度得出,具体可以看参考内容文章。
  • Error-bounded saliency regions,通过逐步掩盖图片的部分区域并计算输出值,找到与整图输出值差异在阈值范围内的最小显著区域。

Spatial Support of Deformable ConvNets

  对conv5阶段的最后一层输出进行了上述的3个视角计算,图1从左往右目标的逐渐变大,每个子图从上往下分别为关于绿点输出的3种指标的可视化结构,可以得出以下结论:

  • 得益于深度卷积网络强大的表达能力,常规卷积能在一定程度上对几何变换进行建模学习,主要受卷积权重的影响。
  • 通过引入可变形卷积,综合卷积核权重以及偏移值,模型能够很好地对几何变换进行建模学习,输出关联了更多的目标区域,但也会包含较多不相关的物体的区域。

  论文继续对RoI区域也进行了上述3个视角的计算,对于常规RoI pooling和可变形RoI pooling,目标区域内的bin对输出的贡献更高,在可变形RoI pooling更为明显。但两种方法的显著区域同样都不够准确,造成有较多的额外内容干扰着输出。

More Deformable ConvNets


Stacking More Deformable Conv Layers

  由于可变形卷积能够更好地学习几何变换,因此大胆地将ResNet-50中的conv3、conv4和conv5中的所有\(3\times 3\)卷积替换成可变形卷积,共12层。DCNv1仅使用了3层,主要由于当时替换实验是在比较简单的VOC数据集上进行的,效果很快就饱和了,而当时在COCO上的偏移值可视化有一定的误导性,本文补充了更准确的实验。

Modulated Deformable Modules

  为了进一步加强可变形卷积对几何变换学习的能力,加入调制机制,可变形卷积不仅能对输入进行偏移,还可以调整各位置输入的权重。极端地,当权重为0则忽略该位置输入,为模型提供了另一种调整目标区域的方式。

  可调制变形卷积如公式1,\(\Delta p_k\)和\(\Delta m_k\)分别为\(k\)位置的可学习偏移值和权重标量,\(\Delta m_k\)的范围为\([0,1]\),偏移后的值的计算依然用双线性插值计算。\(\Delta p_k\)和\(\Delta m_k\)通过相同旁路卷积层计算,旁路输出channel为\(3K\),\(K\)为主干的卷积核大小,前\(2K\)维是每个位置的x和y偏移,后\(K\)维通过sigmoid层获得每个位置的权重。旁路卷积的参数初始为0,所以\(\Delta p_k\)和\(\Delta m_k\)初始为0和0.5,学习率为主干学习率的0.1倍。

  可调制的变形RoI pooling单个bin的计算如公式2,\(n_k\)为bin内的像素总数,\(\Delta p_k\)和\(\Delta m_k\)对应整个bin的偏移和权重。\(\Delta p_k\)和\(\Delta m_k\)通过旁路RoI pooling+2 x 1024-D fc + 3k-D fc计算,前\(2K\)维是归一化的bin偏移值,与RoI区域相乘后得到最终的bin偏移值,后\(K\)维通过sigmoid层获得每个bin的权重,初始化和学习率与上面的一致。

R-CNN Feature Mimicking

  从图2的Error-bounded saliency regions结果看到,不管常规卷积还是可变形卷积都会包含部分非目标区域,对最终的结果造成影响。论文通过实验发现,可调制变形卷积虽然有更强的几何变换建模能力,但常规的训练没有特定的损失,很难引导可调制变形卷积的学习。因此,考虑到性能和准确率的取舍,论文加入特征模仿(feature mimicking)引导可变形卷积生成类似R-CNN从croped图片中提取到的特征。由于背景的内容较为复杂,特征模仿损失仅用于正样本。

  整体的训练架构如图3,添加额外R-CNN分支用于特征模仿,分支的结构与主干网络类似。对于RoI区域\(b\),从原图中crop下来并Resize后送到R-CNN分支得到\(14\times 14\)的特征图,再进行整图的可调制变形RoI pooling,通过两层全连接得到1024-D特征\(f_{RCNN}(b)\),最后接\(C+1\)-way Sfotmax分类器预测分类结果。

  特征模仿损失通过余弦相似度的计算,如公式3,\(\Omega\)为用于特征模仿的所有RoI区域。在训练时,每次随机采样32个RPN生成的正样本构成\(\Omega\),同时计算特征模块损失和R-CNN分支的分类交叉熵损失。RCNN分支的两个新损失的权重为主干对应项权重的0.1倍,RCNN分支除了最后的classification head外的模块均与主干共享。在推理时,仅使用Faster R-CNN模块。

Experiments


Enriched Deformation Modeling

  对DCNv2的两个结构改进进行了对比实验,表1和表2分别为短边1000和短边800的实验,结合图1和图2的可视化结果,两个改进都能有效地提高准确率。

R-CNN Feature Mimicking

  对于特征模仿学习,仅模仿正样本的效果最好。

Application on Stronger Backbones

Conclusion


  论文提出DCNv2,不仅对DCNv1的结构进行了改进,还使用了有效的蒸馏学习策略,使得性能有很大的提升,各个方面都值得借鉴。

参考内容





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

可变形卷积系列(二) MSRA提出升级版DCNv2,变形能力更强 | CVPR 2019的更多相关文章

  1. ACNet: 特别的想法,腾讯提出结合注意力卷积的二叉神经树进行细粒度分类 | CVPR 2020

    论文提出了结合注意力卷积的二叉神经树进行弱监督的细粒度分类,在树结构的边上结合了注意力卷积操作,在每个节点使用路由函数来定义从根节点到叶子节点的计算路径,结合所有叶子节点的预测值进行最终的预测,论文的 ...

  2. Deformable Convolutional Networks-v1-v2(可变形卷积网络)

    如何评价 MSRA 视觉组最新提出的 Deformable ConvNets V2? <Deformable Convolutional Networks>是一篇2017年Microsof ...

  3. 深度学习方法(十三):卷积神经网络结构变化——可变形卷积网络deformable convolutional networks

    上一篇我们介绍了:深度学习方法(十二):卷积神经网络结构变化--Spatial Transformer Networks,STN创造性地在CNN结构中装入了一个可学习的仿射变换,目的是增加CNN的旋转 ...

  4. 网络结构解读之inception系列二:GoogLeNet(Inception V1)

    网络结构解读之inception系列二:GoogLeNet(Inception V1) inception系列的开山之作,有网络结构设计的初期思考. Going deeper with convolu ...

  5. 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)

    项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...

  6. tensorflow笔记(五)之MNIST手写识别系列二

    tensorflow笔记(五)之MNIST手写识别系列二 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7455233.html ...

  7. C语言高速入门系列(二)

    C语言高速入门系列(二) -----转载请注明出处coder-pig 本节引言: 在前面一节中我们对C语言进行了初步的了解,学会了使用IDE进行代码的编写,编译执行! 在这一节中我们会对C语言的基本的 ...

  8. 前端构建大法 Gulp 系列 (二):为什么选择gulp

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  9. WPF入门教程系列二十三——DataGrid示例(三)

    DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...

  10. Web 开发人员和设计师必读文章推荐【系列二十九】

    <Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

随机推荐

  1. win32 - WM_DROPFILES的用法

    WM_DROPFILES: 当用户将文件拖放到已注册为丢弃文件的接收者的应用程序窗口中时发送该消息 我们可以利用这个消息获取文件名称,并将它们保存到容器里. LRESULT CALLBACK Stat ...

  2. [BUUCTF][WEB][极客大挑战 2019]Http 1

    打开靶机提供的url 右键查看网页源代码 发现一个链接 (Secret.php),访问看看 返回: It doesn't come from 'https://Sycsecret.buuoj.cn' ...

  3. django从配置文件中读取数据库信息

    创建配置文件my.cnf [client] database=django_db user=root password=123456 host=127.0.0.1 port=3306 settings ...

  4. day07---系统命令

    课程知识概述--系统命令 seq cat less more head tail grep tr alias 复习 1.echo -e 激活特殊的意义 \n 表示回车 \t tab键 [root@ol ...

  5. Advanced .Net Debugging 2:CLR基础

    一.简介 这是2024新年后我的第一篇文章,也是我的<Advanced .Net Debugging>这个系列的第二篇文章.这篇文章告诉我们为了进行有效的程序调试,我们需要掌握哪些知识.言 ...

  6. MBD工具链的云部署

    MBD工具链的云部署 "云技术永远不会用于汽车开发".说到云部署在汽车行业的应用,业界曾经认为云技术并不适合用在汽车行业的产品开发.知识产权保护.数据的安全.流程不够透明.迁移成本 ...

  7. 我的第一个项目(十三) :组件间传值的一些方案(vuex,eventbus,localStorage)

    好家伙,   先说一下我的需求,我要组件间传值 1.eventBus 前端兄弟组件传值eventbus无法使用 不报错也不触发,就很奇怪 //eventBus.js import Vue from & ...

  8. 【Azure Notification Hub】如何手动删除 Notification Hub 中已注册的设备

    问题描述 在Notification Hub中注册了设备后,从Azure门户上没有找到相应的入口来删除已注册设备 (Active Devices) 如果使用C# SDK是否有办法删除呢? 问题解答 可 ...

  9. Java Servlet单元测试

    Java Servlet单元测试 1. 解决痛点 虽然目前主流的开发方式,很多都是通过controll或者微服务提供api.但是不免还是需要写几个servlet完成接口开发.按照常规,servlet调 ...

  10. 图数据库 Nebula Graph 的代码变更测试覆盖率实践

    对于一个持续开发的大型工程而言,足够的测试是保证软件行为符合预期的有效手段,而不是仅仅依靠 code review 或者开发者自己的技术素质.测试的编写理想情况下应该完全定义软件的行为,但是通常情况都 ...