可变形卷积简介(Deformable Convolution)
1. 核心原理
可变形卷积通过动态调整卷积核的采样位置,增强模型对几何形变(如旋转、缩放)的适应能力。其核心改进包括:
- 偏移量(Offset):为卷积核的每个采样点学习 x / y x/y x/y方向的偏移量 Δ p n \Delta p_n Δpn,使采样位置从固定网格 p n p_n pn变为 p + p n + Δ p n p + p_n + \Delta p_n p+pn+Δpn。
- 双线性插值:处理非整数坐标的采样值,确保梯度可传播。
2. 数学表达
传统卷积公式
Y ( p ) = ∑ q ∈ R X ( q ) ⋅ W ( p − q ) Y(p) = \sum_{q \in R} X(q) \cdot W(p-q) Y(p)=q∈R∑X(q)⋅W(p−q)
符号说明:
- p p p: 输出特征图当前位置坐标(如 ( x , y ) (x,y) (x,y))
- q q q: 输入特征图上卷积核区域 R R R内的采样点坐标
- X ( q ) X(q) X(q): 输入特征图在位置 q q q的像素值
- W ( p − q ) W(p-q) W(p−q): 卷积核在相对位置 ( p − q ) (p-q) (p−q)的权重值
- R R R: 规则采样网格(如3×3卷积核的 R = { ( − 1 , − 1 ) , . . . , ( 1 , 1 ) } R=\{(-1,-1),...,(1,1)\} R={(−1,−1),...,(1,1)})
物理意义:
在输出位置 p p p处,对输入特征图 X X X的固定网格 R R R内所有点进行加权求和。
可变形卷积公式
Y ( p ) = ∑ n = 1 N w n ⋅ X ( p + p n + Δ p n ) Y(p) = \sum_{n=1}^N w_n \cdot X(p + p_n + \Delta p_n) Y(p)=n=1∑Nwn⋅X(p+pn+Δpn)
符号说明:
- p n p_n pn: 卷积核的固定偏移(与传统卷积的 q q q相同)
- Δ p n \Delta p_n Δpn: 动态学习的偏移量(由额外卷积层生成)
- X ( p + p n + Δ p n ) X(p + p_n + \Delta p_n) X(p+pn+Δpn): 通过双线性插值计算的浮点坐标像素值
物理意义:
通过动态偏移使卷积核自适应目标形变,提升几何建模能力。
实现对比
维度 | 传统卷积 | 可变形卷积 |
---|---|---|
采样位置 | 固定网格 R R R | 动态调整 R + Δ p n R + \Delta p_n R+Δpn |
灵活性 | 固定几何结构 | 自适应形变 |
计算开销 | 较低 | 需额外计算偏移量和插值 |
3. PyTorch实现
import torch
from torchvision.ops import DeformConv2d定义可变形卷积层
deform_conv = DeformConv2d(in_channels=3, out_channels=64, kernel_size=3,padding=1
)#输入张量(batch=1, channel=3, H=224, W=224)
input = torch.randn(1, 3, 224, 224)
#偏移量张量(2*kernel_size^2=18通道)
offset = torch.randn(1, 18, 224, 224) 执行可变形卷积
output = deform_conv(input, offset)
print(output.shape) # 输出形状: (1, 64, 224, 224)
4. 优缺点
✅ 优点
- 几何适应性:动态采样提升对形变、遮挡的鲁棒性。
- 性能提升:在目标检测(如Faster R-CNN)、分割(如DeepLab)中显著提高精度。
❌ 缺点
- 计算开销:偏移量生成和插值增加约10%-20%计算量。
- 实现复杂:需额外卷积层学习偏移量,调试难度较高。
5. 应用场景
- 目标检测:Deformable DETR
- 医学影像:适应器官的非刚性形变。
参考文献
Deformable Convolutional Networks论文
关键点说明
1. 偏移量学习:偏移量由网络自动学习,无需人工设计。
2. 插值必要性:双线性插值解决非整数坐标的梯度回传问题。
有问题随时交流~~