深度学习】--卷积神经网络

 ​​​​​​

卷积神经网络

卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,特别适用于处理具有网格结构的数据。主要目的是自动地、层次化地从原始数据中学习有效的特征表示,以完成特定的任务,如图像识别、分类、检测、分割等。

一、画面不变性

什么是画面不变性呢?我们知道一个物体,不管将其如何变换旋转都能够将其识别为同一个物体,这就是画面不变性。比如:

不管上图中物体如何的变换,我们都希望所建立的网络可以尽可能的满足这些不变性特点。

二、图像识别
我们知道传统的神经网络,训练时会将图形展开,使得在训练时网络模型的记忆比较刻板,比如下图中,我们进行训练时让神经网络记住正确的目标,但是当正确的图形变换一个位置时就无法识别了。

那么对于传统神经网络该怎么解决这个问题呢?

解决办法是:用大量物体位于不同位置的数据训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力。

三、卷积网络

结构

卷积神经网络的结构:由输入层、卷积层、激活层、池化层、全连接层、输出层组成

1. 原理
类比自然界的动物,不同的物种有自己独有的特征,比如小狗的叫声是“汪汪汪”,小猫是“喵”,这就是这两个动物的区别,我们人类也可以通过这种方法来区分二者。

同样的,卷积神经网络也是同样的道理,卷积网络将图片划分出几个特征点,在识别图片时,找寻图片中是否有符合特征点的信息。

比如上图中,卷积网络如何将右边手写的“x”图片识别成x?

将标准的x图片划分出三个特征,x图片由上方的三个小部分组成,手写“x”图片中有包含第二部分的特征,没有另外两部分特征,那这我们怎么判断它到底是还是不是呢?

就像是每个动物都有自己重要的特征,我们可以通过调整三个部分特征的权重,来决定所识别的图片是否是x图片。

所以,综上所述:卷积就是对图像(不同的数据窗口数据)和卷积核(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

2. 卷积层
卷积操作:
卷积操作中需要注意的:

步长stride:每次滑动的位置步长。
卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数以及滤波器的个数。
填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。

对于卷积层,可以形象的将卷积核当作是每个人的眼睛,每个眼睛都能得到一个特征图,不同的眼睛(卷积核)看到的图片是不一样的,这样我们就能得到多个不同的特征图。

寻找目标特征:
我们都知道卷积是通过与卷积核的内积得到特征图,但是,我们如何精准的找到卷积出来的特征图是不是我们的目标呢?

以鸢尾花为例:

我们的目标是识别图片中的花朵是不是鸢尾花,那我们卷积时寻找的特征图,当然得是关于鸢尾花的特征,尽量减少其余噪声的影响。这就要通过调整卷积核中的参数来调整特征目标:

一开始的卷积核是随机的,在最后的结果中同正确结果做比对,如果有误差,再返回卷积层中,更新调整卷积核的参数重新计算特征图,使得最后的特征图是目标特征。

特征图计算:
计算图片经过卷积后获得的特征图大小。

3. 池化层
池化层的作用:
一种降采样,减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。

常见的池化层:
最大池化、平均池化、全局平均池化、全局最大池化。

平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。

最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。

通常来说,CNN的卷积层之间都会周期性地插入池化层。

我们偏常用的池化方法是最大池化,最大池化的原理分析:
最大池化的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的特征图中有对于识别物体不必要的冗余信息。

观察上图,我们之前就提到过,卷积神经网络可以将不同位置的相同物体给识别成同一个物体,在这里就给体现出来了。我们看到第一行三个图片中,目标物体(黑色标注)在图片的不同位置,它们经过卷积之后,得到了第二行的三个特征图,我们再将特征图进行最大池化,发现池化后的压缩结果都为3,将其识别为了同一个特征,其余的噪声影响都被处理了。

池化层操作方法:
与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。

4. 全连接层
当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间。 通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。

四、感受野

在卷积神经网络中,感受野(Receptive Field)是一个核心概念,它指的是网络中每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。换句话说,感受野描述了某一层神经元所“看到”的输入图像的区域范围。

例如图片是3通道:

卷积核为3个7 x 7的,则卷积核所需要的参数个数为:3 x (3 x 7 x 7)=441个

卷积核为3个3 x 3的3层,则卷积核所需要的参数个数为:3 x (3 x 3 x 3)+3 x (3 x 3 x 3) +3 x (3 x 3 x 3) =243个

同样的效果,后者需要调整的参数更小,自然使用后者更好啦!

总结
本篇介绍了卷积神经网络的结构以及它的优点:

卷积神经网络能够将变换的物体识别出来。
卷积神经网络的结构:由输入层、卷积层、激活层、池化层、全连接层、输出层组成。
什么是感受野。
 

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

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

相关文章

RK3588部署YOLOv8姿态估计

1. YOLOv8姿态估计与部署 姿态估计(Pose estimation)是一项涉及识别图像中关键点位置的任务。 关键点可以表示对象的各个部分,如关节、地标或其他独特特征,关键点的位置通常表示为一组2D[x, y]或3D[x, y, visible]坐标。 YOLOv8-Pose人体姿态估计,会先检测出图像中…

信创之-麒麟v10服务器安装tengine(已完成)

之前的文章太长了,所以单独写背景:java8springbootnginxredissqlserverwindows server2000目前java8已经更换,windows也已经更换,sqlserver也已经更换成dm8其实java的静态文件目录,可以很好处理前端网站了,…

Redis进阶(上)

Redis系统架构中各个处理模块是干什么的? Redis 系统架构 本课时,我将进一步分析 Redis 的系统架构,重点讲解 Redis 系统架构的事件处理机制、数据管理、功能扩展、系统扩展等内容。 事件处理机制 Redis 组件的系统架构如图所示,主…

【K8s】整体认识K8s之监控与升级/ETCD的备份和恢复/kustomization/CRD

metrics-server 先说一下metrics-server,这是一个聚合器,专门用来显示集群的资源使用情况,主要是内存和cpu。 安装 metrics-server kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.0/comp…

【数据分享】多份土地利用矢量shp数据分享-澳门

而今天要说明数据就是多份土地利用矢量shp数据分享-澳门。数据介绍▲ 土地利用数据(2025年)▲土地利用数据(2018年)▲ 30m土地利用数据(2023年)▲ 公路铁路道路河流水系数据概况其他概况注:本文…

增强现实—Gated-attention architectures for task-oriented language grounding

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

CC攻击的技术分析与防御策略

CC攻击(Challenge Collapsar Attack)是一种针对Web应用的拒绝服务攻击方式,其主要通过模拟正常用户行为来消耗服务器资源。为了更好地理解这种攻击,让我们详细分析其技术原理及防御策略。CC攻击的技术原理CC攻击主要是通过发送大量…

【图论】分层图

一、分层图的核心思想 分层图是一种将图的不同状态拆分为多个“层”的建模方法,每层对应一种特定状态。通过这种方式,可以将复杂的状态转移问题转化为多层图中的最短路径问题。 核心特点: 层内边:表示普通操作(如正常行…

当稳定币开始生息:USDT0 与 Berachain 的二次进化故事

如果说过去几年,稳定币是 DeFi 世界里最安稳的一块基石,那么 2025 年的 Berachain 正在把它们重新塑造成一种新的资产类型。在这条新兴的公链上,稳定币不再只是 “资金的搬运工”,而是摇身一变,成为能生息、能博弈、能…

Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析

Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析 消息队列作为分布式系统中常见的异步解耦组件,在高并发场景下对可用性和性能提出了极高的要求。本文基于生产环境需求,深入分析 Kafka、RabbitMQ 与 RocketMQ 三大主流消息中间件在高…

深入理解 HTTP 与 HTTPS:区别以及 HTTPS 加密原理

目录 一、HTTP 与 HTTPS 的基本概念 二、HTTP 与 HTTPS 的核心区别 三、为什么需要 HTTPS? 四、HTTPS 的加密通信原理(核心) 1. 客户端发起 HTTPS 请求 2. 服务端返回 SSL/TLS 证书 3. 客户端验证证书 4. 客户端生成对称密钥并用公钥…

零售行业的 AI 革命:从用户画像到智能供应链,如何让 “精准营销” 不再是口号?

AI 浪潮下的零售变革​在科技飞速发展的今天,人工智能(AI)正以前所未有的态势席卷全球,深刻地改变着各行各业的运营模式和发展轨迹,零售行业自然也难以置身事外。AI 技术凭借其强大的数据处理能力、精准的分析预测能力…

PyTorch 面试题及详细答案120题(96-105)-- 性能优化与调试

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面试题-专栏总目录 文章目录 一、本文面试题目录 96. 如何查看PyTorch模型的…

Linux 孤儿进程 (Orphan Process)

🎁个人主页:工藤新一 🔍系列专栏:C面向对象(类和对象篇) 🌟心中的天空之城,终会照亮我前方的路 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录孤…

Linux Tun/Tap 多队列技术

🔥 Linux Tun/Tap 多队列技术 引用:Linux tun/tap 驱动多队列模式(C/C) 📖 引言 Tun/Tap 是 Linux 内核提供的虚拟网络设备,广泛应用于 VPN、虚拟化、网络隧道等领域。传统单队列模式在高吞吐量场景下存…

docker 启动一个clickhouse , docker 创建ck数据库

1. 拉镜像:docker pull clickhouse/clickhouse-server2. 创建容器并且启动命令:docker run -d --name clickhouse-server \-p 8123:8123 -p 9000:9000 \clickhouse/clickhouse-server3. 日志文件的映射,可以自己配置下,目前创建的…

合约服务架构-OOP 方式

文章目录前言🎯 经典的面向对象编程!1. 🏗️ **封装 (Encapsulation)**2. 🧬 **继承 (Inheritance)**3. 🎭 **多态 (Polymorphism)**4. 🎨 **抽象 (Abstraction)**🏛️ 设计模式的应用1. **工厂…

C# 生成器模式(一个投资跟踪程序)

一个投资跟踪程序 我们考虑一个稍微简单一点的例子,在这个例子中,用一个类构造一个用户界面。假设我 们要编写一个程序来跟踪投资的效益。我们有股票、债券和基金等投资项目,对每一种投资项 目都要显示持有量的列表,这样就能够选择…

【DBCExcelConvent】CAN报文解析辅助工具之DBC与Excel互转

前言 CAN总线翻译文件DBC是整车解析过程中非常核心的一部分,因此为了能被各大CAN工具解析,它也有自己的一套编码规则。但并不是无时无刻都有条件打开该文件,对于工程师而言。其实比较直观和通用的大多数还是Excel表格。因此,为了打…

如何将iPhone日历传输到电脑

iPhone日历是i设备上一个非常出色的内置应用程序,可以帮助你创建、查看和管理日程或事件。对于所有iPhone用户来说,在iPhone日历上添加新事件非常容易。然而,当涉及到将日历从iPhone传输到电脑时,许多人可能会感到困惑&#xff0c…