各种卷积方式的最全讲解

article/2025/10/24 10:13:50

文章目录

  • 一:卷积的定义
  • 二:标准卷积
    • 1.1D卷积
      • Ⅰ:一维Full卷积
      • Ⅱ:一维Same卷积
      • Ⅲ:一维Valid卷积
      • Ⅳ:三种一维卷积的相互关系
    • 2.2D卷积
    • 3.3D卷积
  • 三:转置卷积
  • 四:Separable卷积
  • 五:Depthwise卷积
  • 六:Pointwise卷积
  • 七:扩张/空洞(Dilated/Atrous)卷积

一:卷积的定义

首先,我们首先回顾一下卷积相关的基本概念,定义一个卷积层需要的几个参数。
在这里插入图片描述

  • 卷积核大小(Kernel Size):卷积核大小定义了卷积的视野。2维中的常见选择是3 - 即3x3像素矩阵。

  • 步长(Stride):步长定义遍历图像时卷积核的移动的步长。虽然它的默认值通常为1,但我们可以使用值为2的步长来对类似于MaxPooling的图像进行下采样。

  • 填充(Padding):填充定义如何处理样本的边界。Padding的目的是保持卷积操作的输出尺寸等于输入尺寸,因为如果卷积核大于1,则不加Padding会导致卷积操作的输出尺寸小于输入尺寸。

  • 输入和输出通道(Channels):卷积层通常需要一定数量的输入通道(I),并计算一定数量的输出通道(O)。可以通过I * O * K来计算所需的参数,其中K等于卷积核中参数的数量,即卷积核大小。

二:标准卷积

1.1D卷积

一维卷积通常有三种类型:full卷积、same卷积和valid卷积,下面以一个长度为5的一维张量I和长度为3的一维张量K(卷积核)为例,介绍这三种卷积的计算过程。
在这里插入图片描述

Ⅰ:一维Full卷积

Full卷积的计算过程是:K沿着I顺序移动,每移动到一个固定位置,对应位置的值相乘再求和,计算过程如下:
在这里插入图片描述
在这里插入图片描述

Ⅱ:一维Same卷积

Same卷积核K都有一个锚点,然后将锚点顺序移动到张量I的每一个位置处,对应位置相乘再求和,计算过程如下:
在这里插入图片描述
在这里插入图片描述

Ⅲ:一维Valid卷积

valid卷积只考虑I能完全覆盖K的情况,即K在I的内部移动的情况,计算过程如下:
在这里插入图片描述
在这里插入图片描述

Ⅳ:三种一维卷积的相互关系

在这里插入图片描述

2.2D卷积

2D卷积是最常见的卷积,在计算机视觉中大量使用,在此不再赘述。如下图所示:
在这里插入图片描述

3.3D卷积

在3D卷积中,kernel可以在3个方向上移动,因此获得的输出也是3D。
在这里插入图片描述

三:转置卷积

有些场景下使用deconvolution,这中说法其实不太合适,因为它不是一个deconvolution,真正的deconvolution应该是卷积操作的逆过程。虽然deconvolution确实存在,但它们在深度学习领域并不常见。想象一下,将图像输入到单个卷积层。现在获得输出,把输出扔到一个黑盒子里,再恢复成的原始输入图像。这个黑盒子才叫做deconvolution。Deconvolution是卷积计算过程的逆计算过程。

转置卷积则比较贴切,因为转置会产生相同的空间分辨率。然而,真实执行的数学运算则稍有不同的。转置卷积层一方面会执行常规卷积,同时也会恢复其空间变换。在执行转置卷积上采样的操作时,要注意棋盘效应

有关转置卷积的讲解,可以看这篇文章

四:Separable卷积

其实就是将filter的K×K×Channel中的Channel(等于输入特征图深度)变为了自己随意设定(当然要小于等于Channel)。

五:Depthwise卷积

它的意思就是拓展Separable convolution而来,我们可以让卷积核的channel维度等于1啊,这样就是深度卷积,意为在每一个channel上做卷积。

六:Pointwise卷积

其实就是点积,就是卷积核大小是1*1的,那为啥起名点积呢?就是因为这和向量中的点积运算很类似。

七:扩张/空洞(Dilated/Atrous)卷积

空洞卷积是解决pixel-wise输出模型的一种常用的卷积方式。一种普遍的认识是,pooling下采样操作导致的信息丢失是不可逆的,通常的分类识别模型,只需要预测每一类的概率,所以我们不需要考虑pooling会导致损失图像细节信息的问题,但是做像素级的预测时(譬如语义分割),就要考虑到这个问题了。那么空洞卷积可以用下图来说明:
在这里插入图片描述

(a)图对应3x3的1-dilated convolution,就是典型的卷积(b)图对应3x3的2-dilated convolution,实际的卷积kernel size还是3x3,但是空洞为1,相当于kernel的size为7x7,图中只有红色点的权重不为0,其余都为0,把3*3的感受野增大到了7*7。(c)图是4-dilated convolution,能达到15x15的感受野。

总之,空洞卷积是卷积运算的一种方式,在于增大了感受野却不丢失语义信息


  至此我对深度学习中不同的卷积类型进行了简单讲解,希望对大家有所帮助,有不懂的地方或者建议,欢迎大家在下方留言评论。

我是努力在CV泥潭中摸爬滚打的江南咸鱼,我们一起努力,不留遗憾!


http://chatgpt.dhexx.cn/article/Eajx9t1w.shtml

相关文章

深度学习(一):卷积运算

一、卷积核与池化: 1.1 卷积核(Convolutional): 将输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核(滤波器)。 一般可以看作对某个局部的…

深度学习-图解卷积运算

卷积神经网络(Convolutional Neural Network,CNN)针对全连接网络 的局限做出了修正,加入了卷积层(Convolution层)和池化层(Pooling 知 层)。 CNN被广泛应用于图像识别、语音识别等各…

【svg文字路径动画,让文字沿着路径动起来】

最近项目里面用到了这个文字路径动画,不得不说确实挺好玩的,如果有需要的小伙伴可以参考! 代码片段 由于公司之前项目里也用到过,但是我是第一次写,所以第一时间还是先看看前辈是怎么处理的,借鉴一下长长…

Qml路径动画-PathAnimation

Qml中的PathAnimation可以让目标沿着一个指定路径运行。 PathAnimation的属性 anchorPoint:使用"x,y"来指定运动的锚定点。orientation:指定控制目标对象沿着路径运动的旋转策略。path属性的类型为Path,选择你要构造的路径。 sta…

dotween路径移动_Unity---DOTween插件学习(3)---获取数据、协程、路径动画

[Toc] 本文及系列参考于Andy老师的DOTween系列 欢迎大家关注**Andy老师** 10、获取数据 类方法 返回所有暂停的动画,没有则返回null var list DOTween.PausedTweens(); 返回所有真正播放的动画,没有则返回null var list DOTween.PlayingTweens(); 获取…

houdini:固定朝向的路径动画

涉及节点:follow path 一、模型准备 路径、朝向的物体,以及运动的物体,一共三个 二、follow path 节点 原来xxxx是一个属性,现在好像必须在创建路径动画的时候就选择xxx了 下面请紧跟我的步骤 steep1:点击follow p…

Dotween运动曲线与路径动画

Dotween运动曲线与路径动画 Dotween--运动曲线内置的运动曲线AnimationCurve Dotween--路径动画一:设置一个数组存放位置坐标二:直接写出自己想要到的坐标 Dotween–运动曲线 想要理解Dotwenn的运动曲线,最重要的一步就是要理解坐标的的含义,这里看图讲…

AE路径动画

动画效果预览 一、AI跑道汽车 注:绘制完成后,给需要作动效的部位进行单独新建图层并命名; ctrl c,ctrlf原位粘贴 二、导入AE 具体导入方法请查看此文: AE动画导入/导出_TING糖的博客-CSDN博客AE导入/导出方式http…

Cinemachine教程 | Unity中如何制作路径动画?

摘要:在Unity中制作路径动画是有挺多方式的,基于Cinemachine的Dolly Path是一个简单便捷的方法,咱们来快速的学习一下吧! 洪流学堂,让你快人几步。你好,我是跟着大智(VX: zhz11235)学Unity的萌新&#xff0…

Android实现 曲线路径动画

本文参考 https://www.jianshu.com/p/fea4d1f6512a 概述 近期碰到曲线动画的实现问题,写本文记录下。 动画类似“剑与远征”游戏的金币动画,动画路径如下图: 思路 通过贝塞尔曲线计算出x和y的位置(各个点的位置需要自己微调&am…

WPF实现路径动画

让目标沿着一条给定的路径移动&#xff0c;使用DoubleAnimationUsingPath类实现。实现如下。 点击鼠标移动 实现代码如下&#xff1a;界面XAML <Grid x:Name"LayoutRoot"> <Grid.Resources> <PathGeometry x:Key"movingPath…

Houdini:最小白的路径动画

涉及节点&#xff1a;curve、constraints、follow path 涉及知识&#xff1a;路径动画、约束 提一嘴maya的路径动画&#xff1a;在constrain-->motion paths -->attach motion path中 一、模型准备 一个模型和一个curve曲线&#xff0c;分别在两个geometry里面&#…

UE5蓝图时间轴摄影机路径动画

1. 新建蓝图类Actor 2. 蓝图里添加Spline和Camera组件&#xff0c;另外添加一个Scene场景组件&#xff0c;可以把Camera拖到Scene的子级&#xff0c;这样做可以让Camera在沿着路径运动的时候自由更改旋转方向 3. 打开关卡蓝图&#xff0c;首先按键获取MovingLine的Camera视角&a…

html5 路径运动,探秘神奇的运动路径动画 Motion Path

CSS 中有一个非常有意思的模块 -- CSS Motion Path Module Level 1,翻译过来也就是运动路径。本文将对 motion path 一探究竟,通过本文,你可以了解到:什么是 CSS motion path 使用 CSS motion path 制作简单路径动画 使用 CSS motion path 制作复杂路径动画 什么是 CSS Mot…

canvas绘制折线路径动画

最近有读者加我微信咨询这个问题&#xff1a; 其中的效果是一个折线路径动画效果&#xff0c;如下图所示&#xff1a; 要实现以上路径动画&#xff0c;一般可以使用svg的动画功能。或者使用canvas绘制&#xff0c;结合路径数学计算来实现。 如果用canvas来绘制&#xff0c…

路径动画

工作日记&#xff0c;最近做项目遇到一个有意思的动画效果&#xff0c;路径动画&#xff0c;做一个demo&#xff0c;方便以后查阅&#xff0c;也供初学者借鉴&#xff01; 效果如下图&#xff1a; 效果分两步&#xff1a; 第一步是把书翻开&#xff0c;是一个贞动画&#xf…

openlayers实现路径动画

实现效果如下 主要代码 import {Feature} from ol; import {LineString, Point} from ol/geom; import {Icon, Stroke, Fill, Style} from ol/style; import {getVectorContext} from ol/render;// 路径动画图层 let traceSource new VectorSource({}); let moveLayer new…

咸鱼Maya笔记—路径动画

咸鱼Maya笔记—路径动画 创建路径动画 动画的创建方式有很多种&#xff0c;路径动画是其中的一种&#xff0c;Key关键帧的方式并不适用于所有的情况&#xff0c;有些特定的情况下我们就需要用到路径动画&#xff0c;它的创建方法如下 创建路径动画 &#xff08;如果你的maya菜…

CSS 路径动画

前言 最近看css大佬chokcoco的文章&#xff0c;看到了这篇 探秘神奇的运动路径动画 Motion Path 关于css路径动画的文章。 之前没学过&#xff0c;这里按照大佬的文章进行简单的学习。 Motion Path CSS Motion Path 规范主要包含以下几个属性&#xff1a; offset-path&…

AnimationPath路径动画实现详解

AnimationPath路径动画实现详解&#xff1a; 一、关联类图展示 二、实现详解 首先我们通过调用createAnimationPath方法来创建动画路径&#xff0c;即&#xff1a;通过起点、终点以及之间的时间步长来进行插值来保证动画的一个流畅度&#xff0c;然后将这些时间和点保存到一个…