可变形卷积概念出自2017年论文:Deformable Convolutional Networks

  顾名思义,可变形卷积的是相对于标准卷积的概念而来。

(a) 一个经典的 3×33 \times33×3 卷积,每一个卷积输入的都是绿色的部分。
(b) Deformable Convolution,虽然也是做这九个点的卷积,但是这个卷积具体采在这个像素的位置是可以变化的,所以叫做 deformable。 那么变形的量是通过学习根据输入数据得出的。其中 © 和 (d) 是两种特殊的情况。

为什么要可变形卷积?

  我们知道卷积核的目的是为了提取输入物的特征。我们传统的卷积核通常是固定尺寸、固定大小的(例如3x3,5x5,7x7.)。这种卷积核存在的最大问题就是,对于未知的变化适应性差,泛化能力不强。

  卷积单元对输入的特征图在固定的位置进行采样;池化层不断减小着特征图的尺寸。网络内部缺乏能够解决这个问题的模块,这会产生显著的问题,例如,同一CNN层的激活单元的感受野尺寸都相同,这对于编码位置信息的浅层神经网络并不可取,因为不同的位置可能对应有不同尺度或者不同形变的物体,这些层需要能够自动调整尺度或者感受野的方法。再比如,目标检测虽然效果很好但是都依赖于基于特征提取的边界框,这并不是最优的方法,尤其是对于非网格状的物体而言。

解决上述问题最直观的想法就是,我们的卷积核可以根据实际情况调整本身的形状,更好的提取输入的特征。

可变形卷积理论?

(1)首先声明一点,在可变形卷积中,可变形卷积操作和池化操作都是2维的,都是在同一 channel 上进行的,常规的卷积操作主要可以分为两部分:(1)在输入的 feature map上使用规则网格R进行采样;(2)进行加权运算,R\mathcal{R}R 定义了感受野的大小和扩张

对于在输出的 feature map上的每个位置 p0\mathbf{p}_0p0​,通过下列式子进行计算:
y(p0)=∑pn∈Rw(pn)⋅x(p0+pn)R={(−1,−1),(−1,0),⋯,(0,1),(1,1)}y(\mathbf{p}_0) = \sum_{\mathbf{p}_n \in \mathcal{R}} \mathbf{w}(\mathbf{p}_n) \cdot \mathbf{x}(\mathbf{p}_0 + \mathbf{p}_n) \\ \mathcal{R} = \{(-1, -1),(-1,0), \cdots, (0,1),(1,1)\} y(p0​)=pn​∈R∑​w(pn​)⋅x(p0​+pn​)R={(−1,−1),(−1,0),⋯,(0,1),(1,1)}
其中,pn\mathbf{p}_npn​ 是对 R\mathcal{R}R 中所列位置的枚举,它就是相对于 p0\mathbf{p}_0p0​ 这个像素点距离这个 kernel 中心的偏移,权重为 w(⋅)\mathbf{w}(\cdot)w(⋅)。
对于普通的卷积,对于计算点 y(p0)y(\mathbf{p}_0)y(p0​) 的特征值,它就是使用了 y(p0)y(\mathbf{p}_0)y(p0​) 及其周边像素的一个加权和。

(2) Deformable Convolution:
可变形卷积的操作是不同的,在可变形网络的操作中,常规的规则网格 R\mathcal{R}R 通过增加一个偏移量进行扩张,同样的位置 p0\mathbf{p}_0p0​ 变为:
y(p0)=∑pn∈Rw(pn)⋅x(p0+pn+Δpn),offsets{Δpn∣b=1,⋯,N}.y(\mathbf{p}_0) = \sum_{\mathbf{p}_n \in \mathcal{R}} \mathbf{w}(\mathbf{p}_n) \cdot \mathbf{x}(\mathbf{p}_0 + \mathbf{p}_n + \Delta \mathbf{p}_n ) ,\\ \rm{offsets} \{\Delta \mathbf{p}_n | b = 1,\cdots, N\}.y(p0​)=pn​∈R∑​w(pn​)⋅x(p0​+pn​+Δpn​),offsets{Δpn​∣b=1,⋯,N}.

现在,采样的位置变成了不规则位置,由于偏移量 Δpn\Delta \mathbf{p}_nΔpn​ 通常是小数,因此我们通过双线性插值法进行实现,公式为:
x(p)=∑qG(q,p)⋅x(q),p=p0+pn+Δpn,G(q,p)=g(qx,px)⋅g(qy,py),g(a,b)=max⁡(0,1−∥a−b∥).\mathbf{x}(\mathbf{p}) = \sum_{\mathbf{q}} G(\mathbf{q}, \mathbf{p}) \cdot \mathbf{x}(\mathbf{q}), \mathbf{p} = \mathbf{p}_0 + \mathbf{p}_n + \Delta \mathbf{p}_n,\\ G(\mathbf{q}, \mathbf{p}) = g(\mathbf{q}_x, \mathbf{p}_x) \cdot g(\mathbf{q}_y, \mathbf{p}_y) , \\ g(a, b) = \max(0, 1 - \| a -b\|). x(p)=q∑​G(q,p)⋅x(q),p=p0​+pn​+Δpn​,G(q,p)=g(qx​,px​)⋅g(qy​,py​),g(a,b)=max(0,1−∥a−b∥).

拓展:双线性插值
首先看,双线性插值的作用,对图像进行缩放。假设原图像大小为 m×nm \times nm×n,目标图像的大小为 a×ba \times ba×b,那么两幅图像的边长比为 m/a,n/bm/a,n/bm/a,n/b。注意,通常这个比例不是整数,而非整数的坐标是无法在图像这种离散数据上使用的。双线性插值通过寻找距离这个对应坐标最近的四个像素点,来计算该点的值。比如,对应的坐标为(2.5,4.5),那么最近的像素是(2,4)(2,5)(3,4)(3,5)
若图像为灰度图像,那么 (i,j)(i,j)(i,j) 的灰度值可以通过以下公式计算:
f(i,j)=w1∗p1+w2∗p2+w3∗p3+w4∗p4f(i, j) = w1*p1 + w2*p2 + w3*p3 + w4*p4f(i,j)=w1∗p1+w2∗p2+w3∗p3+w4∗p4
其中,pi,i=1,2,3,4p_i, i=1,2,3,4pi​,i=1,2,3,4 为最近的四个像素点,wi,i=1,2,3,4w_i, i=1,2,3,4wi​,i=1,2,3,4为各点相应权值。


可变形卷积结构形式?

注意:这里有一个非常非常非常容易混淆的点,所谓的deformable,到底deformable在哪?很多人可能以为deformable conv学习的是可变形的kernel,其实不是不是不是!本文并不是对kernel学习offset而是对feature的每个位置学习一个offset。

各部分维度如下:
input feature map:(batch, H, W, C)
output feature map: (batch, H, W, N)
offset field: (batch, H, W, 2N)

  offset field 通过在原图上进行标准卷积操作得到,通道数为2N表示N个2维的偏置量 (Δ\DeltaΔx ,Δ\DeltaΔ y) ,N 表示卷积核的个数即输出特征层的通道数。

  形变卷积过程可以描述为:首先在输入feature map上进行标准卷积得到N个2维的偏置量 (Δ\DeltaΔx ,Δ\DeltaΔy),然后分别对输入feature map上各个点的值进行修正(设 feature map为 P,即 P(x, y)= P(x + Δ\DeltaΔx , y + Δ\DeltaΔy) ,当 x + Δ\DeltaΔ 为小数时,使用双线性插值计算 P( x + Δ\DeltaΔx ,y + Δ\DeltaΔy) )。形成 N个 feature map,然后使用 N 个卷积核一一对应进行卷积得到输出。

公式:

Deformable Convolution 可变形卷积相关推荐

  1. Deformable Convolutional可变形卷积回顾

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Sik-Ho Tsang 编译:ronghuaiyang 导读 使用可变形 ...

  2. (ICCV-2017)可变形卷积网络

    可变形卷积网络 paper题目:Deformable Convolutional Networks paper是Microsoft Research Asia发表在ICCV 2017的工作 paper ...

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

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

  4. 可变形卷积(Deformable Convolution)

    可变形卷积 前言: 一.可变形卷积 1.原文摘要(Abstract) 2.可变形卷积 前言: 之前分了两次将深度学习中常用的各种卷积操作进行了汇总介绍,具体包括标准2D卷积.1×1卷积.转置卷积.膨胀 ...

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

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

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

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

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

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

  8. 可变形卷积(Deformable Conv)原理解析与torch代码实现

    1. 可变形卷积原理解析 1.1 普通卷积原理 传统的卷积操作是将特征图分成一个个与卷积核大小相同的部分,然后进行卷积操作,每部分在特征图上的位置都是固定的. 图1 普通卷积过程 图1所示为普通卷积在 ...

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

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

最新文章

  1. 五大经典算法之回溯法
  2. MFC为什么要保留原来的CPen, 然后SelectObject
  3. C专家编程复习摘要一
  4. C++之explicit关键字使用总结
  5. Java 9 ← 2017,2019 → Java 13 ,来看看Java两年来的变化
  6. Centos 7编译安装 LAMP 环境
  7. abs.s19文件_ABS 1.2:后台命令和导入文件的功能
  8. c++ gzip java.util.zip.gzip_java.util.zip.GZIPInputStream.close()方法示例
  9. Visitor模式学习
  10. LINUX开机自启问题
  11. 【语音去噪】基于matlab GUI谱减法+维纳滤波语音去噪(带面板+信噪比)【含Matlab源码 1661期】
  12. 锐捷文件描述错误linux,ubuntu下使用锐捷客户端连接校园网-郑州大学Ruijieclient for Linux下载及配置指导...
  13. win10中修改mac地址
  14. 网站中网页最优色彩搭配方案学习--Java免费学习网
  15. html5广告的版式设计,页面版式设计
  16. 亿豪的python学习 day14
  17. adb shell循环命令_android adb实用命令小结
  18. C语言文件输入输出函数总结
  19. 推送近期三波关于Vue.js的资讯
  20. vscode背景图片无法删除

热门文章

  1. 钠钙玻璃建筑玻璃英国UKCA认证—EN 572-9
  2. 域控服务器推送,域控制器下发文件到域用户桌面
  3. 如何预防收到伪造本域发信人的诈骗邮件
  4. 【走在生信的路上-1】cbioportal私有化部署教程
  5. 新加坡中央银行测试数字加密货币发行
  6. 成人网站性能提升20倍之经验谈
  7. 重庆自考本科报名费多少钱?总共花多少钱?
  8. 趣图:Java 和 PHP 之间的战斗
  9. 海外版“咸鱼”Carousell是什么?
  10. Bip44确定性算法的android实现