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

news2024/12/23 2:31:23

文章目录

  • 一、图像的本质
    • 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.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.4全连接层

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

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

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

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

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

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

相关文章

算法练习题24——leetcode3296移山所需的最小秒数(二分模拟)

【题目描述】 【代码示例(java)】 class Solution {// 计算让工人们将山的高度降到0所需的最少时间public long minNumberOfSeconds(int mountainHeight, int[] workerTimes) {long left 0; // 最少时间初始为0long right 0; // 最大时间初始化为0// …

Linux,uboot,kernel启动流程,S5PV210芯片的启动流程,DRAM控制器初始化流程

一、S5PV210芯片的DRAM控制器介绍、初始化DDR的流程分析 1、DRAM的地址空间 1)从地址映射图可以知道,S5PV210有两个DRAM端口。 DRAM0的内存地址范围:0x20000000~0x3FFFFFFF(512MB);DRAM1:的内存地址范围…

AI大模型教程 Prompt提示词工程 AI原生应用开发零基础入门到实战【2024超细超全,建议收藏】

在AGI(通用人工智能)时代,那些既精通AI技术、又具备编程能力和业务洞察力的复合型人才将成为最宝贵的资源。为此,我们提出了‘AI全栈工程师’这一概念,旨在更精准地描述这一复合型人才群体,而非过分夸大其词…

全栈项目小组【算法赛】题目及解题

题目:全栈项目小组【算法赛】 题目: 解题思路 1.遍历简历信息:我们需要读取所有简历,根据期望薪资和岗位类型进行分类和统计。 2.分类统计:使用哈希表来存储每个薪资下的前端(F)和后端&#…

传统产品经理如何快速转行成为顶尖的AI产品经理?

前言 产品经理本身便是一个需要不断学习、不断实践的岗位,即使是AI产品经理,也不能脱离产品经理岗位的本质。 另外,要想知道具体如何转行成为顶尖的AI产品经理,我们首先要明确两个问题,即: 什么是AI产品…

HTML5简介的水果蔬菜在线商城网站源码系列模板3

文章目录 1.设计来源1.1 主界面1.2 商品列表1.3 商品信息1.4 购物车1.5 其他页面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址:https://blog.csdn.ne…

AI Native平台,跨越AI应用从创新到生产的鸿沟

2024年是AI应用的元年,以大模型为中心的 AI Native 应用大爆发正在从理想变成现实。云计算带来的应用创新潮,经历了虚拟机时代和云原生时代,正在全面拥抱以大模型为核心的 AI Native 阶段,推动大数据与AI的工作流前所未有地紧密结…

【C语言进阶】第四节:自定义类型详解

1、结构体 1.1 结构体变量的定义和初始化 struct Point//类型声明 {int x;int y; }p1;//声明类型的同时定义变量p1struct Point p2;//定义结构体变量p2//初始化:定义变量的同时赋初值。 struct Point p3 { x, y };struct Node {int data;struct Point p;struct N…

智谱清影的魅力:使用CogVideoX-2b生成6秒视频的真实体验!

文章目录 1 3D变分自编码器与3D RoPE2 精确描述与多样化输入3 社区的力量与未来展望 在8月6日,智谱 AI 发布了一则令人振奋的消息:他们决定开源其视频生成模型CogVideoX。 1 3D变分自编码器与3D RoPE 作为一名开发者,我近期才来体验这个新工…

只需5分钟!掌握学术写作的核心逻辑!

人工智能的广泛应用中,ChatGPT 已被证明是一种极具潜力的语言模型,其功能涵盖多个领域,显示出强大的适应性。在 GPT-4 架构的推动下,ChatGPT 正在彻底改变我们与文本驱动的人工智能的交互模式。 在学术界,学术写作至关…

【AIGC】ChatGPT提示词助力高效文献处理、公文撰写、会议纪要与视频总结

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯高效英文文献阅读提示词使用方法 💯高效公文写作提示词使用方法 💯高效会议纪要提示词使用方法 💯高效视频内容分析提示词使用方法 &a…

Unity3D 小案例 像素贪吃蛇 03 蛇的碰撞

Unity3D 小案例 像素贪吃蛇 第三期 蛇的碰撞(完结) 像素贪吃蛇 碰撞蛇身 当蛇头碰撞到蛇身时,游戏应该判定为失败。 找到蛇身预制体,添加 Body 标签和碰撞体,碰撞体的大小为 0.5,跟蛇头和蛇身的碰撞体范…

两台虚拟机之分布式部署

Apache2 和 PHP 安装 在虚拟机1上执行以下步骤: 更新系统包列表: sudo apt update安装 Apache2: sudo apt install apache2 -y安装 PHP 及其扩展: sudo apt install php libapache2-mod-php php-mysql配置Apache和PHP sudo nano /etc/apache2/mods-enabled/dir.conf#…

【BEV 视图变换】Ray-based(2): 代码复现+画图解释 基于深度估计、bev_pool(代码一键运行)

paper:Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D code:https://github.com/nv-tlabs/lift-splat-shoot 一、完整复现代码(可一键运行)和效果图 import torch import torch.nn as nn import mat…

【Go】Go语言切片(Slice)深度剖析与应用实战

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

知乎:从零开始做自动驾驶定位; 注释详解(二)

这个个系统整体分为: 数据预处理 前端里程计 后端优化 回环检测 显示模块。首先来看一下数据预处理节点做的所有事情: 数据预处理节点 根据知乎文章以及代码我们知道: 节点功能输入输出数据预处理1.接收各传感器信息2.传感器数据时间同步 3.点云运动畸变补偿 4.传…

免杀对抗—python混淆算法反序列化shellcode

一、前言 内网已经学的七七八八了(主要是实验环境太麻烦了,累了),今天就开启新的篇章——免杀。免杀我们主要是对生成的shellcode做免杀,而不是对生成的exe做免杀。为啥呢,你可以这样理解,exe已经是成品了&#xff0c…

Vue 内存泄漏分析:如何避免开发过程中导致的内存泄漏问题

一. 引言 Vue 作为一款流行的前端框架,已经在许多项目中得到广泛应用。然而,随着我们在 Vue 中构建更大规模的应用程序,我们可能会遇到一个严重的问题,那就是内存泄漏。内存泄漏是指应用程序在使用内存资源时未正确释放&#xff…

昇思MindSpore进阶教程-模型模块自定义

大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧 基础用法示例 神经网络模型由各种层(Lay…

【AI实战攻略】保姆级教程:用AI打造治愈动画vlog,轻松打造爆款,快速涨粉!

在当今这个快节奏的社会中,你是否也曾在某个雨夜,沉浸于那些温馨而治愈的动画短视频中,找到片刻的宁静与放松? 窗外大雨滂沱,而你,刚结束一天的忙碌,沐浴在温暖的热水中,随后裹上柔…