近来在学习anchor-free网络,看到了可变形卷积(Deformable Convolutional Networks(DCN))的内容,大致总结一下,便于后面回顾。
可变形卷积可从以下三篇论文去学习,它们也被称为DCNv1、DCNv2、RepPoints(DCNv3),
DCNv1:http://xxx.itp.ac.cn/pdf/1703.06211.pdf
DCNv2:http://cn.arxiv.org/pdf/1811.11168v2
RepPoints(DCNv3):http://xxx.itp.ac.cn/pdf/1904.11490v2

这几篇论文是可变形卷积的提出和发展,最基础的都是建立在可变形卷积之上,那就有必要仔细学一下什么是可变形卷积了。

由尺度、姿态、视角和部分形变等因素引起的几何变化是目标识别和检测的主要挑战。在卷积/RoI池化模块中,DCN通过学习采样点的位置来得到几何形变建模的能力。

采样点的个数一般是设置成9个,传统的卷积是图a所示,要实现可形变卷积,并不是卷积核具有变形的能力,而是对这9个样本点的位置增加了一个偏移量进行训练学习。

2D卷积包含两步:1)用规则的网格R(3*3)在输入特征映射x上采样;2)对w加权的采样值求和。网格R定义了感受野的大小和扩张。例如定义了一个扩张大小为1的3×3卷积核。

对于输出特征映射y上的每个位置p0,我们有


其中Pn枚举了R中的位置。
在可变形卷积中,规则的网格R通过偏移{∆pn|n=1,…,N}增大,其中N=|R|。方程(1)变为

现在,采样是在不规则且有偏移的位置Pn+∆pn上。由于偏移∆pn通常是小数,方程(2)可以通过双线性插值实现

其中p表示任意(小数)位置(公式(2)中p=Po+Pn+∆Pn),q枚举了特征映射x中所有整体空间位置,G()是双线性插值的核。注意G是二维的。它被分为两个一维核

如何进行双线性插值呢?

如图2所示,通过在相同的输入特征映射上应用卷积层来获得偏移。卷积核具有与当前卷积层相同的空间分辨率和扩张(例如,在图2中也具有扩张为1的3×3)。输出偏移域与输入特征映射具有相同的空间分辨率。通道维度2N对应于N个2D偏移量。在训练过程中,同时学习用于生成输出特征的卷积核和偏移量。为了学习偏移量,梯度通过方程(3)和(4)中的双线性插值运算进行反向传播。

对于输入的一张feature map,假设原来的卷积操作是3×3的,那么为了学习偏移量offset,我们定义另外一个3×3的卷积层(图中上面的那层),输出的维度其实就是原来feature map大小,channel数等于2N(分别表示x,y方向的偏移)。下面的可变形卷积可以看作先基于上面那部分生成的offset做了一个插值操作,然后再执行普通的卷积。

理解了上面这段话基本上就理解了可变形卷积,其余都是在这基础上的变化,上面那层的卷积是用于学习偏移量的,并没有对变形的区域进行卷积,卷积区域也不会突然变形。通过学习到的偏移量与对应像素的位置索引值相加,像素位置的索引值发生了变化,从整数变成了小数,不再对应之前位置的像素值。这时如何确定新的像素值?使用双线性插值,把每个样本点的4邻域像素值加权平均得到新的对应位置的像素值。这样,每个点对应着四个位置的像素,9个样本点最多可以表示36个位置的像素,而这个位置根据偏移量变化是不固定的,于是就实现了可变形卷积。

关于RepPoints,它是在可变形卷积的基础上实现的,增加了两个阶段的可变形卷积

提出RepPoints一组样本点集,默认是9个


通过学习样本点x和y方向的偏移量,结合像素特征进行分类回归。


这是这篇文章提出的检测器结构。输入图像进入FPN网络进行特征提取,这里只画了一层的处理过程。在这层,提取到的特征图有两条走向,上面那条是进行可变形卷积获得偏移量,下面那条是常规的卷积操作,得到新的特征图。学习到的偏移量与新特征图进行结合,上面提过,就是新特征图的像素索引加上偏移量,在进行双线性插值进一步得到新的特征图。在最新的特征图中,有9个样本点对应学习出来的目标边界,这时根据这些目标边界产生伪框与ground truth对比进行分类回归。
下面是一个更具体的检测器结构图。

参考博客:
全面解析可变形卷积家族(Deformable Convolutional Networks v1+ v2)
可变形卷积 deformable convolution 学习记录

可变形卷积学习(RepPoints)相关推荐

  1. RepPoints(本质是可变形卷积DCN)再理解

    虽然在之前学习过RepPoints这个网络,但当时理解较为浅显,现在再看论文和一些博客解释,感觉又有了新的收获. RepPoints是一种anchor-free网络,说的是使用具有一组代表性的点来表示 ...

  2. 深度学习之 DCN(Deformable Convolution)-可变形卷积

    Paper link: http://openaccess.thecvf.com/content_ICCV_2017/papers/Dai_Deformable_Convolutional_Netwo ...

  3. 可变形卷积在视频学习中的应用:如何利用带有稀疏标记数据的视频帧

    卷积层是卷积神经网络的基本层.虽然它在计算机视觉和深度学习中得到了广泛的应用,但也存在一些不足.例如,对于某些输入特征图,核权值是固定的,不能 适应局部特征的变化,因此需要更多的核来建模复杂的特征图幅 ...

  4. 可变形卷积网络--Deformable Convolutional Networks

    https://arxiv.org/abs/1703.06211 Microsoft Research Asia Code coming soon 本文可以看做是对 Spatial Transform ...

  5. CVPR2019| ADCrowdNet: 用于人群理解的可变形卷积网络

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 提出了一种用于人群理解的注意力可变形卷积网络ADCrowdNet,它可以解决高拥塞噪声场景的精度下降问题.ADCro ...

  6. 更灵活、有个性的卷积——可变形卷积(Deformable Conv)

    作者简介 CW,广东深圳人,毕业于中山大学(SYSU)数据科学与计算机学院,毕业后就业于腾讯计算机系统有限公司技术工程与事业群(TEG)从事Devops工作,期间在AI LAB实习过,实操过道路交通元 ...

  7. 可变形卷积神经网络 | Deformable Network

    论文标题:Deformable Convolutional Networks 论文链接:https://arxiv.org/abs/1703.06211 所要解决的问题 视觉识别的关键挑战是如何在对象 ...

  8. 可变形卷积系列(三) Deformable Kernels,创意满满的可变形卷积核 | ICLR 2020

    论文提出可变形卷积核(DK)来自适应有效感受域,每次进行卷积操作时都从原卷积中采样出新卷积,是一种新颖的可变形卷积的形式,从实验来看,是之前方法的一种有力的补充.   来源:晓飞的算法工程笔记 公众号 ...

  9. 分组卷积/转置卷积/空洞卷积/反卷积/可变形卷积/深度可分离卷积/DW卷积/Ghost卷积/

    文章目录 1. 常规卷积 2. 分组卷积 3. 转置卷积 4. 空洞卷积 5. 可变形卷积 6. 深度可分离卷积(Separable Convolution) 6.1 Depthwise Convol ...

最新文章

  1. 配置vsftpd的遇到的坑及搭建虚拟账户
  2. python-上传文件的几种方式
  3. 2017计算机应用类专业综合知识试题,对口高考2017计算机应用类专业综合模拟题.doc...
  4. response设置响应头
  5. 互联网日报 | 美团门票单日入园人次破500万;蔚来用户累计换电百万次;2020诺贝尔生理学或医学奖揭晓...
  6. 2018年第九届蓝桥杯—C/C++程序设计省赛解题
  7. EasyPR车牌识别学习总结
  8. .NET BackgroundWorker的一般使用方式
  9. spark 设置主类_最近Kafka这么火,聊一聊Kafka:Kafka与Spark的集成
  10. 第1章-导言-知识点
  11. 中国精算师资格考试-考试指南
  12. 转换php时间戳,如何实现转换php时间戳
  13. matlab 绘制对数曲线图,大神经验!教你用matlab画对数坐标!
  14. html5防止屏幕休眠,防止休眠或屏幕关闭插件
  15. z-blogPHP在西部数码虚拟主机上遇到WTS-WAF错误拦截情况,协商好久他们还是妥协了...
  16. 使用DoraCloud在Proxmox虚拟化平台搭建桌面云
  17. 微信扫码下载app的前端界面代码
  18. iOS 苹果内购详细步骤
  19. 《Python小白入门》python环境安装,一步一截图
  20. IBM暑期实习笔试后总结

热门文章

  1. Javascript实现计数器,定时警告和停止
  2. ES5和ES6中的变量声明提升
  3. Docker 安装zookeeper
  4. ubuntu 软件包管理工具 dpkg,apt-get,aptitude 区别
  5. Windows8之hyper-v探索
  6. 什么时候找到HAVE_CONFIG_H的定义啊
  7. 房子成焦点,被挂马的×××网站仍在增加中
  8. redhat9.0配置apache 出现乱码
  9. 开启协程_「科普」什么是协程?
  10. 关于onload的事件权柄以及踩过的坑