可变卷积原理总结

简介: 可变卷积原理总结

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


相关文章
|
算法 测试技术 C++
C++算法:戳印序列原理及实现方法一
C++算法:戳印序列原理及实现方法一
|
机器学习/深度学习
普通卷积、分组卷积和深度分离卷积概念以及参数量计算
普通卷积、分组卷积和深度分离卷积概念以及参数量计算
1230 0
普通卷积、分组卷积和深度分离卷积概念以及参数量计算
|
7月前
|
机器学习/深度学习 算法 计算机视觉
YOLOv8改进-论文笔记】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
4月前
|
机器学习/深度学习 Shell 计算机视觉
一文搞懂 卷积神经网络 卷积算子应用举例 池化 激活函数
这篇文章通过案例详细解释了卷积神经网络中的卷积算子应用、池化操作和激活函数,包括如何使用卷积算子进行边缘检测和图像模糊,以及ReLU激活函数如何解决梯度消失问题。
|
5月前
|
机器学习/深度学习 算法 计算机视觉
【YOLOv10改进 -卷积Conv】 AKConv(可改变核卷积):任意数量的参数和任意采样形状的即插即用的卷积
AKConv是一种可改变核卷积,旨在解决传统卷积的局限,包括固定大小的卷积窗口和卷积核尺寸。AKConv提供灵活的卷积核参数和采样形状,适应不同尺度特征。其创新点包括:1)支持任意大小和形状的卷积核;2)使用新算法确定初始采样位置;3)应用动态偏移调整采样位置;4)优化模型参数和计算效率。AKConv已应用于YOLOv8,提高网络性能。相关代码可在<https://github.com/CV-ZhangXin/AKConv>找到。
|
6月前
|
机器学习/深度学习 计算机视觉
YOLOv8改进 | 注意力机制 | 添加混合局部通道注意力——MLCA【原理讲解】
YOLOv8专栏介绍了混合局部通道注意力(MLCA)模块,它结合通道、空间和局部信息,提升目标检测性能,同时保持低复杂度。文章提供MLCA原理、代码实现及如何将其集成到YOLOv8中,助力读者实战深度学习目标检测。[YOLOv8改进——更新各种有效涨点方法](https://blog.csdn.net/m0_67647321/category_12548649.html)
|
7月前
|
机器学习/深度学习 存储 算法
注意力机制(一)(基本思想)
在注意力机制论文 Attention Is All You Need 中最苦恼大家的肯定是K、Q、V三个变量的含义 翻阅了CSDN、知乎大量文章后,我发现没有文章能够带大家对注意力机制建立直观的认识 大部分文章要么没有从初学者的角度出发介绍的是注意力机制上层应用,要么其作者自己也并没有真正理解注意力机制所以讲的不清不楚 所以在看完《动手学深度学习(pytorch版)》、Attention Is All You Need 论文、以及大量文章后,我开始动手写这篇专门为初学者的介绍注意力机制的文章 权
|
7月前
|
机器学习/深度学习 存储 计算机视觉
YOLOv8改进 | 2023 | RCS-OSA替换C2f实现暴力涨点(减少通道的空间对象注意力机制)
YOLOv8改进 | 2023 | RCS-OSA替换C2f实现暴力涨点(减少通道的空间对象注意力机制)
205 0
|
7月前
|
机器学习/深度学习 编解码 监控
YOLOv5改进 | 卷积篇 | SPD-Conv空间深度转换卷积(高效空间编码技术)
YOLOv5改进 | 卷积篇 | SPD-Conv空间深度转换卷积(高效空间编码技术)
945 0
|
算法 测试技术 C++
C++算法:戳印序列原理及实现二
C++算法:戳印序列原理及实现二