卷积神经网络算法原理(卷积层,卷积运算,填充,步幅,经过卷积运算后的特征图大小,池化层,最大池化,平均池化,经过池化层运算后的特征图大小)

文章目录

        • 卷积神经网络算法原理(卷积层,卷积运算,填充,步幅,经过卷积运算后的特征图大小,池化层,最大池化,平均池化,经过池化层运算后的特征图大小)
        • 前言
        • 1、图像的本质
          • 1.1、灰度图
          • 1.2、彩色图
        • 2、卷积神经网络的整体结构
        • 3、卷积层
          • 3.1、全连接神经网络存在的问题
          • 3.2、卷积层-卷积运算
            • 卷积运算的过程:
            • 加入偏置的卷积运算:
          • 3.3、卷积层-填充
          • 3.4、卷积层-步幅
          • 3.5、卷积层-经过卷积运算后的特征图大小
          • 3.6、卷积层-多通道特征图的卷积运算
        • 4、池化层
          • 4.1、池化层-最大池化:目标区域内取最大值
          • 4.2、池化层-平均池化:将目标区域中的值进行平均求和
          • 4.2、池化层-经过池化层运算后的特征图大小
        • 总结

卷积神经网络算法原理(卷积层,卷积运算,填充,步幅,经过卷积运算后的特征图大小,池化层,最大池化,平均池化,经过池化层运算后的特征图大小)
前言

深度学习三大领域:大数据与数据挖掘、计算机视觉、自然语言处理;

在计算机视觉中,卷积神经网络(CNN)扮演着重要角色,用来提取图像的特征

1、图像的本质

灰度图在计算机中保存为1个数字矩阵;

彩色图在计算机中保存为3个数字矩阵;

1.1、灰度图

灰度图就是我们常见的黑白图像,下面图像的高度为24,宽度为16,因此这个图片是由24*16一共384个小方格所组成的;
在这里插入图片描述
从图中可以看到有黑色、白色、灰色,同时灰色的程度还不尽相同。图像中的每一个小块都代表一个像素,每一个小块都有一个像素值,这些像素值表示像素的强度,像素值的大小范围为0到255,其中0为黑色,255为白色,图像越深的地方说明像素值越接近0,图像越浅的地方说明像素值越接近255。因此灰度图在计算机中保存为1个数字矩阵;
在这里插入图片描述

1.2、彩色图

不知道大家在生活中观察到这样的情况,就是有时候不小心把水溅到了手机屏幕或者电视屏幕上,通过水珠可以观察到一个又一个很小的小方格,这些方格有不同的颜色,但是只有红色、绿色和蓝色。初中的时候学习物理的时候知道,这3个颜色称为3原色,可以按不同的比例生成各种颜色。如下图所示:
在这里插入图片描述
计算机表示彩色图的时候是用3个数字矩阵表示的。具体形式如下图所示:
在这里插入图片描述

1个用于显示红色的矩阵,矩阵的中的数值大小范围也是在0到255,当数值越接近0的时候红色的表示就越深,当数值越接近0的时候,红色的表示就越浅;
1个用于显示绿色的矩阵,矩阵的中的数值大小范围也是在0到255,当数值越接近0的时候绿色的表示就越深,当数值越接近0的时候,绿色的表示就越浅;
1个用于显示蓝色的矩阵,矩阵的中的数值大小范围也是在0到255,当数值越接近0的时候蓝色的表示就越深,当数值越接近0的时候,蓝色的表示就越浅;

这些像素数值在0到255之间,其中每个数字代表像素的强度,所有这些通道矩阵叠加在一起就变成了三通道图像,当图像的形状加载到计算机中时,像素矩阵为H×W×3。其中H是整个高度上的像素数量,W是整个宽度上的像素数,3表示通道数。

2、卷积神经网络的整体结构

相对于全连接神经网络,卷积神经网络中出现了卷积层和池化层,输入卷积神经网络中的数据特征图通过卷积运算和池化运算,将其中的有效特征提取出来输入到全连接层,并对数据进行分类或者预测;
在这里插入图片描述

3、卷积层

图片在计算机中就是一个数字矩阵,而卷积神经网络的输入就是这样的一个数字矩阵,输入的数据的格式应该是CHW(C就是数据的通道数,H就是数据矩阵的高,W就是数据矩阵的宽),

3.1、全连接神经网络存在的问题

在全连接神经网络中,相邻的神经元全部连接在一起,因此一个神经网络层呈现长条状,但是输入的数据是图像这样具有3维形状的数据的时候,全连接神经网络的处理是将数据拉平为一维的状态;

像图像这样的3维形状的数据中含有重要的空间信息,比如,空间上相邻的地方像素值应该是相似的值、RGB通道之间分别有着密切的关联性,但是相距比较远的像素之间的关联性比较低,但是全连接层会忽视形状,将全部的信息作为相同的神经元处理,因此无法利用与形状相关的信息;

卷积神经网络中的卷积层可以保持形状不变,当输入的数据是图像的时候,卷积层会以3维的数据形式接受数据,同样以3维的形式输出到下一层,因此相对于全连接神经网络,卷积神经网络可以比较好的理解空间形状的数据;
在这里插入图片描述

3.2、卷积层-卷积运算

卷积神经网络的核心就是存在卷积运算的卷积层,卷积运算相当于图像处理中的滤波运算,因此卷积核又被称之为滤波器;

卷积运算的过程:

对于输入特征图,通过不断滑动卷积核,将卷积核与图像的对应位置相乘并求和,得到卷积运算后的输出特征图;
在这里插入图片描述

加入偏置的卷积运算:

在全连接神经网络中,神经网络有两种参数,一种是权重参数、一种是偏置参数,在卷积神经网络中,卷积核就是卷积神经网络网络的权重参数,当然卷积神经网络中也是存在偏置参数的:
在这里插入图片描述

3.3、卷积层-填充

填充:对输入特征图周围填入固定的数据(通常这个数据为0);
在这里插入图片描述
在一个输入为(3,3)大小的矩阵周围填充一圈0后,这时输入的矩阵大小变为(5,5),填充的幅度为1,填充幅度可以设置为大于等于1的任意整数。然后利用填充好的矩阵与大小为(2,2)卷积核进行卷积运算,得到(4,4)的输出特征图;

注意:使用填充的主要目的是调整输出数据的大小,如果在一个卷积神经网络中有多个卷积层,需要进行多次的卷积运算,如果每次进行卷积运算都会缩小空间,那么在某个时刻可能输出数据的大小为(1,1)这个时候就无法进行下一步卷积运算了。因此为了避免输出数据无法进行卷积运算,可以利用填充操作保持输出数据的空间大小不变或者变大;

3.4、卷积层-步幅

步幅:在卷积运算过程中,卷积核在输入特征图上进行滑动的间隔称为步幅,步幅可以设置为大于等于1的任意整数;

3.5、卷积层-经过卷积运算后的特征图大小

下图输入特征图大小为(4,4)卷积核的大小为(2,2)步幅大小为2,填充P=0,请计算输出特征图的大小;
在这里插入图片描述
注意:步幅和填充是可以自己设定的,但是可能会出现最终的计算结果不是整数的情况,会导致最后的程序的运行出现报错,这样的情况要尽量的避免,当然有的深度学习框架会进行四舍五入,不进行报错进行继续运算;

3.6、卷积层-多通道特征图的卷积运算

图像除了通道数为1的灰度图还有通道数为3的彩色图,同时卷积运算也可以改变输入特征的通道数,使输出变成多通道的特征图;

多通道的数据不仅仅要考虑高和宽,还需要考虑通道数,多通道特征图进行卷积运算时,将不同通道的特征图和对应通道的卷积核进行卷积运算,并将最终的计算结果相加,从而得到输出特征图;

卷积核的通道必须要和输入数据的通道一样,同时每个通道的卷积核的形状大小也必须一样;

多通道特征图经过卷积运算后,输出的特征图的通道数等于卷积核的数量(在卷积神经网络中,每个卷积核都会在输入特征图上进行卷积运算,生成一个输出通道。因此,如果有N个卷积核参与运算,那么输出特征图就会有N个通道);

在这里插入图片描述
如上图所示:

输入特征图的通道数为3,形状大小为(4,4);卷积核的大小为(3,3)通道数为3(上图为,1张输入特征图,1个卷积核);

由于输入特征图的通道为3,卷积核的通道必须要和输入数据的通道一样,同时每个通道的卷积核的形状大小也必须一样,因此这里设置的卷积核的通道数为3,形状大小为(3,3);

将不同通道的特征图和对应通道的卷积核进行卷积运算,并将最终的计算结果相加,因为上图只有1个卷积核,最终的输出的特征图的通道大小为1,形状为(2,2);

利用立体图来表示卷积运算:

当输入的数据大小为(C,H,W)的时候,卷积核一共有FN个且大小为(C,FH,FW)因此输出的特征图的大小为(FN,OH,OW)
在这里插入图片描述
卷积神经网络中不仅仅有权重参数(卷积核),还有偏置参数:
在这里插入图片描述

当输入的数据大小为(C,H,W)的时候,卷积核一共有FN个且大小为(C,FH,FW)经过卷积运算后输出的特征图的大小为(FN,OH,OW)因此偏置的通道数需要和输出特征图的通道数一样,因此偏置的大小为(FN,1,1)将偏置和输出特征图进行像素相加,最后得到的输出特征图的大小为(FN,OH,OW)因此加上偏置是不改变输出特征的形状的,只改变输出特征数值的大小;

4、池化层

池化运算的特点:

在图像识别领域,使用最多的还是最大池化;

输入特征图经过池化运算后,其通道数保持不变,因为池化操作是按通道独立进行的,每个通道内的特征值会分别进行池化计算,而不会影响到其他通道;

池化层对于输入特征图中的微小位置变化具有强大的鲁棒性,这增强了模型的健壮性。即便输入特征数据发生细微的变化,池化层的输出特征图结果仍能保持稳定;

池化层和卷积层的不同:

卷积层的核心操作是特征图与卷积核之间的卷积运算,这一过程中涉及参数的学习。具体来说,卷积层通过前向传播计算误差,随后利用反向传播机制更新参数,以优化模型性能;

池化层则主要执行从目标区域提取最大值或平均值的操作,其主要作用在于缩小特征图的空间,它并不涉及任何参数的学习过程;

4.1、池化层-最大池化:目标区域内取最大值

在这里插入图片描述

4.2、池化层-平均池化:将目标区域中的值进行平均求和

在这里插入图片描述

4.2、池化层-经过池化层运算后的特征图大小

池化层的输入特征图和输出特征图之间的关系,跟卷积层的输入输出计算公式类似,只不过把卷积核的大小变成池化窗口的大小而已

下图输入特征图大小为(4,4)池化窗口的大小为(2,2)步幅大小为2,填充P=0,请计算输出特征图的大小;
在这里插入图片描述

总结

卷积神经网络是深度学习中极其重要的神经网络模型,在此基础上发展成计算机视觉领域,目前计算机神经有图像分类、目标检测、图像分割等分支,其落地项目也很多。其中大部分算法都是在卷积神经网络的基础上进行改进而成,想学习好卷积神经网络需要配合各种网络模型图去理解。

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

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

相关文章

Java学习笔记(16)

常见算法 查找算法 查询某个元素是否存在 二分查找(数组元素必须是有序的) package exercise;public class exercise1 {public static void main(String[] args) {int[] arr {7, 23, 797, 23, 79, 81, 103, 127, 131, 147};System.out.println(binar…

实战Python Socket编程:开发多用户聊天应用

实战Python Socket编程:开发多用户聊天应用 Python Socket 编程概述什么是Socket编程?Socket编程的应用场景Socket编程的重要性基本概念 环境准备Python版本必要的库开发环境配置调试工具 基本Socket编程创建Socket绑定Socket到端口监听连接接受连接发送…

24.第12届蓝桥杯省赛真题题解

A.空间&#xff08;100%&#xff09; 计算机存储单位计算 1TB2^10 GB 1GB2^10 MB 1MB2^10 KB 1KB2&10 B 1B8 bit(bit位二进制的最小的存储单位) #include <iostream> #include <cmath>using namespace std; //2^28B 2^2int main(){std::ios::sync_with_stdio…

【C语言入门】浮点型数据在内存中的存储

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;C语言 个人主页&#xff1a;Celias blog~ 目录 ​编辑 引言 引例 一、浮点型在内存中的存储方式 1.1 …

在idea中配置tomcat服务器,然后部署一个项日

1.下载tomcat Tomcat下载 点击右边的tomcat8 找到zip点击下载 下载完&#xff0c;解压到你想放置的路径下 2.配置环境变量 打开设置找到高级系统设置点击环境变量 点击新建&#xff0c;变量名输入&#xff1a;CATALINA_HOME&#xff0c;变量值就是Tomcat的安装路径&#x…

【QT+QGIS跨平台编译】之七十七:【QGIS_Gui跨平台编译】—【错误处理:字符串错误】

文章目录 一、字符串错误二、处理方法三、涉及到的文件一、字符串错误 常量中有换行符错误:(也有const char * 到 LPCWSTR 转换的错误) 二、处理方法 需要把对应的文档用记事本打开,另存为 “带有BOM的UTF-8” 三、涉及到的文件 src\gui\qgsadvanceddigitizingdockwidge…

智慧礼金:电子礼金薄,让礼薄更添智能,你确定不进来看看?

智慧礼金&#xff1a;电子礼金薄&#xff0c;让礼薄更添智能&#xff0c;你确定不进来看看&#xff1f; 一、重要声明二、相关介绍三、使用好处四、如何找到该小程序 随着科技的不断进步&#xff0c;传统的纸质礼金簿已经逐渐被电子化管理所取代。今天&#xff0c;我们要向大家…

Java解决完全二叉树的节点个数

Java解决完全二叉树的节点个数 01 题目 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的…

1990-2022年各省全要素生产率数据(仅结果)

1990-2022年各省全要素生产率数据&#xff08;仅结果&#xff09; 1、时间&#xff1a;1990-2022年 2、指标&#xff1a;地区、年份、OLS、FE、RE、DGMM、SGMM、SFA1、SFA2、SFA3、SFA3D、TFE、非参数法 3、范围&#xff1a;31省 4、计算说明&#xff1a; 产出指标&#x…

【自动化测试】如何在jenkins中搭建allure

相信大家在做自动化测试过程中&#xff0c;都会用到自动化测试环境&#xff0c;目前最常见的就是通过容器化方式部署自动化测试环境&#xff0c;但对于一些测试小白&#xff0c;不是很会搭建持续集成环境&#xff0c;特别是从0-1的过程&#xff0c;需要自行搭建很多依赖环境&am…

奇数乘积(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 1;int j 3;//循环运算&#xff1b;while (j < 12){//运算&#xff1b;i i * j;//改变数值&#xff1b;j 2…

rt-thread之通讯协议modbus软件包的使用记录(lwip+modbus组合)

前言 使用freemodbus软件包使用网口通讯(sallwip)ip地址使用dhcp动态获取 软件包 相关宏定义 /*-----------------------------------------NET 宏定义-------------------------------------------*/#define RT_USING_SAL #define SAL_INTERNET_CHECK /* Docking with prot…

前端框架vue的样式操作,以及vue提供的属性功能应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【Linux】环境基础开发工具使用

目录 Linux软件管理器 yum 1.什么是软件包 2.查看软件包 3安装与卸载 vim-Linux编辑器 1.vim基础概念 2.vim的基础操作 命令模式基本操作 底层模式基本操作 3、其它模式 Linux编译器 gcc/g 1.如何进行编译 2.编译的四个过程 预处理(-E) 编译(-S) 汇编(-c) 链接…

python二级备考(2)-简单应用题

第1套 使用turtle库的turtle. right()函数和turtle.fd()函数绘制一个菱形&#xff0c;边长为200像素&#xff0c;4个内角度数为2个60度和2个120度 键盘输入一组人员的姓名、性别、年龄等信息&#xff0c;信息间采用空格分隔&#xff0c;每人一行&#xff0c;空行回车结束录入&a…

EMQX 实践

MQTT 核心概念 发布订阅 MQTT 基于发布订阅模式&#xff0c;它解耦了消息的发送方&#xff08;发布者&#xff09;和接收方&#xff08;订阅者&#xff09;&#xff0c;引入了一个中间代理的角色来完成消息的路由和分发。发布者和订阅者不需要知道彼此的存在&#xff0c;他们…

mybatis实践篇(一)

日志&#xff08;logImpl&#xff09; StdOutImpl <setting name"logImpl" value"org.apache.ibatis.logging.stdout.StdOutImpl"/>Slf4jImpl <setting name"logImpl" value"org.apache.ibatis.logging.slf4j.Slf4jImpl"/&…

cannot find -xml2: No such file or directory的解决方法

一&#xff0c;问题现象 在编译库的时候出现如下图所示的报错&#xff1a;C:/msys64/mingw32/bin/…/lib/gcc/i686-w64-mingw32/13.2.0/…/…/…/…/i686-w64-mingw32/bin/ld.exe: ca nnot find -lxml2: No such file or directory collect2.exe: error: ld returned 1 exit s…

146 Linux 网络编程2 ,Socket编程,如何创建Linux 服务器 和linux 客户端

IPport 就是一个程序在网络上的身份证号码。 这意味着我们需要如果写一个服务器&#xff0c;至少需要将这台服务器的ip 和 端口号写到程序里面。 实际上更细化的说&#xff1a;应该是将这三都写进程序里面 &#xff1a; IP类型&#xff08;IPV4或者IPV6&#xff09;&#xff…