论文提出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. 【framework】ATMS启动流程

    1 前言 ​ ATMS 即 ActivityTaskManagerService,用于管理 Activity 及其容器(任务.堆栈.显示等).ATMS 在 Android 10 中才出现,由原来的 A ...

  2. Swoole从入门到入土(27)——协程[协程容器]

    这一章开始,我们要开始全方位讨论Swoole为我们提供的协程机制.在swoole中所有的协程必须在协程容器里面创建(Swoole\Coroutine\Scheduler),Swoole 程序启动的时候 ...

  3. 编译静态库遇到的 LNK2019 报错

    前文提到了 CMake 学习 文末基本涵盖了我遇到的编译问题,但是在得到一个编译好的 .lib 文件后,还需要放到项目中引用成功后才算真正的完成静态库的编译 嗯,我之所以说这些是因为我在项目中链接静态 ...

  4. 腾讯云视频转码回调 http code 405

    异常信息 405 Method Not Allowed 异常场景 通过腾讯云SDK上传视频,视频转码完成回调我的接口失败,我这边一直没有log.找到腾讯云工作人员,告诉我这边返回405错误和不支持ge ...

  5. 【Azure ACR+App Service】ACR WebHook请求App Service时遇见 401 Unauthorized

    问题描述 App Service 支持从ACR中直接拉取镜像,并且可以配置持续部署(Continuous Deployment), 它是通过在ACR中添加一个Webhook,然后发送POST请求到 & ...

  6. 【转载】大数据OLAP系统--开源组件方案对比

    开源大数据OLAP组件,可以分为MOLAP和ROLAP两类.ROLAP中又可细分为MPP数据库和SQL引擎两类.对于SQL引擎又可以再细分为基于MPP架构的SQL引擎和基于通用计算框架的SQL引擎: ...

  7. 小程序开发:app.vue检测更新时判断是否是朋友圈进入

    因为如果从朋友圈点进小程序来的,有些功能就用不了,所以需要判断下是否从朋友圈点进来的. 检查代码如下: checkScene() { // 判断场景值 如果是从分享到朋友圈再打开 就会有一些功能无法使 ...

  8. forward配置

    Adb connect 127.0.0.1:62001 adb forward tcp:27042 tcp:27042     #设置端口转发 adb forward tcp:27043 tcp:27 ...

  9. JavaScript 最新动态:2024 年新功能

    前言 随着 Web 技术的日新月异,JavaScript 也在不断地吸收新的特性和技术,以满足日益复杂和多样化的开发需求.在 2024 年,JavaScript 迎来了一系列令人瞩目的新功能,这些功能 ...

  10. 搞清楚Promise.all的异常处理

    参考资料: https://www.jianshu.com/p/356f10ee476d https://blog.csdn.net/aaqingying/article/details/122966 ...