文章转自同一作者的微信公众号:【机器学习炼丹术】

0 前言

首先理解:

  • deformable Convolution可变卷积针对的对象是卷积本身,因此膨胀卷积,3D卷积都可以用可变卷积的形式
  • 本篇文章讲解理论和论文,我还没有用上这个可变卷积测试效果,因为PyTorch好像还没有封装这个卷积方式,有点麻烦。所以我计划下一篇文章结合github上已经有的pytorch复现的可变卷积来做一个简单的测试。
  • 本来我是在学轮廓检测算法的,看到了一个SOTA的算法叫做deep snake,然后看了半天代码,发现里面嵌套了DCN,DLA等多个算法,所以就从头开始学了。

1 论文概述

论文中作者最大的贡献为:

  1. 提出了可变卷积,可变卷积网络为Deformable ConvNet(DCN)。
  2. 用同样的原理提出了可变池化层,叫做deformable ROI pooling。
  3. 这两个模块可以非常简单的用在其他网络结构中,并且不会增加很多的参数,但是效果还是不错的。(论文把这个方法用在了主流模型中)。

这个核心贡献在于,为什么卷积过程中卷积核一定要是正方形的?我的检测目标各种形状都有,为什么卷积核一定要是正方形的呢?

因此,这里的卷积核不再是正方形了,而是可以通过梯度下降更新的参数了:

a图就是最基本的卷积核,b就是可变卷积的卷积核,c和d是可变卷积的特殊情况。听起来不难吧,原理确实非常的简单。

2 实现原理

上图是表示可变卷积过程的。大概看一眼这个图,不难发现这种结构似乎和SEnet有点类似。在下一篇的代码实战中再考虑如何实现这个过程把。

泛泛地说的话,就是这个特征图,再额外的经过一个卷积层,生成一个offset的结果,然后把这个offset和这个特征图融合。

3 实验结果

论文中提到,在特征提取网络的后面3层使用可变卷积的效果比较好。

上图是在实际任务中,deformable convnets学习到的采样点,我认为这是一种非常有意思的可解释性的体现。

上表中最后三行体现了这个可变卷积的效果,确实是不错,确实有一定提升,那么这种可变卷积对与参数量的影响大吗?

可以看到,这个参数的影戏那个微乎其微,运行时间也基本差不多。我决定等我复现了这个可变卷积之后,我在以后的模型中都要用这个试试能不能有提升。(奇怪的奇技淫巧又增加了)。

大概就这么多,从理论上看,这个deformable convolution不难,关键是如何实现,希望我在复现的过程上不会太坎坷。

参考文章:

  1. https://arxiv.org/abs/1703.06211
  2. https://littletomatodonkey.github.io/2018/12/02/2018-12-02-Deformable ConvNets/
  3. https://zhuanlan.zhihu.com/p/52476083

最新文章

  1. ZOJ Problem Set - 1049 I Think I Need a Houseboat
  2. Python实用环境pyenv搭建教程
  3. listview选中没有效果
  4. SoapUI测试WS接口实战
  5. 关于安装Visual Studio 2015 RC版卡主不动的解决方案
  6. jQuery - jQuery的$.extend和$.fn.extend作用及区别
  7. Silverlight取得Session
  8. TRSWCM学习问题总结
  9. IE浏览器上传文件时本地路径变成”C:\fakepath\”的问题
  10. 简单的理解deflate算法
  11. 安装bootcamp时提示“找不到$winpedriver$文件夹,请验证该文件夹是否和bootcamp处于同一文件夹内?”
  12. HTTP 05 安全
  13. Python全栈之路----数据类型—列表
  14. codepen素材 coffeeScript -> JavaScript
  15. 关于VC++6.0与WIN10系统不兼容的解决办法
  16. PHP二维数组如何根据某个字段排序
  17. [转]使用QT开发GoogleMap瓦片显示和下载工具
  18. Spring Boot 构建一个 RESTful Web Service
  19. HDU 6118 度度熊的交易计划(费用流)
  20. Discuz常见小问题-如何设置为人工审核

热门文章

  1. 对于order by子句
  2. centos8 安装lnmp
  3. 关于uniapp无法navigateTo跳转的解决办法
  4. [BUGCASE]FixedDataTable表格数据渲染错误
  5. 新手上路之JDK11的下载、安装与PATH环境变量的配置
  6. HTML-webstorm添加快捷键
  7. Prafab Varient 预制体变体
  8. Spring Boot 中使用 Spring Security, OAuth2 跨域问题 (自己挖的坑)
  9. layui获取弹出层内容
  10. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件的tabBar、count、indexOf方法