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

article/2025/10/23 10:35:57

一、卷积核与池化:

1.1 卷积核(Convolutional):

将输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核(滤波器)

一般可以看作对某个局部的加权求和;它的原理是在观察某个物体时我们既不能观察每个像素也不能一次观察整体,而是先从局部开始认识,这就对应了卷积。卷积核的大小一般有1x1,3x3和5x5的尺寸(一般是奇数x奇数)

1.2 池化(Pooling):

卷积特征往往对应某个局部的特征。要得到global的特征需要将全局的特征执行ggregation(聚合)。池化就是这样一个操作,对于每个卷积通道,将更大尺寸(甚至是global)上的卷积特征进行pooling就可以得到更有全局性的特征。这里的pooling当然就对应了cross region

二、卷积层尺寸的计算原理:

2.1 卷积核输入输出层与卷积核的数量关系

        卷积核通道数 = 卷积输入层的通道数

        卷积核的个数 = 卷积输出层通道数(深度)

假设卷积输入层的输入是H x W x C, C是输入的深度(即通道数),那么卷积核的通道数(层数/深度)也为C。

假设卷积核的大小为K x K,一个卷积核就为:K x K x C。

假设有P个K x K x C的卷积核,这样每个卷积核应用于输入都会得到一个通道,所以输出有P个通道。

例如:输入8x8x3(rgb三通道),输出是5位深度,卷积核尺寸为3x3。那么我们需要5个3x3x3的卷积核。每个卷积核共3层,每一层都是3x3。我们将一个卷积核的每一层(3x3)与原图的每一层(8x8)卷积,然后将得到三张新图叠加(算数求和),变成一张新的feature map。每个卷积核都这样操作,就可以得到5张新的feature map。具体运算过程可参照下图.

结论:不管输入图像的深度为多少,经过一个卷积核,最后都变成一个深度为1的特征图。不同的卷积核可以卷积得到不同的feature map。 

上图中6x6的结果是通过图2中所展示的运算公式得到的:

 

2.2 填充(padding):

在输入特征图的每一边添加一定数目的行列,使得输出的特征图的长、宽 = 输入的特征图的长、宽

(1)填充的意义:

前面可以发现,输入图像与卷积核进行卷积后的结果中损失了部分值,输入图像的边缘被“修剪”掉了(边缘处只检测了部分像素点,丢失了图片边界处的众多信息)。这是因为边缘上的像素永远不会位于卷积核中心,而卷积核也没法扩展到边缘区域以外。

这个结果我们是不能接受的,有时我们还希望输入和输出的大小应该保持一致。为解决这个问题,可以在进行卷积操作前,对原矩阵进行边界填充(Padding),也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常都用“0”来进行填充的。通过填充的方法,当卷积核扫描输入数据时,它能延伸到边缘以外的伪像素,从而使输出和输入size相同。一般而言,用 0 进行填充。

(2)常用的两种填充:

  • valid padding:不进行任何处理,只使用原始图像,不允许卷积核超出原始图像边界

  • same padding:进行填充,允许卷积核超出原始图像边界,并使得卷积后结果的大小与原来的一致

2.3 步长(stride):

滑动卷积核时,我们会先从输入的左上角开始,每次往左滑动一列或者往下滑动一行逐一计算输出,我们将每次滑动的行数和列数称为Stride,在之前的图片中,Stride=1;在下图中,Stride=2。

事实上,stride就是卷积核经过输入特征图的采样间隔。卷积过程中,有时需要通过padding来避免信息损失,有时也要在卷积时通过设置的步长(Stride)来压缩一部分信息,或者使输出的尺寸小于输入的尺寸。

Stride的作用:是成倍缩小尺寸,而这个参数的值就是缩小的具体倍数,比如步幅为2,输出就是输入的1/2;步幅为3,输出就是输入的1/3。

上面的说法(步幅为2,输出就是输入的1/2;步幅为3,输出就是输入的1/3)不是很严谨,这不是定理来的,步幅为2可以理解成对输入的特征图做了2倍下采样,我们希望的是减少输入参数,防止参数太多计算量太大,这是设置步幅为2的目的,并不是严格意义上的输出是输入的1/2、1/3,这里要特别弄清楚。

2.4 feature map的值的计算:

重合部分对应权值相乘相加,参考链接:3232548-ad8c1ead78877d28.gif (526×384) (jianshu.io)

图中,黄色部分的红色字体为卷积核对应权值,黑色字体为输入图像对应部分的值,将所有对应位置的值相乘相加,得到feature map如右图粉红色部分所示。

三、多通道卷积

事实上,在实际应用过程中,大多数输入图像都是 RGB 3通道。

3.1 卷积核与滤波器

卷积核(convolutional kernel)滤波器(filter)

在只有一个通道的情况下,“卷积核”就相当于“filter”,这两个概念是可以互换的。

但在一般情况下(大多数输入图像都是 RGB 3通道),它们是两个完全不同的概念。每个“filter”实际上恰好是“卷积核”的一个集合,具体描述如下:

  • 卷积核就是由长和宽来指定的,是一个二维的概念。

  • 而过滤器是是由长、宽和深度指定的,是一个三维的概念。

  • 过滤器可以看做是卷积核的集合。

  • 过滤器比卷积核高一个维度——深度。

以前面的多通道卷积为例,卷积核的大小为3x3,卷积核的个数为3,此时:卷积核的维度为3x3,filter的维度为3x3x3

事实上,我们仔细分析前面的卷积过程可以发现: 一个过滤器就对应一个特征图

3.2 多通道卷积

详细见2.1中的例子。


http://chatgpt.dhexx.cn/article/2rYQ3vfG.shtml

相关文章

深度学习-图解卷积运算

卷积神经网络(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;然后将这些时间和点保存到一个…

Dotween Path 路径动画使用方法详解

Dotween对于路径动画部分的api我觉得注释的过少了&#xff0c;很多用法没有写清楚&#xff0c;这里我就对Dotween Path做一下详细说明 1、API Dotween对于路径动画就只提供了两个方法&#xff0c;一个是针对于世界坐标的&#xff0c;一个是针对于局部坐标的&#xff0c;本质上…