深度学习进阶(十三)可变形卷积 DCN

之前的内容里,我们提出了让 CNN 更灵活的想法:

能不能让"采样位置"本身,变成可以学习的?

上一篇里,我们已经用可变形池化实现了这一目标。但同时我们也提到了,这并非终点:

既然池化可以偏移采样,那更基础的卷积本身为什么不能?

这便是 Deformable Convolutional Networks 里的核心创新:可变形卷积,简称 DCN。

1. 从卷积到可变形卷积

1.1 传统卷积层的建模局限

首先要强调的是:DCN 并不是一种独立的网络结构,而是一种针对卷积操作的改进方法。通常不会单独称一个模型为"DCN",而是称其为:基于 DCN 的网络(DCN-based models),或者 DCN 算子。

因此,在展开 DCN 之前,我们先回顾一下 CNN 本身的核心操作:卷积

这里,我们以最常见的二维卷积展开:

\[y(p_0) = \sum_{p_n \in \mathcal{R}} w(p_n) \cdot x(p_0 + p_n)+b \]

再简单解释一下这个公式:

  1. \(x\) :输入特征图。
  2. \(p_0\):当前输出位置。
  3. \(\mathcal{R}\):卷积核的采样位置,决定偏移坐标 \(p_n\) 。
  4. \(w(p_n)\):卷积核中的对应的卷积权重。

总结公式逻辑:通过输出位置和偏移的组合遍历所有卷积核覆盖位置,对相应元素进行线性组合。

如果你有些遗忘,可以在这里查看之前的介绍:图像处理基础

继续,这里的关键点是:采样位置 \(\mathcal{R}\) 是固定的。

比如一个 \(3\times3\) 卷积核,每个输出位置只能采样自身和周围的总计 9 个元素。

从出发点来说,这本身是没有问题的,因为这就是我们根据图像的局部性、平移不变性先验引入的归纳偏置。

但还是老问题:

这种偏置太刚性了。

一个事实是:现实中的大多结构特征往往不是方格,小到弯曲的边缘、不规则纹理、大到人脸特征、动物体型等等。

又或者我们进行了数据增强,让目标发生形变、偏移、旋转、拉伸等等情况,这时重要信息就不再落在这些固定采样点上,从而导致表达能力受限。

虽然随着层级传播感受野会逐渐扩大,但局部感受野始终被定死是规则矩形。 无法改变采样模式本身。

这便是 DCN 要解决的问题,它的基本逻辑和可变形池化相同,但拥有更多细节,实现的效果也更加灵活。

1.2 DCN 的发展和思想

实际上,DCN 并非只有 Deformable Convolutional Networks这一孤篇,这篇起源论文只是它的第一版,我们可以称为 DCNv1 。

提出 DCNv1 的研究团队在 19 年又发布了新的论文:Deformable ConvNets v2: More Deformable, Better Results,进一步引入了 modulation 机制 ,使得特征采样不仅位置可变,权重也具备自适应能力。

到这还没完,其实之后还有一系列其他基于 DCN 思想的变体,就连注意力机制也有吸收 DCN 思想的变体:Deformable Attention.
总结来说,DCN 这种可学习的采样思路不像我们之前介绍的某些具体模型,它开启了一类可学习采样机制的研究范式,并持续影响至今。

其核心改动和池化同理:在原有采样位置上,引入可学习偏移量。

\[y(p_0) = \sum_{p_n \in \mathcal{R}} w(p_n)\cdot x(p_0 + p_n + \Delta p_n)+b \]

这里的 \(\Delta p_n\) 就是通过一个额外分支预测得到的偏移量。

现在网格的每一个采样点都可以"挪位置",有的点可能贴近边缘,有的点可能集中在关键区域,就像这样:

下面就来展开其具体逻辑。

2.DCNv1

就像我们刚刚说的,DCN 的基本逻辑和可变形池化是一样的:

新增一个卷积分支,为每个采样点预测偏移量,再注入取样坐标,通过双线性插值取特征值。

我们展开一些细节:

2.1 偏移学习与注入

DCN 在这步的具体逻辑如下:

如图所示,假设我们要实现一个 \(3 \times 3\) 的可变形卷积:

  1. 主分支 :仍然是传统的卷积核,输出通道数为 \(C_{out}\),负责特征提取。
  2. 偏移分支 :输出通道数为 \(2N\)(\(N\) 为采样点数,\(3 \times 3 = 9\)),负责预测每个采样点的偏移,即 \(\Delta p_n\) 。

这里的基本逻辑和上一篇是相同的,就不再赘述了,我们展开两个细节:

2.2 卷积和池化的对齐差异

首先,因为是像素级对齐,我们不再需要像可变形池化那样通过 bin 内采样点的平均池化来聚合特征,得到用于注入的偏移量。

如图,在 DCN 中:对于每一个空间位置 \((x,y)\),偏移分支可以直接输出该位置对应的 \(\Delta p_n = (\Delta x, \Delta y)\)。

因此,每个采样位置都可以独立生成自己的采样偏移,而不像池化里的以 bin 为单位的采样偏移。

2.3 滑动采样的偏差注入

其次还有一点需要强调:

虽然卷积核在特征图上是按照滑动窗口方式逐位置遍历的,但偏移的计算过程并不会随着卷积核的移动而重复执行。

如图所示,偏移分支在前向传播中仅执行一次卷积运算,就能得到完整的偏移特征图

\[\Delta p \in \mathbb{R}^{2N \times H \times W} \]

之后在实际的可变形卷积计算过程中,卷积核滑动到哪里,就读取哪里对应的偏移进行计算。

在这种设计中,偏移的学习与卷积本身的滑动计算是解耦的。

此外,对于偏移后得到非整数坐标的取值问题,仍然是双线性插值,就不再展开了。

这样我们就实现了可变形卷积,让卷积本身的采样规则不再局限于固定方格,而是在全图内实现理论上的任意组合。

不过,虽然理论上一次运算中的采样点可以天南海北,但因为图像特征的局部性,往往实际学到的偏移量也并不会过大,了解即可。

3. 调制机制(Modulation)

到上一部分结束,我们已经梳理完了 DCNv1 的完整逻辑。

不过,虽然采样位置已经可以通过 \(\Delta p_n\) 进行动态调整,但这里仍然存在一个隐含问题:

所有采样点在聚合时的贡献权重是固定的。

也就是说,即使某些采样点被偏移到了"无效区域"(如背景、边界噪声),它在最终输出中仍然会被同等对待,这在一定程度上限制了模型的表达能力。

为了解决这一问题,DCNv2 在 DCNv1 的基础上引入了一个新的分支:调制分支

其核心思想是:

不仅让采样位置可变,还让每个采样点的"贡献强度"也可学习。

在形式上,DCNv2 的表达可以写为:

\[y(p_0) = \sum_{p_n \in \mathcal{R}} w(p_n)\cdot x(p_0 + p_n + \Delta p_n)\cdot m(p_n) \]

其中, \(m(p_n)\) 就是采样点对应的调制系数。

结构上的改进并不复杂,它的具体逻辑是这样的:

如图所示,调制分支通过一个额外的卷积层预测:

\[m(p_n) \in [0, 1]^{N \times H \times W} \]

在此基础上,输出通过 Sigmoid 进行约束 ,使其落在 \([0,1]\) 区间内,作为每个采样点在聚合中的权重。

这里有一个很明显的问题:

卷积层参数本身不就包括权重 \(w\) 吗?为什么还要加一个调制系数?

其实说到底,这是一个粒度问题

  1. 权重 \(w\) :是滤波器本身的特性 ,它对同一个采样位置在不同通道间是共享的。
  2. 调制系数 :存在特征图内,它是在同一个采样位置下,对每一个采样点的单独设置

再简单点:权重 \(w\) 是"全局调整",调制系数是"局部精细调整"。

这种机制让 DCNv2 能够更灵活地选择性关注重要的采样点,进一步提升了对复杂结构的建模能力。

到这里,才是使用 DCN 作为模块的主流结构,后续要么就是工程优化,要么就是变体的内容了。

到本篇为止,大概补充了一些 CNN 自身结构向"自由"的演变过程,之后就会再回到 Attention 相关思路的现代 CNN 结构了。

当然,发展肯定不是一个单线的过程,绝不是说向 Attention 靠拢的就一定是更好的 CNN,在现代 CNN 结构中,仍然有很多不同的研究方向。

相关推荐
温九味闻醉7 分钟前
关于腾讯广告算法大赛2025项目面试要点
人工智能·算法·机器学习
运维帮手大橙子13 分钟前
自动驾驶通过红路灯路口卡停
人工智能·机器学习·自动驾驶
Agent产品评测局33 分钟前
化工制造安全生产AI方案主流产品对比详解:2026工业大模型与端到端自动化选型指南
人工智能·安全·ai·chatgpt·制造
@蔓蔓喜欢你1 小时前
React Hooks完全指南:从基础到进阶
人工智能·ai
Agent手记1 小时前
生产环节费用智能管控与超支预警方案:基于AGI智能体的精细化治理实践
运维·服务器·人工智能·ai·agi
Artech1 小时前
[对比学习LangChain和MAF-01]基本编程模式的差异(上篇)
ai·langchain·agent·maf
smilejingwei1 小时前
智能问数(Text2SQL)工业级落地,纯 AI 黑盒方案都没戏
ai·text2sql·智能问数
人工智能培训1 小时前
解码大语言模型LLM:定义与核心原理解析
大数据·人工智能·机器学习·prompt·agent
@蔓蔓喜欢你1 小时前
CSS预处理器实战:Sass/Less/Stylus对比与最佳实践
人工智能·ai
阳明山水1 小时前
模型迭代实战:如何将准确率从75%提升到89%
数据结构·人工智能·算法·机器学习·微信·微信公众平台·微信开放平台