可变卷积原理总结

简介: 可变卷积原理总结

1 背景

传统的CNN存在固定几何形状的缺陷: 卷积单元在固定位置对输入特征图进行采样池化层以固定比率降低空间分辨率;一个ROI(感兴趣区域)池化层将一个ROI分割成固定的空间单元;缺乏处理几何变换的内部机制等。

上述缺陷会引起下列问题

  1. 1. 同一CNN层中所有激活单元的感受野大小是相同的,这对于在空间位置上编码语义的高级CNN层是不需要的
  2. 2. 对于具有精细定位的视觉识别的实际问题,不同的位置对象可能具有不同尺度或形状。因此,固定位置进行采样很难提取完整的对象特征。尺度或感受野大小的自适应确定是可取的。
  3. 为了解决上面的问题,提出了可变卷积,在文本检测DBNet等文章中使用。

e15e9b85879a4b84af64ab48d92104fe.png上图左侧是传统的CNN提取特征,由于固定位置进行下采样,很难将羊的位置全部覆盖进行下采样,即没有完整提取羊的特征。

右侧是可形变卷积,由于卷积的形状自适应,进行的下采样卷积核形状不定,可以覆盖整个羊,从而提取到完整羊的特征。

2 可变卷积 DCN1

269d061fc8c34fd99f2b883edd9b57f3.png

其中图(a)是传统CNN,(b)©(d)是可变形卷积。

2.1 传统卷积

假设图(a)中虚线框是一个特征图F,9个绿色点构成了一个卷积核,那么该点的值应该是:

3f26745a87554cbc8564bf93a9162516.png

其中是卷积核在位置i的值,而(x,y)是卷积核该位置对应图像中一点的坐标。

2.2 可变卷积

可变卷积的计算与传统CNN的类似,只是多了一个偏移量

56017c4f94e64391ac80b3d603985901.png

该偏移量使得参与计算的点发生变化。如图(b)中,卷积核遍历到了9个绿色点的位置,但是参与计算的是通过9个绿色点和偏移量得到的蓝色点。相当于在控制卷积核的形状。

那么偏移量是如何生成的呢

将输入特征图通过一个卷积核,输出为大小为原特征图大小,out_channlel为2,代表x和y方向山的偏移量。然后提取ROI区域得到卷积核上在该次采样时的偏移量,如下图所示:

356fd2eb397148049a153ce5f1816c68.png

了解上面的东西后,再总结一下DCN 1的过程

c4882e1c42484f4dae2c3d8d79984a5c.png

本质上,我们利用的卷积核还是按照传统CNN一样遍历。但是遍历到某个位置后,由于偏量,我的结果是另外位置和卷积核参数的计算结果。

如上图,我们卷积核遍历到了绿色的位置。但是偏量使得我们真正参与计算的是蓝色的点。

3 可变卷积 DCN 2

DCN 2在DCN 1的基础上添加了一个采样点权重

484ce141d0c24113bf7d45cb7d2b50c8.png这个采样点的区域我们不感兴趣,则把权重学习为0即可。

4 参考文章

https://paddlepedia.readthedocs.io/en/latest/tutorials/CNN/convolution_operator/Deformable_Convolution.html


相关文章
|
机器学习/深度学习
普通卷积、分组卷积和深度分离卷积概念以及参数量计算
普通卷积、分组卷积和深度分离卷积概念以及参数量计算
1114 0
普通卷积、分组卷积和深度分离卷积概念以及参数量计算
|
3月前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进-论文笔记】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
1月前
|
机器学习/深度学习 算法 计算机视觉
【YOLOv10改进 -卷积Conv】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
3月前
|
机器学习/深度学习 编解码 计算机视觉
【YOLOv8改进】 SPD-Conv空间深度转换卷积,处理低分辨率图像和小对象问题 (论文笔记+引入代码)
YOLO目标检测专栏探讨了CNN在低分辨率和小目标检测中的局限性,提出SPD-Conv新架构,替代步长卷积和池化层,通过空间到深度层和非步长卷积保持细粒度信息。创新点包括消除信息损失、通用设计和性能提升。YOLOv5和ResNet应用SPD-Conv后,在困难任务上表现优越。详情见YOLO有效改进系列及项目实战目录。
|
3月前
|
机器学习/深度学习 编解码 监控
YOLOv5改进 | 卷积篇 | SPD-Conv空间深度转换卷积(高效空间编码技术)
YOLOv5改进 | 卷积篇 | SPD-Conv空间深度转换卷积(高效空间编码技术)
616 0
|
3月前
|
机器学习/深度学习 并行计算 网络架构
YOLOv5改进 | 卷积篇 | 手把手教你添加动态蛇形卷积(管道结构检测适用于分割Seg)
YOLOv5改进 | 卷积篇 | 手把手教你添加动态蛇形卷积(管道结构检测适用于分割Seg)
203 0
|
3月前
|
机器学习/深度学习 编解码 监控
YOLOv8改进 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)
YOLOv8改进 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)
287 0
|
机器学习/深度学习 算法
什么是卷积?(含如何实现卷积源码)
什么是卷积?(卷积简单实现源码)
103 0
什么是卷积?(含如何实现卷积源码)
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】什么时候使用数组形式创建多个卷积层
【PyTorch】什么时候使用数组形式创建多个卷积层
87 0
|
机器学习/深度学习 存储 编解码
深度学习基础入门篇[9.3]:卷积算子:空洞卷积、分组卷积、可分离卷积、可变性卷积等详细讲解以及应用场景和应用实例剖析
深度学习基础入门篇[9.3]:卷积算子:空洞卷积、分组卷积、可分离卷积、可变性卷积等详细讲解以及应用场景和应用实例剖析
173 0