当前位置: 首页 > news >正文

可变形卷积简介(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)=qRX(q)W(pq)

符号说明:
  • 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(pq): 卷积核在相对位置 ( p − q ) (p-q) (pq)的权重值
  • 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=1NwnX(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. 插值必要性:双线性插值解决非整数坐标的梯度回传问题。

有问题随时交流~~

http://www.dtcms.com/a/191539.html

相关文章:

  • vLLM - SamplingParams 参数
  • Linux服务之lvs集群与dr模式部署
  • Mathematics-2025《Semi-Supervised Clustering via Constraints Self-Learning》
  • 线程同步机制
  • FlashInfer - 测试的GPU H100 SXM、A100 PCIe、RTX 6000 Ada、RTX 4090
  • Docker 介绍与使用
  • Mysql 存储引擎
  • 系统漏洞扫描服务:维护网络安全的关键与服务原理?
  • 打卡DAY25
  • [Vue3]语法变动
  • 企业报表平台如何实现降本增效
  • 数字信号处理-大实验1.3
  • vue中,created和mounted两个钩子之间调用时差值受什么影响
  • 静电的起因与静电效应:技术分析与应用
  • SVG 知识详解:从入门到精通
  • 如何远程执行脚本不留痕迹
  • 3DMAX脚本病毒Spy CA查杀方法
  • TypeScript泛型:从入门到精通的全方位指南
  • 软考软件设计师中级——软件工程笔记
  • 通用软件项目技术报告 - 术语词典
  • YashanDB V23.4 LTS 正式发布|两地三中心、库级闪回重磅特性上线,生产级可用性再升级
  • 流速仪数据处理及流量断面线绘制
  • CS4334:一款高性能的立体声音频数模转换器
  • Linux操作系统实战:中断源码的性能分析(转)
  • C# 调试技巧——日志记录,NuGet内断点
  • 继续预训练 LLM ——数据筛选的思路
  • MongoDB 的核心概念(文档、集合、数据库、BSON)是什么?
  • “redis 目标计算机积极拒绝,无法连接” 解决方法,每次开机启动redis
  • cursor 学习
  • 通过SMTP协议实现Linux邮件发送配置指南