当前位置: 首页 > news >正文

深度学习 | CNN 基本原理

目录

    • 1 什么是 CNN
    • 2 输入层
    • 3 卷积层
      • 3.1 卷积操作
      • 3.2 Padding 零填充
      • 3.3 处理彩色图像
    • 4 池化层
      • 4.1 池化操作
      • 4.2 池化的平移不变性
    • 5 全连接层
    • 6 输出层


前言

  • 这篇博客不够详细,因为没有介绍卷积操作的具体计算;
  • 但是它介绍了 CNN 各层次的功能,提供了一个全局的视野。

参考博客

  • 卷积神经网络(CNN)详细介绍及其原理详解


1 什么是 CNN

卷积神经网络 CNN 通常被用于图像处理,比如下图的手写数字辨识过程:

在这里插入图片描述

可以看出,整个过程由以下几层组成:

  • 输入层:输入图像等信息;
  • 卷积层:用于提取图像的底层特征;
  • 池化层:防止过拟合,即将数据的维度减小;
  • 全连接层:汇总卷积层和池化层得到的图像的底层特征和信息;
  • 输出层:根据全连接层的信息得到概率最大的结果。

其中最重要的就是卷积层,这也是卷积神经网络名称的由来。接下来,我们将对这些层进行详细的介绍。

个人理解:上图中的红色方框表明,黑色线所指向位置的元素是由红色方框内的元素计算出来的。



2 输入层

CNN 的输入层用于将输入的图像转换为由像素值构成的二维矩阵,并存储该二维矩阵以等待后续操作。与人眼不同,计算机能够处理的图像是一个二维矩阵,该二维矩阵是由图像的每一个像素的像素值组成的。如下图所示,手写数字 8 8 8 的图像被计算机读取为一个二维矩阵:

在这里插入图片描述
图 (a) 是一个灰度图像,这是因为其每个像素值的范围在 [ 0 , 255 ] [0,255] [0,255] 之间,表示其颜色的强弱程度。除灰度图像外还有黑白图像,黑白图像的每个像素值要么是 0 0 0,要么是 255 255 255。而日常生活中最常见的是 R G B \mathrm{RGB} RGB 图像,这种图像有三个通道,分别是:红色、绿色、蓝色。每个通道的每个像素值的范围也是在 [ 0 , 255 ] [0,255] [0,255] 之间,表示其颜色的强弱程度。

由于灰度图像的值范围较小、颜色较单一,因此比较好操作,所以我们通常处理的都是灰度图像。在某些情况下, R G B \mathrm{RGB} RGB 图像在输入神经网络之前也会被转化为灰度图像,这就是因为处理三个通道的计算量非常大。不过随着计算机性能的高速发展,现在有些神经网络也可以直接处理 R G B \mathrm{RGB} RGB 图像。



3 卷积层

一旦图片被输入网络,它将被转换成一个二维矩阵。为了提取该矩阵中的特征,卷积操作被应用于该矩阵。该操作通过计算每个像素与卷积核(Convolution Kernel)的点积,为图像中具有特征的区域赋予高值,为不具有特征的区域赋予低值。

注意:想要提取什么样的特征,就要使用什么样的卷积核。比如:想要提取原始图像中眼睛这一特征,就要使用具有眼睛特征的卷积核。

3.1 卷积操作

卷积核本质上也是一个二维矩阵,其尺寸通常小于或等于输入图像的二维矩阵。在卷积操作中,卷积核在输入图像矩阵上逐像素移动,并在每次移动后执行像素值的点积运算。将所有这些点积的和赋予当前卷积核位置对应的输出矩阵中的相应像素值。如下图所示:

在这里插入图片描述

通过卷积核不断地移动和计算(逐元素相乘再相加),我们得到了一个新的二维矩阵,该二维矩阵被称为特征图(Feature Map),也就是图像中最有用的特征。此外,不难看出卷积操作是一个降维的过程,因为特征图的维度比原始图像的二维矩阵小。

在上图中,红色矩阵是图像的二维矩阵,蓝色矩阵是卷积核,紫色矩阵是特征图。

为了进行更加生动形象的说明,我们以提取人脸图像中的眼睛为例,选取眼睛作为卷积核,并在整个头部图像上移动,以识别和定位眼睛的位置。如下图 (a)(b)(c) 所示:

在这里插入图片描述

为了强调我们提取到的人眼特征,我们可以假设高值为白色,低值为黑色,并对特征图进行上色处理,如上图 (d) 所示。说明:由于黑色实在是太辣眼睛了,因此我实际上用的是灰色。

由向量乘法的几何意义可知,两个向量越相似,其乘积结果越大。因此当卷积核移动到眼睛部分时,它们的卷积结果较大,即上图中的 100 100 100



3.2 Padding 零填充

可以从上一节的动图看出,边缘的像素只被计算了一次,而中间的像素被计算了多次,从而造成了边缘特征的丢失。为了克服这一问题,通常在原始输入图像的二维矩阵周围添加额外的边缘像素,即进行零填充(Padding)。如此一来,每个像素都能够获得相同的计算机会,确保了特征图不会丢失边缘区域的重要特征。

P a d d i n g = 1 \mathrm{Padding = 1} Padding=1,即扩展 1 1 1

在这里插入图片描述

P a d d i n g = 2 \mathrm{Padding = 2} Padding=2,即扩展 2 2 2

在这里插入图片描述

注意:上面两张动图中,蓝色矩阵是图像的二维矩阵,透明灰色矩阵是卷积核,绿色矩阵是特征图。



3.3 处理彩色图像

已知每张彩色图像都有三个通道,即三个二维矩阵。假设我们使用两组卷积核来提取图像特征,如下图所示:

在这里插入图片描述

其中一组卷积核对应提取出一个特征图,每组中的一个卷积核对应提取一个通道的特征。不难看出,有多少组卷积核就会有多少个特征图。特征图中的一个元素,等于三个通道的卷积结果之和,再加上偏置项。比如:上图中的 1 1 1 等于 1 + ( − 1 ) + 0 + 1 1+(-1)+0+1 1+(1)+0+1。偏置项 b i a s \mathrm{bias} bias 就是每组最后的那个 1 × 1 1\times 1 1×1 矩阵。

注意:特征图的个数等于卷积核的组数,而不是卷积核的个数!



4 池化层

在上一节中,我们讲到有多少组卷积核就会有多少个特征图。但是随着特征图的增多,我们必须考虑一个重要的问题:并非所有的特征图都是必需的。而且多余的特征图可能会带来如下两个问题:

  • 过拟合
  • 维度过高

为了解决这个问题,我们使用了池化层。

4.1 池化操作

池化层又称为下采样,其作用在于在卷积操作之后对特征图进行降维,通过提取最显著的特征信息来减少数据量,从而起到减小过拟合和降低维度的作用。

池化过程类似于卷积过程,也是让一个固定大小的窗口在图片上进行移动,每次我们选取窗口内最具代表性的特征。那么如何提取出最具代表性的特征呢?通常有以下两种方法。

最大池化

最大池化是指每次选取窗口内所有值的最大值,认为这个最大值就是当前位置最具代表性的特征。该过程如下图所示:
在这里插入图片描述
参数说明:

  • k e r n e l − s i z e = 2 \mathrm{kernel_{-}size} = 2 kernelsize=2:是指窗口的维度为 2 × 2 2\times2 2×2
  • s t r i d e = 2 \mathrm{stride} = 2 stride=2:是指窗口每次移动两格位置;
  • p a d d i n g = 0 \mathrm{padding} = 0 padding=0:是指零填充的圈数,如果值为 0 0 0 则表明没有扩展。

平均池化

平均池化是指每次选取窗口内所有值的平均值,即考虑了每个位置的值对该位置特征的影响。该过程如下图所示:

在这里插入图片描述
池化层的优点总结如下:

  • 减少参数量的同时保留图像的原始特征;
  • 有效地防止过拟合;
  • 为 CNN 带来平移不变性;

前两个优点我们之前已经介绍过了,那么什么又是平移不变性呢?



4.2 池化的平移不变性

如图 (a) 所示,两张图片的内容都是人脸,但是下图的人脸稍稍左移了一点。如图 (b) 所示,经过卷积操作后得到各自的特征图。

在这里插入图片描述

其中上图的眼睛特征的位置正常,下图的眼睛特征的位置稍稍左移了一点。尽管人类能够识别出眼睛的位置,但是当通过神经网络进行计算时,可能会引入误差,原因是网络未能在预期位置上正确地识别出眼睛。针对这种情况,应当采取何种措施呢?

如图 (c) 所示,使用池化层执行池化处理后,观察到尽管在池化前两张图像的眼睛特征位于不同位置,但经过池化处理后,这些特征的位置均统一。这极大地便利了后续神经网络的计算,并且体现了池化操作的平移不变性。



5 全连接层

假设在上述头部图像示例中,我们已经通过卷积操作和池化操作提取了眼睛、鼻子和嘴巴的特征。若要利用这些特征来判断图像是否为人体头部,需要对所有提取出的特征图进行 “展平” 操作,即将其维度转换为 1 × n 1\times n 1×n 的形式,该过程被称为全连接。如下图所示:

在这里插入图片描述

也就是说,全连接层将提取出的特征图展开成一维向量。随后通过计算产生一个概率值,该值表示原始图像是人体头部图像的概率。

个人理解:上图中每个特征图的维度是 5 × 5 5\times 5 5×5,展开成一维向量后的维度是 1 × 25 1\times 25 1×25,拼接起来送入神经元时的维度是 1 × 75 1\times 75 1×75



6 输出层

输出层用于对全连接层输出的一维向量进行计算,如下图所示:

在这里插入图片描述

其中的计算可能是线性的,也可能是非线性的。在深度学习中,鉴于通常需要处理多分类任务,输出层每个位置都会产生一个概率值,代表属于当前位置对应类别的概率。选择概率值最大的类别作为最终的识别结果。在训练过程中,通过不断调整网络的参数,提高识别的准确率。



相关文章:

深度学习 | CNN 基本原理

目录 1 什么是 CNN2 输入层3 卷积层3.1 卷积操作3.2 Padding 零填充3.3 处理彩色图像 4 池化层4.1 池化操作4.2 池化的平移不变性 5 全连接层6 输出层 前言 这篇博客不够详细,因为没有介绍卷积操作的具体计算;但是它介绍了 CNN 各层次的功能…...

解读|http和https的区别,谁更好用

在日常我们浏览网页时,有些网站会看到www前面是http,有些是https,这两种有什么区别呢?为什么单单多了“s”,会有人说这个网页会更安全些? HTTP(超文本传输协议)和HTTPS(…...

汽车零部件制造企业MES系统主要功能介绍

随着汽车工业的不断发展,汽车零部件制造企业面临着越来越高的生产效率、质量控制和成本管理要求。MES系统作为一种综合信息系统,能够帮助企业实现从订单接收到产品交付的全流程数字化管理,优化资源配置,提高生产效率,确…...

常见的五种聚类算法总结

常见的聚类算法总结 1. K-Means 聚类 描述 K-Means 是一种迭代优化的聚类算法,它通过最小化样本点到质心的距离平方和来进行聚类。 思想 随机选择 K 个初始质心。分配每个数据点到最近的质心,形成 K 个簇。重新计算每个簇的质心。重复上述步骤&…...

智能车存在网络安全隐患,如何应设计出更好的安全防护技术?

智能车网络安全防护技术的研究与设计 摘要:随着智能车技术的迅速发展,车辆的网络连接性不断增强,然而这也带来了诸多网络安全隐患。本文深入探讨了智能车面临的网络安全威胁,并提出了一系列创新的安全防护技术设计,旨…...

通讯的概念

通讯的概念 文章目录 通讯的概念1.通讯的基本概念2. 串行通讯与并行通讯2. 全双工、半双工及单工通讯3. 同步通讯与异步通讯4. 通讯速率 1.通讯的基本概念 通讯是指在嵌入式系统中实现数据交换的技术手段,它涉及到硬件与硬件、硬件与软件之间的信息传输。基本概念包…...

Centos7 rpm 安装 Mysql 8.0.28

Centos7 rpm 安装 Mysql 8.0.28 一、检查系统是否已经安装了Mysql 如果安装了则卸载 [rootiZbp1byzaznzn9jncxr010Z /]# rpm -qa | grep mysql[rootiZbp1byzaznzn9jncxr010Z /]# rpm -qa | grep mariadb mariadb-libs-5.5.68-1.el7.x86_64如果安装了 mysql ,maria…...

Linux 多进程编程详解

Linux 多进程编程详解 多进程编程是现代操作系统中一种重要的并发编程技术。通过在同一程序中运行多个独立的进程,可以实现并发处理,充分利用多核处理器的优势,提高程序的运行效率。本文将详细介绍Linux多进程的基本概念、创建方法、进程间通…...

C语言之大小端理解

目录 1前言2 大小端理解与区分3 大小端的识别和基本切换操作4 总结 1前言 在汽车CAN通讯报文中往往会接触到Intel类型和motorola类型,实际项目中涉及到多机通讯也会接触到大小端问题 2 大小端理解与区分 大端(Big_Endian) :低字节放在高地址小端(Little_Endian):…...

GIT相关操作,推送本地分支到远程仓库流程记录学习

git流程 切换到源文件夹:cd 源文件夹克隆远程仓库:git clone [ssh]进入项目文件夹:cd .\project\查看本地分支:git branch获取远程仓库更新,使远程同步:git fetch查看所有分支(包括远程分支&am…...

网络协议 — Keepalived 高可用方案

目录 文章目录 目录Keepalived 是实现了 VRRP 协议的软件Keepalived 的软件架构VRRP StackCheckersKeepalived 的配置Global configurationvrrp_scriptVRRP Configurationvrrp synchroization groupvrrp instancevirtual ip addressesvirtual routesLVS Configurationvirtual_s…...

前端报错adding CSS “touch-action: none“ to this element解决方案

目录 如图所示控制台出现报错: 原因: touch-action 介绍: 解决方案: 1.手动设置touch-action: 2.使用条件渲染: 3.CSS样式隔离: 4.浏览器兼容性: 5. 忽略警告 如图所示控制台…...

使用phpMyAdmin操作MYSQL(四)

一. 学会phpMyAdmin? phpMyAdminhttp://water.ve-techsz.cn/phpmyadmin/ 虽然我我们可以用命令行操作数据库,但这样难免没有那么直观,方便。所以接下来我们使用phpMyAdmin来操作MySQL,phpMyAdmin是众多MySQL图形化管理工具中使用…...

webpack配置代理请求

在 Webpack 中,可以通过配置devServer中的proxy选项来设置代理请求,以解决开发环境中的跨域问题或实现特定的请求转发逻辑。以下是一个常见的 Webpack 配置示例,展示了如何设置代理: module.exports {// 其他配置项...devServer…...

热门软件缺陷管理工具2024:专业评测与建议

国内外主流的10款软件缺陷管理工具软件对比:PingCode、Worktile、禅道、Tapd、Teambition、Tower、JIRA、Bugzilla、MantisBT、Trac。 在软件开发过程中,管理缺陷和漏洞常常成为一项挑战,尤其是在项目规模庞大时。选择一个高效的软件缺陷管理…...

冒泡,选择,插入,希尔排序

目录 一. 冒泡排序 1. 算法思想 2. 时间复杂度与空间复杂度 3. 代码实现 二. 选择排序 1. 算法思想 2. 时间复杂度与空间复杂度 3. 代码实现 三.插入排序 1. 直接插入排序 (1). 算法思想 (2). 时间复杂度与空间复杂度 (3). 代码实现 2. 希尔排序 (1). 算法思想 …...

【HarmonyOS学习】Calendar Kit日历管理

简介 Calendar Kit提供日历与日程管理能力,包括日历的获取和日程的创建能力。 Calendar Kit为用户提供了一系列接口来获取日历账户,并使用特定的接口向日历账户中写入日程。 如果写入的日程带有提醒时间则系统会在时间到达时向用户发送提醒。 约束点…...

RDMA 高性能架构基本原理与设计方案

RDMA的主要优点包括低延迟、高吞吐量、减少CPU负担和支持零拷贝网络。它允许数据直接在网络接口卡(NIC)和内存之间传输,减少了数据传输过程中的中间环节,从而显著降低了延迟。RDMA技术能够实现高速的数据传输,适用于需…...

【Springboot】事件机制发布与订阅的使用实践

文章目录 为什么要使用事件监听机制概念和原理使用场景用户注册系统实践案例1. 创建事件类2. 发布事件3. 监听事件3.1 通过注解EventListener实现监听3.2 通过实现ApplicationListener接口实现监听 4. 测试事件机制 总结 为什么要使用事件监听机制 在Springboot中,…...

新版网页无插件H.265播放器EasyPlayer.js如何测试demo视频?

H5无插件流媒体播放器EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,支持H.264与H.265编码格式,性能稳定、播放流畅;支持WebSocket-FLV、HTTP-FLV,HLS(m3u8&#xff0…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes&#xff0…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...