深度学习500问——Chapter05: 卷积神经网络(CNN)(1)

news/2024/4/29 18:01:14/文章来源:https://blog.csdn.net/leonardotu/article/details/137016731

文章目录

5.1 卷积神经网络的组成层

5.1.1 输入层

5.1.2 卷积层

5.1.3 激活层

5.1.4 池化层

5.1.5 全连接层

5.2 卷积在图像中有什么直观作用

5.3 卷积层有哪些基本参数

5.4 卷积核有什么类型

5.5 二维卷积与三维卷积有什么区别


卷积神经网络是一种用来处理局部和整体相关性的计算网络结构,被应用在图像识别、自然语言处理甚至是语音识别领域,因为图像数据具有显著的局部与整体关系,其在图像识别领域的应用获得了巨大的成功。


5.1 卷积神经网络的组成层

以图像分类任务为例,在表5.1所示卷积神经网络中,一般包含5种类型的网络层次结构:

表5.1 卷积神经网络的组成

CNN层次结构输出尺寸作用
输入层W_1\times H_1\times 3卷积网络的原始输入,可以是原始或预处理后的像素矩阵
卷积层W_1\times H_1\times K参数共享、局部连接,利用平移不变性从全局特征图提取局部特征
激活层W_1\times H_1\times K将卷积层的输出结果进行非线性映射
池化层W_2\times H_2\times K进一步筛选特征,可以有效减少后续网络层次所需的参数量
全连接层(W_2\cdot H_2\cdot K)\times C将多维特征展平为2维特征,通常低维度特征对应任务的学习目标(类别或回归值)

W_1\times H_1\times 3对应原始图像或经过预处理的像素值矩阵,3对应RGB图像的通道;K表示卷积层中卷积核(滤波器)的个数;W_2\times H_2为池化后特征图的尺度,在全局池化中尺度对应1\times 1(W_2 \cdot H_2 \cdot K)是将多维特征压缩到1维之后的大小,C对应的则是图像类别个数。

5.1.1 输入层

输入层(Input Layer)通常是输入卷积神经网络的原始数据或经过预处理的数据,可以是图像识别领域中原始三维的多彩图像,也可以是音频识别领域中经过傅里叶变换的二维波形数据,甚至是自然语言处理中一维表示的句子向量。以图像分类任务为例,输入层输入的图像一般包含RGB三个通道,是一个由长宽分别为HW组成的3维像素值矩阵H\times W \times 3,卷积网络会将输入层的数据传递到一系列卷积、池化等操作进行特征提取和转化,最终由全连接层对特征进行汇总和结果输出。根据计算能力、存储大小和模型结构不同,卷积神经网络每次可以批量处理的图像个数不尽相同,若指定输入层接收到的图像个数为N,则输入层的输出数据为N\times H\times W\times 3

5.1.2 卷积层

卷积层(Convolution Layer)通常用作对输入数据进行特征提取,通过卷积核矩阵对原始数据中隐含关联性的一种抽象。卷积操作原理上其实是对两张像素矩阵进行点乘求和的数学操作,其中一个矩阵为输入的数据矩阵,另一个矩阵则为卷积核(滤波器或特征矩阵),求得的结果表示为原始图像中提取的特定局部特征。图5.1表示卷积操作过程中的不同填充策略,上半部分采用零填充,下半部分采用有效卷积(舍弃不能完整运算的边缘部分)。

图5.1 卷积操作示意图

5.1.3 激活层

激活层(Activation Layer)负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相差的线性变化关系,需要激活层对其进行非线性映射。激活层主要由激活函数组成,即在卷积层输出结果的基础上嵌套一个非线性函数,让输出的特征图具有非线性关系。卷积网络中通常采用ReLU来充当激活函数(还包括tanh和sigmoid等),ReLU的函数形式如下公式所示,能够限制小于0的值为0,同时大于等于0的值保持不变。

f(x)=\begin{cases} 0 & \text{if } x<0 \\ x & \text{if } x\ge 0 \end{cases}

5.1.4 池化层

池化层又被称为降采样层(Downsampling Layer),作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征尺度,进而减少模型所需要的参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling),它们分别提取感受域内最大、平均与总和的特征值作为输出,最常用的是最大池化。

5.1.5 全连接层

全连接层(Full Connected Layer)负责对卷积神经网络学习提取到的特征进行汇总,将多维的特征输入映射为二维的特征输出,高维表示样本批次,低维常常对应任务目标。

5.2 卷积在图像中有什么直观作用

在卷积神经网络中,卷积常用来提取图像的特征,但不同层次的卷积操作提取到的特征类型是不相同的,特征类型粗分如表5.2所示。

表5.2 卷积提取的特征类型

卷积层次特征类型
浅层卷积边缘特征
中层卷积局部特征
深层卷积全局特征

图像与不同卷积核的卷积可以用来执行边缘检测、锐化和模糊等操作。表5.3显示了应用不同类型的卷积核(滤波器)后的各种卷积图像。

表5.3 一些常见卷积的作用

卷积作用卷积核卷积后图像
输出原图\begin{bmatrix} 0 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 0 \end{bmatrix}
边缘检测(突出边缘差异)\begin{bmatrix} 1 & 0 & -1 \ 0 & 0 & 0 \ -1 & 0 & 1 \end{bmatrix}
边缘检测(突出中间值)\begin{bmatrix} -1 & -1 & -1 \ -1 & 8 & -1 \ -1 & -1 & -1 \end{bmatrix}
图像锐化\begin{bmatrix} 0 & -1 & 0 \ -1 & 5 & -1 \ 0 & -1 & 0 \end{bmatrix}
方块模糊\begin{bmatrix} 1 & 1 & 1 \ 1 & 1 & 1 \ 1 & 1 & 1 \end{bmatrix} \times \frac{1}{9}
高斯模糊\begin{bmatrix} 1 & 2 & 1 \ 2 & 4 & 2 \ 1 & 2 & 1 \end{bmatrix} \times \frac{1}{16}

5.3 卷积层有哪些基本参数

卷积层中需要用到卷积核(滤波器或特征检测器)与图像特征矩阵进行点乘运算,利用卷积核与对应的特征感受域进行划窗式运算,需要设定卷积核对应的大小、步长、个数以及填充的方式,如表5.4所示。

表5.4 卷积层的基本参数

参数名作用常见设置
卷积核大小(Kernel Size)卷积核的大小定义了卷积的感受野在过去常设为5,如LeNet-5;现在多设为3,通过堆叠3\times3的卷积核来达到更大的感受域
卷积核步长(Stride)定义了卷积核在卷积过程中的步长常见设置为1,表示滑窗距离为1,可以覆盖所有相邻位置特征的组合;当设置为更大值时相当于对特征组合降采样
填充方式(Padding)在卷积核尺寸不能完美匹配输入的图像矩阵时需要进行一定的填充策略设置为'SAME'表示对不足卷积核大小的边界位置进行某种填充(通常零填充)以保证卷积输出维度与输入维度一致;当设置’VALID’时则对不足卷积尺寸的部分进行舍弃,输出维度就无法保证与输入维度一致
输入通道数(In Channels)指定卷积操作时卷积核的深度默认与输入的特征矩阵通道数(深度)一致;在某些压缩模型中会采用通道分离的卷积方式
输出通道数(Out Channels)指定卷积核的个数若设置为与通道数一样的大小,可以保持输入输出维度的一致性;若采用比输入通道数更小的值,则可以减少整体网络的参数量

卷积操作维度变换公式:

O_d =\begin{cases} \left\lceil \frac{(I_d - k_{\text{size}}) + 1}{s}\right\rceil ,& \text{if padding=VALID} \\ \left\lceil \frac{I_d}{s}\right\rceil,& \text{if padding=SAME} \end{cases}

其中,I_d为输入维度,O_d为输出维度,k_{size}为卷积核大小,s为步长。

5.4 卷积核有什么类型

常见的卷积主要由连续紧密的卷积核对输入的图像特征进行滑窗式点乘求和操作,除此之外还有其他类型的卷积核在不同的任务中会用到,具体分类如表5.5所示。

表5.5 卷积核分类

卷积类别示意图作用
标准卷积

最常用的卷积核,连续紧密的矩阵形式可以提取图像区域中的相邻像素之间的关联关系,3\times3的卷积核可以获得3\times3像素范围的感受野
扩张卷积(带孔卷积或空洞卷积)

引入一个称作扩张率(Dilation Rate)的参数,使同样尺寸的卷积核可以获得更大的感受野,相应的在相同感受野的前提下比普通卷积采用更少的参数。同样是3\times3的卷积核尺寸,扩张卷积可以提取5\times5范围的区域特征,在实时图像分割领域广泛应用
转置卷积

先对原始特征矩阵进行填充使其维度扩大到适配卷积目标输出维度,然后进行普通的卷积操作的一个过程,其输入到输出的维度变换关系恰好与普通卷积的变换关系相反,但这个变换并不是真正的逆变换操作,通常称为转置卷积(Transpose Convolution)而不是反卷积(Deconvolution)。转置卷积常见于目标检测领域中对小目标的检测核图像分割领域还原输入图像尺度
可分离卷积

标准的卷积操作是同时对原始图像H\times W\times C三个方向的卷积运算,假设有K个相同尺寸的卷积核,这样的卷积操作需要用到的参数为H\times W\times C\times K个;若将长宽与深度方向的卷积操作分离出变为H\times WC的两步卷积操作,则同样的卷积核个数K,只需要(H\times W + C)\times K个参数,便可得到同样的输出尺度。可分离卷积(Seperable Convolution)通常应用在模型压缩或一些轻量的卷积神经网络中,如MoblieNet[1]、Xception[2]等

5.5 二维卷积与三维卷积有什么区别

  • 二维卷积

二维卷积操作如图5.3所示,为了更直观的说明,分别展示在单通道和多通道输入中,对单个通道输出的卷积操作。在单通道输入的情况下,若输入卷积核尺寸为(k_h,k_w,1),卷积核在输入图像的空间维度上进行滑窗操作,每次滑窗和(k_h,k_w)窗口内的值进行卷积操作,得到输出图像中的一个值。在多通道输入的情况下,假定输入图像特征通道数为3,卷积核尺寸则为(k_h,k_w,3),每次滑窗与3个通道上的(k_h,k_w)窗口内的所有值进行卷积操作,得到输出图像中的一个值。

  • 三维卷积

D卷积操作如图所示,同样分为单通道和多通道,且假定只使用1个卷积核,即输出图像仅有一个通道。对于单通道输入,与2D卷积不同之处在于,输入图像多了一个深度(depth)维度,卷积核也多了一个k_d维度,因此3D卷积核的尺寸为(k_h, k_w, k_d),每次滑窗与(k_h, k_w, k_d)窗口内的值进行相关操作,得到输出3D图像中的一个值。对于多通道输入,则与2D卷积的操作一样,每次滑窗与3个channels上的(k_h, k_w, k_d)窗口内的所有值进行相关操作,得到输出3D图像中的一个值。

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

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

相关文章

Unity图集编辑器

图集编辑器 欢迎使用图集编辑器新的改变编辑器图片 欢迎使用图集编辑器 Unity图集操作很是费劲 无法批量删除和添加图集中的图片 新的改变 自己写了一个图集编辑器 客&#xff1a; 支持批量删除 左键点击图片代表选中 右键点击图标定位到资产支持批量添加 选中图片拖拽到编…

基于Spring boot + Vue协同过滤算法的电影推荐系统

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

iOS开发进阶(十一):ViewController 控制器详解

文章目录 一、前言二、UIViewController三、UINavigationController四、UITabBarController五、UIPageViewController六、拓展阅读 一、前言 iOS 界面开发最重要的首属ViewController和View&#xff0c;ViewController是View的控制器&#xff0c;也就是一般的页面&#xff0c;…

蛋糕店怎么弄一个微信小程序_开启蛋糕店新篇章

微信小程序&#xff0c;开启蛋糕店新篇章——甜蜜触手可及 在这个数字化、智能化的时代&#xff0c;微信小程序以其便捷、高效的特点&#xff0c;成为了众多商家与消费者之间的桥梁。对于蛋糕店而言&#xff0c;拥有一个专属的微信小程序&#xff0c;不仅可以提升品牌形象&…

HTTP状态 405 - 方法不允许

方法有问题。 用Post发的请求&#xff0c;然后用Put接收的。 大家也可以看看是不是有这种问题 <body><h1>HTTP状态 405 - 方法不允许</h1><hr class"line" /><p><b>类型</b> 状态报告</p><p><b>消息…

Gitlab CI---could not read username for xxx: no such device or address

0 Preface/Foreword 项目开发中&#xff0c;经常会使用第三方的算法或者功能&#xff0c;那么就需要把对应的repo以子模块的方式添加到当前repo中。 添加命令&#xff1a; git submodule add <URL> 1 问题表现 子模块添加成功&#xff0c;但是GitLab CI阶段&#xff…

2024最新版克魔助手抓包教程(9) - 克魔助手 IOS 数据抓包

引言 在移动应用程序的开发中&#xff0c;了解应用程序的网络通信是至关重要的。数据抓包是一种很好的方法&#xff0c;可以让我们分析应用程序的网络请求和响应&#xff0c;了解应用程序的网络操作情况。克魔助手是一款非常强大的抓包工具&#xff0c;可以帮助我们在 Android …

kubernetes(K8S)学习(一):K8S集群搭建(1 master 2 worker)

K8S集群搭建&#xff08;1 master 2 worker&#xff09; 一、环境资源准备1.1、版本统一1.2、k8s环境系统要求1.3、准备三台Centos7虚拟机 二、集群搭建2.1、更新yum&#xff0c;并安装依赖包2.2、安装Docker2.3、设置hostname&#xff0c;修改hosts文件2.4、设置k8s的系统要求…

新版Idea2023.3.5与lombok冲突、@Data失效

新版idea和lombok冲突&#xff0c;加上Data&#xff0c;其他地方get set也不报错&#xff0c;但是一运行就找不到get set方法。 但是直接使用Getter和Setter可以访问、应该是Data失效了。 解决方法&#xff1a; 看推上介绍是 lombok 与 idea 采集 get 、set 方法的时候所用的技…

FX110网:HYCM Europe 放弃 CIF 许可证,停止接受欧盟客户

FX110网获悉&#xff0c;外汇和差价合约交易平台HYCM&#xff08;Europe&#xff09;自愿放弃其CIF许可证。该公司在其网站上发布的一份声明中提到&#xff0c;将不再接受新客户或为欧盟境内的个人开设新账户。 HYCM Europe 写道&#xff1a;“HYCM (Europe) Limited&#xff0…

项目模块—实现抑郁测评(小程序)

script <script setup> import { ref } from "vue";//控制轮播图页码 let current ref(0);//答题逻辑 const add (value) > {if (current.value < 9) {current.value current.value 1;} else {uni.switchTab({url: "/pages/my/my",});} }…

vmware 安装 openEuler

获取openEuler 镜像文件 官网下载地址&#xff1a; https://www.openeuler.org/zh/download/?versionopenEuler%2022.03%20LTS%20SP3 下载ISO镜像 介绍一下三种软件包类型&#xff1a; Offline Standard ISO&#xff1a;基础镜像&#xff0c;包含运行最小系统的核心组件Offli…

2024.3.28学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p286-p294 继承 继承可以解决代码复用&#xff0c;让我们的编程更加靠近人类思维&#xff0c;当多个类存在相同的属性和方法时&#xff0c;可以从这些类中抽象出父类&#xff0c;在父类中定义这些…

如何使用OpenHarmony实现视频暂停、播放、切换、倍速播放

介绍 本篇Codelab使用ArkTS语言实现视频播放器&#xff0c;主要包括主页面和视频播放页面&#xff0c;我们将一起完成以下功能&#xff1a; 获取本地视频和网络视频。通过AVPlayer进行视频播放。通过手势调节屏幕亮度和视频播放音量。 相关概念 AVPlayer&#xff1a;播放管理…

力扣:字母迷宫,python

这里写自定义目录标题 问题描述题解踩坑记录global和nonlocal关键字的区别&#xff1a;类中可以用实例变量替换全局变量 问题描述 字母迷宫游戏初始界面记作 m x n 二维字符串数组 grid&#xff0c;请判断玩家是否能在 grid 中找到目标单词 target。 注意&#xff1a;寻找单词…

比特币避险美元危机

作者&#xff1a;秦晋 最近&#xff0c;一张出自美联储的关于富人和穷人的财富分配的图表引发很多人疯传。图表的具体内容就是&#xff0c;美国最富有的0.1%的人所掌控的财富是美国最底层的50%的穷人的近4倍。前者0.1%的最富的人掌控财富近22万亿美元&#xff0c;后者50%最底层…

关于「技术开发技能」课程

本课程分为三个部分&#xff0c;带您了解如何使用大模型平台、如何训练与部署大模型及生成式AI产品应用与开发&#xff0c;您将能了解各类服务的优势、功能、典型使用案例、技术概念和成本。 学习任选的两个课程模块&#xff0c;并通过测验者&#xff0c;将授予「技术开发技能…

Python抓取抖音直播间数据:技术探索与实践

目录 一、引言 二、技术准备 三、分析抖音直播间网页结构 四、编写爬虫代码 五、处理反爬虫机制 六、数据清洗与存储 七、总结 一、引言 随着互联网的快速发展&#xff0c;直播行业已成为当下的热门领域。抖音作为其中的佼佼者&#xff0c;吸引了大量的用户和主播。对于…

学习总结3

解题思路 利用dfs进行遍历&#xff0c;直到无法遍历就把此次遍历解出的题目与最大值进行比较&#xff0c;遍历完后输出最大值。 代码 #include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #inc…

itextPdf生成pdf简单示例

文章环境 jdk1.8&#xff0c;springboot2.6.13 POM依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13</version></dependency><dependency><groupId>com.ite…