卷积过程详细讲解

news2024/9/26 1:24:07

1:单通道卷积

以单通道卷积为例,输入为(1,5,5),分别表示1个通道,宽为5,高为5。假设卷积核大小为3x3,padding=0,stride=1。

卷积过程如下:
加粗样式

相应的卷积核不断的在图像上进行遍历,最后得到3x3的卷积结果,结果如下:

在这里插入图片描述

2:多通道卷积1

以彩色图像为例,包含三个通道,分别表示RGB三原色的像素值,输入为(3,5,5),分别表示3个通道,每个通道的宽为5,高为5。假设卷积核只有1个,卷积核通道为3,每个通道的卷积核大小仍为3x3,padding=0,stride=1。

卷积过程如下,每一个通道的像素值与对应的卷积核通道的数值进行卷积,因此每一个通道会对应一个输出卷积结果,三个卷积结果对应位置累加求和,得到最终的卷积结果**(这里卷积输出结果通道只有1个,因为卷积核只有1个。卷积多输出通道下面会继续讲到)**。

可以这么理解:最终得到的卷积结果是原始图像各个通道上的综合信息结果。

在这里插入图片描述

上述过程中,每一个卷积核的通道数量,必须要求与输入通道数量一致,因为要对每一个通道的像素值要进行卷积运算,所以每一个卷积核的通道数量必须要与输入通道数量保持一致。

我们把上述图像通道如果放在一块,计算原理过程还是与上面一样,堆叠后的表示如下:在这里插入图片描述

3:多通道卷积2

在上面的多通道卷积1中,输出的卷积结果只有1个通道,把整个卷积的整个过程抽象表示,过程如下:
在这里插入图片描述
即:由于只有一个卷积核,因此卷积后只输出单通道的卷积结果(黄色的块状部分表示一个卷积核,黄色块状是由三个通道堆叠在一起表示的,每一个黄色通道与输入卷积通道分别进行卷积,也就是channel数量要保持一致,图片组这里只是堆叠放在一起表示而已)。

那么,如果要卷积后也输出多通道,增加卷积核(filers)的数量即可,示意图如下:
在这里插入图片描述
备注:上面的feature map的颜色,只是为了表示不同的卷积核对应的输出通道结果,不是表示对应的输出颜色。

然后将每个卷积核对应的输出通道结果(feature map)进行拼接,图中共有m个卷积核,则输出大小变为(mw’h’),其中w’、h’表示卷积后的通道尺寸,原始输入大小为(nwh)。

因此整个卷积层的尺寸为(mnk1*k2)是一个4维张量,其中m表示卷积核的数量,n表示通道数量,k1表示每一个卷积核通道的宽,k2表示每一个卷积核通道的高。

4:代码输出

以torch为例,nn.Conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True)

参数解释如下:

in_channels:输入维度

out_channels:输出维度

kernel_size:卷积核大小,可以理解为对每个通道上的卷积的尺寸大小

stride:步长大小

padding:补0

dilation:kernel间距

import torch
 
in_channels = 5  #输入通道数量
out_channels =10 #输出通道数量
width = 100      #每个输入通道上的卷积尺寸的宽
heigth = 100     #每个输入通道上的卷积尺寸的高
kernel_size = 3  #每个输入通道上的卷积尺寸
batch_size = 1   #批数量
 
input = torch.randn(batch_size,in_channels,width,heigth)
conv_layer = torch.nn.Conv2d(in_channels,out_channels,kernel_size=kernel_size)
 
out_put = conv_layer(input)

# 输出结果: torch.Size([1, 5, 100, 100])
print(input.shape)
# 输出结果: torch.Size([1, 10, 98, 98])
print(out_put.shape)
# 输出结果: torch.Size([10, 5, 3, 3])
print(conv_layer.weight.shape)

结果说明:

(1)输入的张量信息为[1,5,100,100]分别表示batch_size,in_channels,width,height

(2)输出的张量信息为[1,10,98,98]分别表示batch_size,out_channels,width’,height’,其中width’,height’表示卷积后的每个通道的新尺寸大小

(3)conv_layer.weight.shape的输出结果为[10, 5, 3, 3],分表表示out_channels,in_channels,kernel_size ,kernel_size ,可以看到与上面的公式m * n * k1 * k2一致。

总结:

1:输入通道个数 等于 卷积核通道个数

2:卷积核个数 等于 输出通道个数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/921646.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保姆级教程之VMD-SABO-KELM优化核极限学习机的西储大学轴承诊断

从数据处理,优化VMD特征提取,再到SABO(减法平均优化器)优化核极限学习机的故障诊断,实现故障诊断的全流程,其他类型的故障诊断均可参考此流程。 友情提示:对于刚接触故障诊断的新手来说&#xf…

安装Node(脚手架)

目录 一,安装node(脚手架)1.1, 配置vue.config.js1.2, vue-cli3x的目录介绍1.3, package.json 最后 一,安装node(脚手架) 从官网直接下载安装即可,自带npm包管…

spring依赖注入详解(下)

Autowired注解依赖注入过程 一、findAutowireCandidates()实现 找出BeanFactory中类型为type的所有的Bean的名字,注意是名字,而不是Bean对象,因为我们可以根据BeanDefinition就能判断和当前type是不是匹配,不用生成Bean对象把re…

【多天线传输技术】BPSK调制信号在复高斯瑞利信道下Alamouti的误码率分析

%% [预处理] clc; clear; close all;%% [配置参数] N3000000; %数据点数(个) SNR_dB0:1:45; %信噪比(dB形式) SNR10.^(SNR_dB/10); %信噪比(一般形式,Eb/N0) Ps1; …

Linux Day10 ---Mybash

目录 一、Mybash介绍 1.1.mybash.c 打印函数 分割函数 命令函数 二、Mybash实现 2.1.打印函数 2.1.1需要使用到的功能函数 1.获取与当前用户关联的UID 2.获取与当前用户的相关信息---一个结构体(passwd) 3.获取主机信息 4.获取当前所处位置 5.给…

论文阅读 FOCUS-AND-DETECT: A SMALL OBJECT DETECTION FRAMEWORK FOR AERIAL IMAGES

文章目录 FOCUS-AND-DETECT: A SMALL OBJECT DETECTION FRAMEWORK FOR AERIAL IMAGESABSTRACT1 Introduction2 Related Work3 Focus-and-Detect3.1 Overview3.2 Focus Stage3.2.1 Generating Ground-Truth Boxes of Focal Regions Using Gaussian Mixture Model 3.3 Detection …

物种气候生态位动态量化与分布特征模拟

在全球气候快速变化的背景下,理解并预测生物种群如何应对气候变化,特别是它们的地理分布如何变化,已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟,不仅可以量化描述物种对环境的需求和适应性,预…

StableVideo:使用Stable Diffusion生成连续无闪烁的视频

使用Stable Diffusion生成视频一直是人们的研究目标,但是我们遇到的最大问题是视频帧和帧之间的闪烁,但是最新的论文则着力解决这个问题。 本文总结了Chai等人的论文《StableVideo: Text-driven consistency -aware Diffusion Video Editing》&#xff…

高性能网络模式-Reactor

事实上,Reactor 模式也叫Dispatcher模式,即I/O 多路复⽤监听事件,收到事件后,根据事件类型分配(Dispatch)给某个进程/线程。Reactor 模式也是一种非阻塞同步网络模式。 Reactor 模式主要由 Reactor部分和处…

Django基础3——视图函数

文章目录 一、基本了解1.1 Django内置函数1.2 http请求流程 二、HttpRequest对象(接受客户端请求)2.1 常用属性2.2 常用方法2.3 服务端接收URL参数2.4 QueryDict对象2.5 案例2.5.1 表单GET提交2.5.2 表单POST提交2.5.3 上传文件 三、HttpResponse对象&am…

NV PTX ISA 文档的增量说明

无它,维截图尔,汇总一下,找找规律; cuda 12.0 PTX 8.0 关键字: 从cuda 8.0开始: 显然,每次增量的主要因素是对应着对新的硬件功能的提炼;

构建 NodeJS cinema API 网关并部署到 Docker(04/4)

一、说明 构建一个微服务的电影网站,需要Docker、NodeJS、MongoDB,这样的案例您见过吗?如果对此有兴趣,您就继续往下看吧。 我们前几章的快速回顾 第一篇文章介绍了微服务架构模式,并讨论了使用微服务的优缺点。第二篇…

Unity报错DllNotFoundException:sqlite3

Unity项目中要使用轻型数据库sqlite,除了导入sqlite3.dll外,还需要导入Mono.Data.Sqlite.dll和System.Data.dll(工程里或者编辑器里面有System.Data.dll时就不需要)两个文件。 如果在编辑器中运行出现 “DllNotFoundException:sql…

pyside6最小化的核心调用代码

pyside6最小化的核心调用代码: 一、格式代码 你认为是 制式代码,下面图中的就是核心代码,以后就是这样记住以及使用即可 二、图形代码【生成代码】 2.1designer设计界面 2.2设计的界面转换为代码 注意图纸划线的地方,后续导入…

卓码软件测评简析:软件压力测试工具和流程有哪些?

在软件开发过程中,压力测试是非常重要的一项工作,它可以帮助客户评估软件系统在正常或异常负载下的性能表现。在这个领域,有很多不同的工具可供选择,每个工具具有其独特的特点和优势。那么常见的压力测试工具有哪些以及进行压力测…

外网访问家里虚拟机的两种方法

从外网访问家里虚拟机的两种方法 起因 在公司,当我不想干的时候就想着跑路,但是自己又太菜了(饭碗要紧),所以想通过ssh登录到自己的家里一台linux上,去敲一敲 linux命令,sql命令,do…

Mobx在非react组件中修改数据,在ts/js中修改数据实现响应式更新

我们都之前在封装mobx作为数据存储的时候,使用到了useContext作为包裹,将store变成了一个hooks使用,封装代码: import React from react import UserInfo from ./user import Setting from ./seting import NoteStore from ./noteclass Stor…

WSL(centos7.0.1907.3)安装lxc

安装 1.centos的epel源提供了lxc的安装包,在使用epel源时首先安装epel-release包: yum -y install epel-release2.安装lxc软件包和依赖包 yum -y install lxc lxc-templates bridge-utils lxc-libs libcgroup libvirt 安装完成后,通过 lx…

centos安装redis教程

1.下载安装包 redis官网 下载最新版本redis安装包 2.上传到服务器 然后解压 解压命令 tar xzvf redis-7.2.0.tar.gz 进入文件夹 cd redis-7.2.0 执行安装编译命令 make 如果要安装到别的目录则执行 make install PREFIX/目录地址 看到如下内容则说明安装成功 如有遇到报错…

骨传导蓝牙耳机能打电话吗,骨传导蓝牙耳机别人听得到吗

时光荏苒,社会不断发展,年轻人的生活离不开一样必备神器——耳机。而在众多耳机中,骨传导耳机备受青睐。这种耳机的佩戴方式不仅方便,还更安全,能有效降低中耳炎的风险。此外,经过精心设计的耳机还能有效减…