神经网络(二):卷积神经网络

文章目录

  • 一、图像的本质
    • 1.1单通道图像:灰度图
    • 1.2多通道图像
  • 二、卷积神经网络
    • 2.1基本结构
    • 2.2卷积层
      • 2.2.1卷积操作
      • 2.2.2填充padding
      • 2.2.3步幅strides
      • 2.2.4多通道图像卷积:单卷积核
      • 2.2.5多通道图像卷积:多卷积核
      • 2.2.5卷积层的参数与激活函数
    • 2.3池化层
      • 2.3.1步长
      • 2.3.2填充
    • 2.4全连接层
    • 2.5卷积神经网络与全连接神经网络的对比


一、图像的本质

1.1单通道图像:灰度图

  灰度图就是常见的黑白图像,以下是一个24*16的灰度图:

在这里插入图片描述
其中,每一个像素都有对应的像素值表示像素的强度(灰度等级),像素值大小范围为0~255,其中0表黑色,255表白色,因此在计算机中可使用数字矩阵表示该图像:

在这里插入图片描述

1.2多通道图像

  在表示图像时有多种不同的颜色模型,最常见的是RGB模型。该模型是一种加法颜色模型,由三个数字矩阵表示三种原色(三原色模型中原色分别为红、绿、蓝),将三种原色混合在一起后就可用于表示广泛的颜色范围。例:

在这里插入图片描述

在这里插入图片描述
  图像通道,指的是构成图像的多个单独的成分或层。每个通道代表图像的一种颜色或特定的信息,这些信息可以组合在一起形成完整的图像(通道可以理解为图像的特征)。当RGB图像(三通道)加载到计算机中时,其像素矩阵形状为H×W×3。其中H是整个高度上的像素数量,W是整个宽度上的像素数,3表示通道数。常见图像通道类型:

  • RGB图像通道:含有R、G、B三种图像通道,每个图像通道分别表示对应颜色的像素信息,通过将这三个通道结合在一起,可以生成全彩色图像。
  • 灰度图像通道:只有灰度通道,用于表示从黑到白的不同亮度级别。
  • 遥感图像通道:在遥感图像中,通常使用多个波段或频谱范围来捕捉地表特征。这些波段通常对应于不同的电磁波长,每个波段都可以看作是图像的一个通道。遥感图像。通道的选择取决于具体的应用需求,不同波段的组合可以帮助研究人员和分析师解释地表特征。常见通道类型:
    • 可见光波段:人眼可见的光谱范围,通常分为红、绿、蓝(RGB)三个波段。
    • 红外波段:包括近红外(NIR)和远红外(FIR)波段。近红外波段特别适合于植被和土地利用研究,因为植被在近红外波段有明显的反射特征。
    • 热红外波段:用于测量地表温度,通常在热成像中使用。
    • 超光谱波段:包含大量窄带波段,提供非常详细的光谱信息,用于物种识别、污染检测等高级应用。

二、卷积神经网络

2.1基本结构

在这里插入图片描述
  与全连接神经网络相比,卷积神经网络多了卷积层、池化层,输入卷积神经网络中的数据特征图通过卷积运算和池化运算,将其中的有效特征提取出来输入到全连接层,并对数据进行分类或者预测。简而言之,各层的作用为:

  • 输入层:输入图像数据。
  • 卷积层:利用卷积核执行卷积操作来提取对应的图像特征信息。
  • 池化层:减少卷积层提取的特征个数,将数据维度减小,防止过拟合。
  • 全连接层:汇总卷积层和池化层得到的图像特征信息。
  • 输出层:根据全连接层的信息得到概率最大的结果。

  上图中利用卷积层、池化层不断改变通道数、图像大小(实际是对图像特征的提取),将从图像提取的特征信息输入到全连接层,相当于输入到全连接神经网络当中,最后将结果通过输出层输出。之所以使用卷积神经网络,而不直接使用全连接神经网络处理图像,是因为直接顺序输入图像像素值(将像素数据拉平为一维)到全连接神经网络时,失去了像素之间的空间信息,如下图中狗耳朵与狗头,直接输入像素值,就会丢失狗耳朵长在狗头上的空间特征:

在这里插入图片描述

而事实上,像图像这样的3维形状的数据中应该含有重要的空间信息。比如,空间上相邻的地方像素值应该是相似的值、RGB通道之间分别有着密切的关联性,但是相距比较远的像素之间的关联性比较低。但是全连接层会忽视形状,将全部的信息作为相同的神经元处理,因此无法利用与形状相关的信息。而卷积神经网络中的卷积层可以保持形状不变,当输入的数据是图像的时候,卷积层会以3维的数据形式接受数据,同样以3维的形式输出到下一层,因此相对于全连接神经网络,卷积神经网络可以比较好的理解空间形状的数据。

2.2卷积层

2.2.1卷积操作

  用于提取图像中的某一特征信息,这些特征信息通过图像中像素的组合或者其他方式所体现,如图片的纹理特征,颜色特征。比如,下图蓝框框住的地方就是脸部特征,这些特征其实是由一个个像素所组成的,在执行人脸识别任务时,卷积层就是要提取下图蓝框内的脸部特征。
在这里插入图片描述
  卷积层通过卷积操作来提取特征,在计算机当中,图像以矩阵的方式进行存储(多通道图像即为多个矩阵的叠加),卷积操作实际是通过卷积核对每个通道的矩阵从左到右(卷积核一般是3x3的矩阵)从上至下进行相关运算(先是从左到右,再是从上至下,所以卷积操作也会保留位置信息),最后生成一个/多个新的矩阵,这一新矩阵即为图像的某一特征信息(不同的卷积核能够提取图像不同的特征信息)。卷积操作的过程如下:
在这里插入图片描述
在全连接神经网络中有权重参数、偏置参数两种参数,而在卷积神经网络中,卷积核就是卷积神经网络网络的权重参数,当然卷积神经网络中也是存在偏置参数的。如图所示,偏置参数的形状通常是一个1x1的卷积核,这个偏置的参数值会被加到通过卷积运算的所有元素上。具体如图所示:
在这里插入图片描述
可注意到,卷积神经网络与全连接神经网络不同,前者实现了权重共享,即卷积核中的参数并不会只针对某一像素值,而是在卷积核移动过程中与所有像素值进行运算。权重共享使得卷积神经网络参数量远少于全连接神经网络,减少过拟合的发生(参数越多,越容易引入噪声特征,越容易发生过拟合)。

2.2.2填充padding

  在应用多层卷积时,我们常常丢失边缘像素,即经过卷积运算得到的特征图会比原图像更小。随着我们应用许多连续卷积层,累积丢失的像素数就更多了。为使得卷积后的图像不会变小,且可保留原始图像的边界信息,一般会对图像进行填充(padding),即,在输入图像的边界填充额外的行/列(元素一般为0),使得经过卷积后的图片不会变小,并且可以保留原始图像的边界信息,以便我们设计更深层次的神经网络。
【不使用填充】
在这里插入图片描述

  • n h n_h nh:输入图像的高度。
  • n w n_w nw:输入图像的宽度。
  • k h k_h kh:卷积核的高度。
  • k w k_w kw:卷积核的宽度。

【使用填充】
  设原图像在行方向上共填充 p h p_h ph行(包括上和下行),在列方向上填充 p w p_w pw列(包括左和右列),则一般取:
p h = k h − 1 , p w = k w − 1 p_h=k_h-1,p_w=k_w-1 ph=kh1pw=kw1
且有:
当 k h 为奇数时:上下两边填充 p h / 2 行 当 k h 为偶数时:上侧填充 ⌈ p h / 2 ⌉ ,下侧填充 ⌊ p h / 2 ⌋ 行 当k_h为奇数时:上下两边填充p_h/2行\\ 当k_h为偶数时:上侧填充⌈p_h/2⌉,下侧填充⌊p_h/2⌋行 kh为奇数时:上下两边填充ph/2kh为偶数时:上侧填充ph/2,下侧填充ph/2
列方向则同理。事实上,现在使用的卷积核大多是长度为奇数的正方形,此时上下/左右均填充 ( k h − 1 ) / 2 (k_h-1)/2 (kh1)/2行/列像素。

2.2.3步幅strides

  步幅是指行/列的滑动步长,可以通过调大步幅大幅降低图像的宽度和高度。例如,原始的输入分辨率十分冗余,就可使用较大的步幅过滤一些冗余的像素。当步幅为2的时候进行的卷积运算的运算结果如图所示:
在这里插入图片描述
  如上图所示,输入数据大小为(4,4),卷积核的大小为(2,2),数据填充为0,步幅的大小为2。设置步幅大小可用于高效计算或是缩减采样次数(如高分别率图像中往往存在过多冗余的像素),卷积窗口可以跳过中间位置,每次滑动多个元素。假设输入大小为(H,W),卷积核大小为(FH,FW),输出数据的大小为(OH,OW),填充为P,步幅S,则有如下公式:
在这里插入图片描述
上图中案例即为:
在这里插入图片描述

2.2.4多通道图像卷积:单卷积核

  上文的所有例子都是在单通道图像上的卷积操作,而在多通道图像(如RGB图像)上的卷积操作又有所不同。使用一个卷积核对多通道图像卷积运算时有如下规则:

  • 1.因为要对每一个通道上的像素进行卷积运算,故卷积核的通道数必须与原图像通道数相等。
  • 2.因为是一张图像的不同通道,故卷积核不同通道的核大小必须相等(后续需进行加法运算),但不同通道上内核的参数可以不相等。
  • 3.每一个通道的像素值与对应的卷积核通道的数值(即内核)进行卷积,因此每一个通道会对应一个输出卷积结果,最后需将所有卷积结果按对应位置累加求和,得到最终的卷积结果。
  • 4.由于只使用一个卷积核,故输出的特征图是单通道的(这也对应了“一个卷积核用于提取图像的某一特征”),可以理解为,最终得到的卷积结果是原始图像各个通道上的综合信息结果。实际操作中会添加多个卷积核,因为一个卷积核无法提取训练所满足的特征。

在这里插入图片描述
拆分这一过程:
在这里插入图片描述
  可得到对多通道图像进行单卷积核操作的通用公式:
在这里插入图片描述
即:由于只有一个卷积核,因此卷积后只输出单通道的卷积结果(黄色的块状部分表示一个卷积核,黄色块状是由三个通道堆叠在一起表示的,每一个黄色通道与输入卷积通道分别进行卷积,也就是 channel 数量要保持一致)。

2.2.5多通道图像卷积:多卷积核

  对多通道图像进行多卷积核操作的公式:
在这里插入图片描述
本质上是将每个卷积核对应的输出通道结果(feature map)进行拼接。图中共有m个卷积核(输入卷积核的大小为 ( m , w , h , c ) (m,w,h,c) (m,w,h,c)),则输出特征图大小为 ( m ∗ w ’ ∗ h ’) (m * w’ * h’) mwh,其中 w ’、 h ’ w’、h’ wh表示卷积后的通道尺寸,原始输入大小为 ( n ∗ w ∗ h ) (n * w * h) nwh
  总结,卷积核的通道数应与输入图像的通道数相等,而输出特征图的通道数等于卷积核的个数。

2.2.5卷积层的参数与激活函数

【参数】
  卷积核的值就是待学习的参数(上文中使用的卷积核都是已确定值的),在网络训练时,输出的结果会和数据集标签做损失计算,然后把计算得到的损失反向梯度下降去更新卷积核里的每一个参数。所以卷积核里面的参数最终是训练得到的。在Pytorch中提供了实现卷积层的类nn.Conv2d,其包含两种参数:

  • Conv2d.weight(卷积核参数):每个卷积核都是一个可学习的参数矩阵,用于在输入图像上执行特征提取。nn.Conv2d层会学习这些卷积核的参数,使得它们能够有效地捕捉输入图像中的不同特征。
  • Conv2d.bias(偏置项参数):如果在nn.Conv2d中使用了偏置(bias=True),则在进行卷积操作时,每个输出通道的卷积结果会与相应的偏置项相加,从而得到输出特征图。

其中,偏置项参数用于引入对输入数据的线性偏移,使得模型能够更好地拟合数据。需要注意,一个卷积核仅对应一个偏置值,偏置值会在各卷积核通道运算结果完成累加操作后再进行累加,得到最终特征图。

【激活函数】
  卷积操作本身是一种线性运算,故而,卷积操作后往往要加上激活函数,以此为模型引入非线性性。图像一般都选ReLU作为激活函数,因为大于1的时候趋向无穷大,这样反向计算损失的时候不会出现梯度消失的风险。

2.3池化层

  池化层是一种降采样操作,其本质是仿照人的视觉系统对视觉输入对象进行降维和抽象,一般配合卷积层进行使用,是对卷积层输出的特征图进行特征选择。事实上,数据在进行卷积操作后,维度会越来越高(模型训练过程中往往使用很多的卷积核,从而生成高纬度特征图)、参数量上涨的很快(卷积层会有自带的参数需要更新),造成模型的训练困难和过拟合现象,所以将池化层置于连续的卷积层之间,以压缩数据量和参数并减少过度拟合(池化层并不带有参数)。
  池化层的具体操作是将一个像素点及其周围的像素点进行聚合统计,缩减提取特征图的尺寸,减少最终全连接层中的参数数量,加快模型的计算速度。常见的池化层类型有:最大池化、均值池化、空间金字塔池化等。如图所示,其中,选择某个像素点相邻区域内的最大值是最大池化操作、计算某个像素点相邻区域内的平均值是均值池化操作:
在这里插入图片描述

2.3.1步长

  池化层的步长确定了每次池化操作中提取的区域大小。
【例】池化核大小为 3 x 3 3x3 3x3,输入图像大小为 5 x 5 5x5 5x5,步长为1,不填充:
在这里插入图片描述
【例】池化核大小为 3 x 3 3x3 3x3,输入图像大小为 5 x 5 5x5 5x5,步长为3,不填充:
在这里插入图片描述

2.3.2填充

  池化层的填充操作与卷积层相同。

2.4全连接层

在这里插入图片描述
  卷积神经网络的最后一般使用全连接层,其将多维数据进行扁平化处理(拉伸为一维数组),然后建立普通的全连接神经网络结构,在完成计算后通过激活函数并输出结果。事实上,全连接层的作用主要是对数据进行降维操作,不然数据骤降到输出层,可能会丢失一些图像特征的重要信息。

2.5卷积神经网络与全连接神经网络的对比

【1.参数共享机制】
  直接将图像像素作为全连接神经网络的输入,预测类别(共9种)作为输出结果来建立全连接神经网络(假设图像大小为8x8):
在这里插入图片描述
则此时全连接层共需要64x9=576个参数(不考虑偏置项)。而当使用卷积核为3x3大小的卷积神经网络时:
在这里插入图片描述
一共只有9个参数,即,图像的不同像素区域都共享这9个参数。事实上,图像特征往往具有一定的位置关系,一个特征一般情况下很可能在不止一个地方出现,使用卷积核的这种方式不但大大减少网络的参数数量避免过拟合,也可以获取图像特征的位置信息,使模型性能更优秀、泛化能力更强。

【2.连接的稀疏性】
  由卷积的操作可知,输出图像中的任何一个单元,只跟输入图像某一区域的像素有关系:
在这里插入图片描述
而全连接神经网络中输出的任何一个单元都要受输入的所有的单元的影响。这样无形中会对图像的识别效果大打折扣。可以理解为,每一个区域都有自己的专属特征,我们不希望它受到其他区域的影响。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【qt】QQ仿真项目1

一览全局: QQ仿真项目 一.创建项目添加资源文件二.创建数据库三.自定义标题栏Qt类四.加载样式表标题栏按钮的搭配五.标题栏实现移动窗体六.标题栏按钮连接信号槽七.标题栏双击最大化和还原八.基类窗口实现标题栏按钮信号九.重写基类窗口绘图事件确保设置样式表生效十.用户登录界…

Leetcode 1235. 规划兼职工作

1.题目基本信息 1.1.题目描述 你打算利用空闲时间来做兼职工作赚些零花钱。 这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。 给你一份兼职工作表,包含开始时间 startTime,结束时…

第二十节:学习Redis缓存数据库实现增删改查(自学Spring boot 3.x的第五天)

这节记录下如何使用redis缓存数据库。 第一步: 先在服务器端安装redis, 下载地址:Releases tporadowski/redis GitHub。 第二步: 安装redis客户端可视化管理软件redisDesktopmanager Redis Desktop Manager - Download 第…

革命题材网络电影《突进夹金山》将于10月上线

“长征万里险,最忆夹金山”。这座雪山不仅见证了红军战士们的英勇与牺牲,也成为了中国革命历史上的一座重要里程碑。 革命题材网络电影《突进夹金山》,作为四川省2024年度重点影视剧项目以及纪念红军长征90周年献礼的红色作品,由谢…

SPI驱动学习七(SPI_Slave_Mode驱动程序框架)

目录 一、SPI_Slave_Mode驱动程序框架1. Master和Slave模式差别1.1 主设备 (Master)1.2 从设备 (Slave)1.3 示例 2. SPI传输概述2.1 数据组织方式2.2 SPI控制器数据结构 3. SPI Slave Mode数据传输过程4. 如何编写程序4.1 设备树4.2 内核相关4.3 简单的示例代码4.3.1 master和s…

DarkLabel2.4版本导入MOT17数据集

目录 背景导入效果MOT17数据集说明DarkLabel导入视频导入gt文件 背景 做目标追踪,目前找了一圈开源工具,发现DarkLabel还是很好用的,提供自动目标跟踪,标注很方便。 由于目标追踪我用的是bytetrack,官网是用mot17数据…

python爬虫案例——抓取链家租房信息(8)

文章目录 1、任务目标2、分析网页3、编写代码1、任务目标 目标站点:链家租房版块(https://bj.lianjia.com/zufang/) 要求:抓取该链接下前5页所有的租房信息,包括:标题、详情信息、详情链接、价格 如: 2、分析网页 用浏览器打开链接,按F12或右键检查,进入开发者模式;因…

5.MySQL表的约束

目录 表的约束空属性(非空约束)默认值(default约束)列描述(comment)zerofill主键(primary key约束)自增长(auto_increment)唯一键(unique约束&…

数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall

数据集-目标检测系列-鲨鱼检测数据集 shark >> DataBall 数据集-目标检测系列-鲨鱼检测数据集 shark 数据量:6k 数据样例项目地址: gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview github: https://github.com/Te…

开启争对目标检测的100类数据集-信息收集

DataBall 助力快速掌握数据集的信息和使用方式。 目标检测项目数据集样例地址: gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview github: https://github.com/TechLinkX/DataBall-detections-100s 请关注我们的专栏:DataBal…

Excel 绝对值怎么求?ABS 函数用法详解

大家好,这里是效率办公指南! 📊 ABS函数在Excel中用于计算数值的绝对值,这在处理财务、科学和日常办公等领域的数据时非常有用。今天,我们将通过一些具体的日常工作案例,来展示ABS函数的实际应用。 ABS函…

《深度学习》自然语言处理 统计、神经语言模型 结构、推导解析

目录 一、语言转换方法 1、如何将语言转换为模型可以直接识别的内容 1)数据预处理 2)特征提取 3)模型输入 4)模型推理 二、语言模型 1、统计语言模型 1) 案例: • 运行结果: • 稀疏…

BAAI 团队发布多模态模型 Emu3

在人工智能的浩瀚海洋中,一艘名为Emu3的创新之船正在破浪前行,为我们展示了多模态AI的无限可能。这个由Meta AI研究团队开发的革命性模型,通过简单而巧妙的"下一步预测"机制,实现了文本、图像和视频的统一处理。 Emu3的…

linux服务器部署filebeat

# 下载filebeat curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.23-linux-x86_64.tar.gz # 解压 tar xzvf filebeat-7.17.23-linux-x86_64.tar.gz# 所在位置(自定义) /opt/filebeat-7.17.23-linux-x86_64/filebeat.ym…

k8s StorageClass 存储类

文章目录 一、概述1、StorageClass 对象定义2、StorageClass YAML 示例 二、StorageClass 字段1、provisioner(存储制备器)1.1、内置制备器1.2、第三方制备器 2、reclaimPolicy(回收策略)3、allowVolumeExpansion(允许…

探索基于知识图谱和 ChatGPT 结合制造服务推荐前沿

0.概述 论文地址:https://arxiv.org/abs/2404.06571 本研究探讨了制造系统集成商如何构建知识图谱来识别新的制造合作伙伴,并通过供应链多样化来降低风险。它提出了一种使用制造服务知识图谱(MSKG)提高 ChatGPT 响应准确性和完整…

告别背锅侠!29个空场景及测试方法的实战指南

想必大家在日常的测试工作中,经常会碰到以下这些场景: 场景一: 测试人员:有一个数据为空的场景还没有验证。 研发人员:这个场景不会出现,因为没有删除逻辑。 场景二: 研发人员:…

蓝桥杯模块二:数码管的静态、动态实现

模块二训练 1.静态显示 一、数码管电路图 二、电路分析 1.数码管电路分析 端口分公共端和段码,先用公共端控制一个数码管,再用段码实现显示数字。共阳数码管公共端输入高电平,段码输入低电平实现点亮 2.锁存器 Y7控制段码,Y6控…

【含文档】基于Springboot+微信小程序 的中心医院用户移动端(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定…

全志科技发布T536高性能智慧工业芯片,飞凌嵌入式率先推出配套核心板

2024年9月24日下午,全志科技在中国国际工业博览会上成功举办了其最新产品——T536高性能智慧工业芯片的全球首发发布会。这款芯片采用创新的4核Cortex-A55与RISC-V混合架构,主频分别达到1.6GHz和600MHz,并集成了2TOPS算力的NPU,吸…