【CNN】卷积神经网络的相关介绍及计算

news2024/9/24 5:29:32

文章目录

    • 传统神经网络结构
    • 卷积神经网络结构
    • 输入的区域大小
    • 计算特征值
    • 卷积结果计算公式
    • 卷积参数共享
    • 池化层
    • 最大池化
    • 特征图变化
    • 经典网络

传统神经网络结构

传统神经网络(左边的图2D的)可以叫wx+b全连接层FCMLP多层感知机多个线性层堆在一起,这些别称都指的是传统神经网络
传统神经网络输入数据是结构化的,就是一个数据几个特征,再来一个样本几个特征,一个人有身高体重,第二个人有身高体重等这些例子,都适合传统神经网络去做

下图介绍:
左图是2D的,传统神经网络,圆圈代表神经元,线段加箭头代表权重
第一层是输入层(红色),中间层是隐藏层(蓝色),右边一层是输出层(绿色);
右图是3D的,卷积神经网络
在这里插入图片描述

那么问题来了,传统神经网络适不适合做图像数据呢?
假设中间隐藏层像上面的左图一样,第一个隐藏层神经元数量假设有128个,第二个隐藏层神经元数量假设有256个,那么输入的图像数据假设是长300,宽300,每个点有rgb3种像素值,总共图像数据输入像素值有300x300x3为27万个像素点,那构建第一个权重矩阵(就是输入层和第一个隐藏层之间连线的权重)的w1=[27w x 128]的一个矩阵,如果我们用全连接去做,会导致输入参数太多,所以传统神经网络是有一个缺陷:不能很好地去处理我们的图像数据

那为什么卷积能做图像数据呢?
利用一种新型方式让参数量尽可能的变小

卷积神经网络结构

跟之前传统神经网络不一样,它是3D的,第一层输入的是图像数据或者说是视频数据
在这里插入图片描述
卷积神经网路,那么卷积做了一件什么事?
图像数据像素数据太大了,我们不要一个个的去计算,我们将输入的图像数据切分成多个区域(就好比如说问全校学生校长这个人人品怎么样,全校学生人数太多,我们分组将每个班级派一名代表来进行询问)比如说假设原始图像是一个16x16的,那么每一块给它切分成4x4,这样切成16块,计算出这16块区域的特征值就行了,不需要再去计算原来16x16那么大的数据量了。那么我们要做一件事,就是要知道每一块区域的特征是什么,计算出这一块区域的特征得到一个值就是特征值,计算出这16块区域的特征值就行了
在这里插入图片描述

输入的区域大小

filter叫做滤波器,去看每一块区域具有什么样的特征,它前面的5x5x3代表一个5x5(分别是H和W)的一个区域(问25个人的意见得出1条总意见),3代表RGB(也可以叫做channel),所以5x5x3代表一块5x5区域的像素值
那么5x5可以换成3x3吗,答案是可以的,3x3是最常见的一件事,那为什么我们这么喜欢3x3呢?因为我们要将每一个区域都算一下特征,区域越多,特征越多;区域越少,特征越少,这是第一点,希望区域稍微多一点,所以用较小的卷积核去做,这样可以做的比较细致。还有一个原因,大家都采用显卡去跑模型,显卡叫做n卡或英伟达显卡,当我们用英伟达显卡的时候,我们要看看人家硬件上对什么支持性最好,速度最快,就是这种3x3的所以后续我们的卷积即使是1x1的也要给它变成3x3的,因为这样它的速度比较快
在这里插入图片描述
每个区域得到一个特征点,每个特征点组合在一起得到一张特征图
为什么右边会有两个板子(两个特征图)呢?
同样的位置,我用相同的方式还是用5x5x3的一个卷积核去计算,能算出来另外一个特征值,但是针对输入的这一块的x是不变的w是权重值,蓝色有一组权重值,绿色有一组权重值,这两种权重值是不一样的
相同的输入在两组不同的权重值上得到两种不同的特征值,所以说右边有两个板子,是因为最同一种区域提取得到了两种不同的特征
在这里插入图片描述

计算特征值

卷积层涉及的参数:
在这里插入图片描述

这里假设每个区域取两种卷积核
卷积核尺寸:下图是3x3的卷积核大小
padding边缘填充:由于卷积计算和分区域,而导致边界区域没有计算到,进行边界填充0值,这样原来的边界就变成中间了,参与运算就多了,加一圈(为什么填充0,因为0乘任何数都得0,只做占位不影响结果)
卷积核个数:卷积核个数是越多越好还是越少越好,相对来说理论上是希望越多越好,一般来说256个,512个,1024个(例如下图的W0是第一个卷积核,W1是第二个卷积核),但是同一层当中,大小规格要一样(不能W0是3x3而W1是5x5的,不能这样
在这里插入图片描述

内积(每个颜色通道计算出来的卷积值)+偏置=算出特征值Output Volume
偏置b0,b1是随机数
内积:每个颜色的通道值(左边蓝色方框圈起来的九个)乘以对应的卷积核的值(右边红色方框圈起来的九个)然后再相加(例如第一个R通道的第一个方框计算:0x1+0x1+0x1+0x(-1)+1x(-1)+1x0+0x(-1)+1x1+1x0=0)3个颜色通道的内积和+偏置b0=算出的特征值(例如第一块区域的第一种卷积W0计算出来的:0+2+0+1=3)
在这里插入图片描述
滑动窗口步长:例如下图的每计算完一块特征区域,就向右移动2个单元格,但是这只是在这个例子中,不一定所有的都是移动2个单元格,但是单元格移动是越小越好,越小的话特征值是越丰富的,步长stride=1,尽量等于1,最小为1
在这里插入图片描述
假设我知道某个区域很重要,能让卷积卷多次吗?–>不能,人为不能让同块区域卷积卷多次

只做一次卷积就可以了吗?如何让卷积做的个数多一些,能让特征更丰富,特征提取的更多一些?------>做多次(多层)卷积
第一次卷积–>第二次卷积–>第三次卷积,也就是说卷积是分层的做的
在这里插入图片描述
就好比如我是浅层,只需要考虑我自己,镇长是中层,需要考虑整个镇上的人,市长是深层,需要考虑所有镇市的人,所以说越深层考虑的东西越多越全局(理论上),这也就是我们为什么叫做深度学习
卷积当中一定是越深层的网络越好吗?不一定,越深层的网络,比如说物体检测,就适合大模型的,可能检测不到小目标(比如市长考虑不到我晚上吃什么吃的开不开心,就不会考虑小目标的这些东西)所以不同网络结构不同设计要选合适的就行

卷积结果计算公式

在这里插入图片描述
H1:输入的特征图大小
H2:输出的特征图大小
FH:卷积核大小
2P:2倍的padding边界填充
为什么要加上2倍的padding呢?上下左右长宽各2倍
S:stride步长,步长(向右滑动的距离)越大特征越小,步长越小特征越多
例如:(32-5+2x1)/1+1=32
卷积完之后长宽可以不变(大部分当中是这样的)
为什么要乘以10?因为有10个特征图(10个filter)
为什么要加1?因为有两块板子(两种特征值)

卷积参数共享

在这里插入图片描述
权重参数共享
为什么传统的神经网络做的不好?因为传统的神经网络结构当中参数太多,训练也难,计算也慢,也没法实时,而在卷积网络结构当中,各个位置上的权重都是相同的,所以我们叫做权重参数共享
10个卷积核得到10个特征图,10个特征图每个进行微调,需要10个偏置(偏置就是对特征图做微调的
上面是32x32x3的输入图像,那换成256x256x3的输入图像还是用上面的10个5x5x3的filter来进行卷积,此时参数会不会变多呢?不会,权重参数和你的输入图像大小没有关系,只要卷积核不变权重参数就是不变的共享的

池化层

什么叫做池化?池化过程是将输入图像平均划分成若干个矩形区域,用来做筛选的(一群人中将好人筛选出来),筛选最好的特征,不好的特征给它不要,自己定池化的大小,4个里面选最好的还是8个里面选最好的,这种自己去定,反正池化的目标就是,把好的留下来,不好的给它扔出去,对卷积神经网络进行池化处理可以降低卷积操作输出特征图的大小。池化层缩小了卷积神经网络的规模,能够使卷积神经网络训练的权重数量得到明显下降。
卷积完得出特征值最大的
64怎么来的?有64种特征(假设一个人有身高体重年龄学历等等有64种特征全取)
H变成原来的一半,224变成112;W变成原来的一半,224变成112,特征的位置变少了,速度就会变快,做了一个浓缩,下一层卷积的参数量变少了,模型训练起来相对容易一些,所以池化这个东西还是要去用的
池化我们经常也会叫它下采样,什么叫做下采样呢?输入的H和W变成了原来的二分之一,就叫做下采样
那能不能H和W都变成原来的四分之一呢,是可以的,但是这样做是不好的,因为一次筛选的太多了,会少掉很多信息(就好比如说我们竞赛,是32强决胜出16强再决胜出8强再4强…,如果一下子从32强决胜出4强就会很不好了)要一步步去做,一次就各减少二分之一
在这里插入图片描述

最大池化

最大池化是将池化区域的像素点取最大值(像第一块红色区域的最大池化就是6),这种方式得到的特征图对纹理特征信息更加敏感;
平均池化则是对池化区域内的图像取平均值(比如下面第一块区域取平均值就是(1+1+5+6)/4 ),这种方式得到的特征信息对背景信息更加敏感,但是我们一般不用平均池化,而用最大池化
平均池化一般用在:要获得一个全局向量;要在输出层之前;想要用向量去算其他什么东西;要整合向量;要做分类
在这里插入图片描述
全连接层是帮我们做结果的一个输出的,预测值的,但是不太适合提特征
卷积神经网络有七层网络,带权重参数都算一层,不用管为什么,大家公认的
在这里插入图片描述
池化当中没有权重参数,只是筛选需要的数值
输入数据要做一个标准化操作,让其均衡化一些,数据要符合一些规律和分布,然后让模型去学这个分布这个规律,那卷积层会不会把这些规律这些分布给破坏掉呢?有可能
这边有一个参数BN,这个参数的作用就是将一些训练的特别偏离特征的值给微调一些,让它尽可能的和我们要的数据靠拢,卷积+BN也可以合并成卷积
卷积当中的参数一开始是哪来的?一开始是随机初始化的

特征图变化

在这里插入图片描述
转换拉长成向量,向量做全连接然后输出
在这里插入图片描述

经典网络

了解一下
2012年当年还是树模型的时代,是SVM的年代,2012年Alexnet利用CNN夺得了图像分类比赛的一个冠军,所以说2012年是卷积神经网络崛起的一年
在这里插入图片描述

层数不是越多越好,例如如下图的56层的容错率比20层的还要高在这里插入图片描述

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

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

相关文章

Python 爬虫入门(八):爬虫工程化及Scrapy简介「详细介绍」

Python 爬虫入门(八):爬虫工程化及Scrapy简介「详细介绍」 前言1. Python1.1 Python 简介1.2 Python 爬虫的优势1.3 必须掌握的 Python 基础知识1.3.1 基本语法1.3.2. 函数和模块1.3.3 文件操作1.3.4 数据处理1.3.5 类和对象1.3.6 异常处理 2…

CAP+RabbitMQ

CAP(C# APM for Microservices)是一个开源的C#库,用于在分布式系统(如SOA或微服务系统)中实现事件总线及最终一致性(分布式事务)。CAP提供了多种消息队列(MQ)实现的支持&…

手把手教你写一个图形化的端口扫描工具

前言 关于学习群 由于我使用masscan进行纯端口扫描的时候,遇到扫描不出结果的情况,我就考虑了自己写一个端口扫描脚本,还挺好用。 库介绍 1、asyncio asyncio 是 Python 的一个库,用于编写单线程并发代码。使用 asyncio&#…

MacBook2024非常出色的虚拟机软件Parallels Desktop19.3中文免费版本

最近我被问得最多的一个问题就是:能不能在一台设备上同时使用Windows系统和macOS系统?答案当然是肯定的,你只需要一款虚拟机软件就能轻松实现。今天,我就来为大家安利一款非常出色的虚拟机软件——Parallels Desktop19。 这款软件…

【C++】模拟实现queue

🦄个人主页:修修修也 🎏所属专栏:实战项目集 ⚙️操作环境:Visual Studio 2022 ​​ 一.了解项目功能 📌了解queue官方标准 在本次项目中我们的目标是模拟实现一个queue,先一起看一下C标准文档中queue的定义:cplusplus : C queue标准文档htt…

中英文字翻译,这几款软件值得收藏!

在这个全球化的时代,语言不再是沟通的障碍,而翻译软件则成为了我们跨越语言鸿沟的得力助手。今天,就让我们一起探索三款让英文翻译变得前所未有的简单与高效的神奇软件,无论是学习、工作还是旅行,它们都能成为你不可或…

kickstart无人值守以及pxe实现服务器自动部署

使用背景 在企业中安装多台操作系统时会面临的问题:当安装Linux操作系统时,安装过程会需要回答很多关于设定的问题 这些问题必须手动选择,否则无法进行安装 。当只安装1台Linux系统,手动选择设定工作量比较轻松 当安装多台Linux&a…

PSO_GA混合算法优化PID参数(附代码)

由于PSO算法本身的缺陷,其存在容易出现早熟收敛、后期迭代效率不高、搜索精度不高的问题,在线性递减惯性权重PSO算法的基础上,与GA遗传算法相结合,针对PSO易陷入局部最优,通过采用GA杂交变异的思想,增加了粒子的多样性,跳出局部最优,增强混合算法的全局搜索能力,提高搜…

完美解决pip命令版本冲突导致对应版本模块包无法安装的问题

解决步骤 使用pip更新/降低指定模块包命令格式降低pip自身至指定版本的命令再次换源安装指定模块包 在对 FasterNet 这篇论文源码复现过程中,我们首先需要安装相关依赖文件( path/to/your/requirements.txt) -extra-index-url https://down…

CentOS7 VMware虚拟机基于NAT配置网络IP

目录 前言 VMnet8 虚拟网络编辑 ens33 ping 防火墙 前言 平时学习时一直需要用到Linux服务器,一般都是在Windows上安装VMware来创建一个虚拟机。创建的虚拟机需要配置网络才能够访问外网,可以通过以下两种方式来配置虚拟机网络 桥接模式NAT模式&…

给儿童掏耳朵用什么工具好?TOP4机型实测数据大公开

作为一名专业的个护测评师,我深知宝宝掏耳朵是一件多难的事情,由于宝宝的耳朵属于盲区。在为他操作时,很容易伤及宝宝的耳膜。因此,帮宝宝掏耳朵时工具的选择非常的重要。然而市场上许多跨界大牌存在隐患。某些网红品牌&#xff0…

视频发光字体特效怎么做 会声会影字体怎么淡化退出 视频剪辑制作教程

视频字体样式在视频制作中起着重要的作用,它可以帮助传达信息、增强视觉吸引力、提供情感表达、强调关键信息和提供文化背景解读等。这篇文章以会声会影为例,来一起看看发光字体制作,字体怎么淡化退出等内容。 你可以在这里免费下载会声会影…

Spring-Kafka确认机制报错:No Acknowledgment available as an argument

问题出现 在spring boot集成kafka时报错,报错信息: No Acknowledgment available as an argument, the listener container must have a MANUAL AckMode to populate the Acknowledgment.翻译: Acknowledgment 参数不可用,监听…

thingsboard-3.6.4 源码编译运行

1.首先我们要检查我们所需要的环境是否全部安装,还有对应的版本,一定要按照项目要求的版本来,要不然你会给自己挖很多坑。 我们使用的是3.6.4的版本,下面的版本全是基于这个版本的。需要安装好已经配置环境变量。 这部分大家就自…

adaboost提升方法

集成学习:串联(提升方法),并联(随机森林) Adaboost:分类加法模型(更新样本权值,投票权值-由权值误差率决定) 提升树:回归加法模型 (…

Linux驱动开发—平台总线模型详解

文章目录 1.平台总线介绍1.1平台总线模型的组成部分1.2平台总线模型的优势 2.使用平台总线模型开发驱动2.1注册platform设备2.2注册platform驱动2.3效果演示 1.平台总线介绍 Linux 平台总线模型(Platform Bus Model)是一种设备驱动框架,用于…

软件测试老兵的十条生存法则

在当下的数字化时代,软件测试行业正经历快速的变革和发展。自动化测试、持续集成和持续交付(CI/CD)、人工智能(AI)和机器学习(ML)、云计算和DevOps等技术正在重塑软件测试的各个方面。这些变化不…

全国产Gpixel图像传感器+FPGA+AI高帧率机器视觉工业相机解决方案

近些年来,机器视觉广泛应用于智能制造、自动化等设备中,用来保证产品质量,控制生产流程,感知环境等。面对不同的应用场景,检测系统需要满足不同的技术指标。其中图像传感器的分辨率和帧率是两个极为重要的指标&#xf…

2023级JavaScript与jQuery

第一课:JavaScript概述 一.预习笔记 1.认识JavaScript 1-1:1995年,NetScape公司与Sun公司联合开发出JavaScript脚本语言 1-2:JavaScript的作用 1)客户端表单验证 2)页面动态效果 3)动态改…

[米联客-安路飞龙DR1-FPSOC] UDP通信篇连载-03 IP_ARP层程序设计

软件版本:Anlogic -TD5.9.1-DR1_ES1.1 操作系统:WIN10 64bit 硬件平台:适用安路(Anlogic)FPGA 实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台:https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…