【深度学习】卷积神经网络(CNN)简介

devtools/2024/9/18 12:52:48/ 标签: 深度学习, cnn, 人工智能, 卷积神经网络

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


在这里插入图片描述

1. 前言

自 20 世纪 50 年代以来,人工智能研究人员一直在寻求开发能够理解视觉数据的系统。这一努力催生了计算机视觉领域。2012 年,多伦多大学的研究人员开发出 AlexNet,这是一个人工智能模型,其性能远远优于以前的图像识别算法,这是一个重大突破。AlexNet 由 Alex Krizhevsky 创建,以 85% 的准确率赢得了 2012 年 ImageNet 竞赛,远远超过亚军的 74%。这一成功是由 CNN 推动的,这是一种模仿人类视觉的神经网络
在这里插入图片描述
多年来,CNN 已成为图像分类、对象检测和分割等计算机视觉任务的基础。现代 CNN 使用 Python 等编程语言实现,并利用高级技术从图像中提取和学习特征。超参数、优化技术和正则化方法对于有效训练这些模型至关重要。

自 AlexNet 以来,人们开发了许多改进和新架构,例如 VGG、ResNet 和 EfficientNet,突破了 CNN 所能实现的极限。如今,CNN 在许多应用中都必不可少,从自动驾驶到医学图像分析。

此外,在本文中,您将了解 CNN 机器学习、CNN 算法和 CNN 深度学习,我们已涵盖这些主题,并且在文章结束时,您将清楚地了解卷积神经网络

本章节我们学习的目标:

  • 了解什么是卷积神经网络 (CNN) 以及它们如何模仿人类视觉来处理视觉数据。
  • 探索 CNN 的关键组件,包括卷积层、池化层和全连接层。
  • 了解 CNN 如何应用于各种计算机视觉任务,例如图像分类、对象检测和分割。
  • 了解超参数、优化技术和正则化方法在有效训练 CNN 模型中的重要性。

2. 什么是卷积神经网络(CNN)?

深度学习中,卷积神经网络 (CNN/ConvNet) 是一类深度神经网络,最常用于分析视觉图像。CNN 架构使用一种称为卷积的特殊技术,而不是像传统神经网络那样仅仅依赖于矩阵乘法。卷积网络使用一种称为卷积的过程,该过程结合了两个函数来显示一个函数如何改变另一个函数的形状。

在这里插入图片描述但我们无需深入数学就能理解 CNN 是什么或它是如何工作的。归根结底,卷积网络的作用是将图像简化为更易于处理的形式,同时又不丢失对获得良好预测至关重要的特征。

最重要的是,ConvNet 的作用是将 图像减少为更易于处理的形式,同时又不会丢失对于获得良好预测至关重要的特征。

2.1 卷积神经网络(CNN)的背景

CNN 最早是在 20 世纪 80 年代开发和使用的。当时,卷积神经网络 (CNN) 最多只能识别手写数字。它主要用于邮政部门读取邮政编码、邮政编码等。关于任何深度学习模型,需要记住的重要一点是,它需要大量数据进行训练,也需要大量计算资源。这是 CNN 在当时的一个主要缺点,因此 CNN 仅限于邮政部门,未能进入机器学习领域。用于训练神经网络的算法反向传播在当时的计算成本也很高。

2012 年,Alex Krizhevsky 意识到是时候恢复使用多层神经网络的深度学习分支了。大量数据的可用性、包含数百万张标记图像的更具体的 ImageNet 数据集以及丰富的计算资源使研究人员能够重振 CNN。

2.2 CNN 如何运作?

在介绍卷积神经网络(CNN)的工作原理之前,让我们先了解一下基础知识,例如图像是什么以及如何表示图像。RGB 图像只不过是一个具有三个平面的像素值矩阵,而灰度图像也是如此,但它只有一个平面。查看此图像以了解更多信息。
在这里插入图片描述
为了简单起见,我们先使用灰度图像来尝试了解 CNN 的工作原理。
在这里插入图片描述上图展示了什么是卷积。我们采用一个过滤器/内核(3×3 矩阵)并将其应用于输入图像以获得卷积特征。此卷积特征将传递到下一层。

在这里插入图片描述
对于 RGB 颜色通道,请观看此动画以了解其工作原理
在这里插入图片描述
CNN 层中的参数数量取决于接受域(过滤器内核)的大小和过滤器的数量。CNN 层中的每个神经元都从前一层的局部区域接收输入,该局部区域称为其接受域。接受域在输入上移动,计算点积并创建卷积特征图作为输出。通常,此图随后会经过整流线性单元 (ReLU) 激活函数。经典的 CNN 架构(如 LeNet)和更现代的架构(如 ResNet)都采用了这一基本原理。

卷积神经网络由多层人工神经元组成。

3. 人工神经元在 CNN 中的作用

人工神经元是对生物神经元的粗略模仿,是一种数学函数,可计算多个输入的加权和并输出激活值。当您在 ConvNet 中输入图像时,每一层都会生成多个激活函数,这些激活函数会传递到下一层进行特征提取。

4. CNN 中的特征提取

第一层通常提取水平或对角线边缘等基本特征。此输出将传递到下一层,该层检测更复杂的特征,例如角或组合边缘。随着我们深入网络,它可以识别更复杂的特征,例如物体、面部等。与循环神经网络不同,ConvNets 是前馈网络,可在一次传递中处理输入数据。
在这里插入图片描述
根据最终卷积层的激活图,分类层输出一组置信度分数(介于 0 和 1 之间的值),这些分数指定图像属于某个“类别”的可能性。例如,如果您有一个检测猫、狗和马的 ConvNet,则最后一层的输出是输入数据包含任何这些动物的可能性。梯度下降通常用作训练期间的优化算法,以调整输入层和后续层的权重。
在这里插入图片描述

5. 什么是池化层?

与卷积层类似,池化层负责减小卷积特征的空间大小。这是通过减小维度来降低处理数据所需的计算能力。池化有两种类型:平均池化和最大池化。到目前为止,我只使用过最大池化,没有遇到任何困难。
在这里插入图片描述
因此,我们在最大池化中所做的就是从内核覆盖的图像部分中找到像素的最大值。最大池化还可用作噪声抑制器。它会完全丢弃嘈杂的激活,并执行去噪和降维。

另一方面,平均池化返回内核覆盖的图像部分的所有值的平均值平均池化只是将降维作为一种噪声抑制机制。因此,我们可以说最大池化的表现比平均池化好得多。
在这里插入图片描述

6. 卷积神经网络(CNN)的局限性

尽管CNN功能强大且资源复杂,但它们提供了深入的结果。从根本上讲,它只是识别那些非常微小且不显眼以至于人眼无法注意到的模式和细节。但在理解图像内容方面,它失败了。

让我们看看这个例子。当我们将下面的图片传递给CNN时,它会检测到一个 30 多岁的人和一个大概 10 岁左右的孩子。但当我们看同一张图片时,我们开始考虑多种不同的场景。也许是父子外出、野餐或露营。也许是在校园里,孩子进了一球,他爸爸很高兴,就把他抱了起来。
在这里插入图片描述
在实际应用中,这些局限性更加明显。例如,CNN 被广泛用于审核社交媒体上的内容。但尽管它们训练的图像和视频资源非常丰富,但它仍然无法完全阻止和删除不适当的内容。事实证明,它在 Facebook 上标记了一座有 30,000 年历史的裸体雕像

多项研究表明,在 ImageNet 和其他流行数据集上训练的 CNN 在不同的光照条件和从新角度观察物体时无法检测到物体。

这是否意味着 CNN 毫无用处?尽管卷积神经网络存在局限性,但不可否认的是,它们已经引发了人工智能的一场革命。如今,CNN 已用于许多计算机视觉应用,例如面部识别图像搜索和编辑增强现实等。正如 ConvNets 的进步所表明的那样,我们的成就是卓越的和有用的,但我们距离复制人类智能的关键组成部分还很远。

7. 总结

在本文中,我们探索了卷积神经网络(CNN),深入研究了它们的功能背景池化层的作用。尽管 CNN 在图像识别方面非常有效,但它也存在局限性,包括易受对抗性攻击计算要求高。CNN 使用损失函数进行训练,该函数测量预测输出与真实值之间的差异。在特定图像数据上微调预训练模型是一种常见的做法,可实现更好的性能。

此外,CNN 还可用于分割任务,即标记图像中的每个像素。与传统的多层感知器不同,CNN 的网络架构旨在利用图像数据中的空间和时间依赖性。总体而言,CNN 彻底改变了计算机视觉领域,并继续成为一个活跃的研究领域。尽管 CNN 在图像识别方面非常有效,但它也有局限性,包括易受对抗性攻击和高计算要求。

希望您喜欢这篇文章,通过本文您应该也清楚机器学习中的 CNN、CNN 算法和深度学习中的 CNN了!


http://www.ppmy.cn/devtools/91891.html

相关文章

c# 排序、强转枚举

List<Tuple<double,int>> mm中doble从小到大排序 mm本身排序 在C#中&#xff0c;如果你有一个List<Tuple<double, int>>类型的集合mm&#xff0c;并且你想要根据Tuple中的double值&#xff08;即第一个元素&#xff09;从小到大进行排序&#xff0c;同…

超越链端:Web3的无边界技术革命

Web3&#xff0c;作为互联网技术的第三代变革&#xff0c;正以其去中心化、开放透明的特性&#xff0c;重新定义着我们的数字生活。在这一背景下&#xff0c;“链端”概念逐渐成为热点&#xff0c;意味着我们不仅仅局限于区块链技术本身&#xff0c;而是探索其在更广泛领域的应…

对webpack的理解

作用 是一个前端代码打包工具。 打包流程 主要是: 初始化参数&#xff0c;编译&#xff0c;找到入口entry&#xff0c;遍历模块以及它依赖的模块&#xff0c;预处理loader&#xff0c;模块编译&#xff0c;然后根据依赖关系输出到指定的路径和目录下。 模块 loader: 预处理器&a…

Android 13修改蓝牙默认名称

Andorid 13 原生系统&#xff0c;蓝牙默认名称是设备型号 PRODUCT_MODEL 。 修改蓝牙默认名称&#xff0c; 找到对应产品的 device.mk &#xff0c;添加如下 #custom bluetooth name PRODUCT_PROPERTY_OVERRIDES \bluetooth.device.default_name"Cus_bt_name"追踪…

后端调优——分布式锁选型——入门

文章目录 引言正文分布式锁的定义分布式锁的具体应用场景如何实现分布式锁主动轮询型分布式锁实现思路一、MySQL分布式锁二、Redis分布式锁 监听回调型分布式锁Etcd分布式锁Zookeeper分布式锁 锁的对比 总结 引言 最近面试&#xff0c;一直被问到分布式锁&#xff0c;然后仅仅…

非线性表之堆的实际应用和二叉树的遍历

目录 前言&#xff1a;前一篇我已经介绍过了二叉树和堆的介绍和相关代码的实现 一、堆的实现 1.1堆向上调整算法 1.2堆向下调整算法 二、堆的应用 2.1堆的排序 2.2TOP-K问题 三、二叉树的遍历 3.1 二叉树的创建 3.2遍历介绍 3.3前序遍历 3.4中序遍历 3.5后序遍历 …

雷达气象学(4)——雷达参数和雷达气象方程

文章目录 4.1 与脉冲相关的参数4.1.1 电磁波的波长4.1.2 脉冲重复频率&#xff08;PRF&#xff09;和脉冲重复周期&#xff08;PRT&#xff09;4.1.3 脉冲宽度和脉冲长度4.1.4 脉冲发射功率 4.2 与天线相关的参数4.2.1 天线方向图和波束宽度4.2.2 天线增益 4.3 雷达气象方程4.3…

java学习记录

一、修改数据 1.当修改数据时&#xff0c;会先判断该属性是否存在或者是否为空串 <update id"editStaffItem">update staff<set><if testname!null and name!"">name#{name},</if><if test"salary!null">salary#…

麻雀搜索算法(SSA)与支持向量机(SVM)结合的预测模型(SSA-SVM)及其Python和MATLAB实现

### 引言 随着科技的快速发展&#xff0c;锂离子电池被广泛应用于电动汽车、便携式电子设备以及可再生能源存储等领域。有效预测锂离子电池的剩余寿命&#xff08;Remaining Useful Life, RUL&#xff09;对于提升电池的使用安全性和经济性具有重要意义。传统的RUL预测方法往往…

单一职责原则(SRP)

目录 1、定义 2、优点 3、原则的重要性 4、 示例 5、注意事项 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;是面向对象设计中的一项重要原则&#xff0c;属于 SOLID 原则之一。它的核心思想是&#xff1a;一个类应该只有一个引起它变化的原因&am…

【人工智能】AI绘画:科技与艺术交汇的新时代

文章目录 &#x1f34a;AI绘画:开启艺术创作新纪元AI绘画技术发展&#xff1a;算法与艺术的完美交融AI绘画的工作原理与创意生成AI绘画的应用 AI绘画工具介绍 &#x1f34a;AI绘画:开启艺术创作新纪元 人工智能正以前所未有的力量重塑我们的世界&#xff0c;而AI绘画作为这股科…

Python 学习路径:从零基础到高级应用

当然可以&#xff01;学习 Python 是一个循序渐进的过程。下面是一个分阶段的学习流程&#xff0c;适合初学者参考&#xff1a; 第一阶段&#xff1a;基础入门 目标&#xff1a; 理解 Python 基础语法&#xff0c;能够编写简单的程序。 安装 Python&#xff1a; 下载并安装最…

Waterfox vG6.0.8 官方版下载及安装步骤(响应速度非常快的浏览器)

前言 Waterfox 水狐浏览器&#xff0c;从字面上我们可以轻松的了解该款浏览器的一些特点。Waterfox是通过Mozilla官方认证的纯64位版火狐浏览器&#xff0c;而Waterfox 10采用Firefox 10官方源码编译而成&#xff0c;改进了大内存和64位计算的细节&#xff0c;在64位Windows系…

【实现100个unity特效之19】使用ShaderGraph实现Unity 2D水

最终效果 文章目录 最终效果前言开始新增无光照影响的shaderGraph半透明效果&#xff0c;并且有一些颜色的变化其他办法更加复杂的2d水曲线河流不新建相机的方法实现2d水和物理交互效果&#xff08;Camera Sorting Layer Texture的使用&#xff09;参考完结 前言 先粗略记录一…

数据库 视图 存储过程

视图&#xff08;很少用&#xff09; 在SQL中&#xff0c;创建视图&#xff08;View&#xff09;是一种将SELECT查询的结果保存为一张虚拟表的方法。视图并不在数据库中存储数据&#xff0c;而是保存了一个SELECT查询。当从视图中读取数据时&#xff0c;数据库执行视图中的SEL…

UniApp的神器-开启前端开发的全新篇章

本文介绍了DIYGW UniApp可视化工具作为一款低代码开发平台的特点和优势。该工具采用拖拽式设计和模块化开发&#xff0c;能够快速转化想法为可运行应用&#xff0c;并支持多种平台部署。它具有所见即所得的设计体验、丰富的组件库、前后台通信模块和跨平台兼容性等特点。使用该…

无法访问jakarta.servlet.http.HttpServletRequest

1、问题 无法访问jakarta.servlet.http.HttpServletRequest2、原因 JDK1.8升级到高版本后&#xff0c;需要手动引入jakarta.servlet-api 3、解决 增加依赖 <dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</ar…

JVM知识总结(性能调优)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 性能调优 何时进行JVM调优&#xff1f; 遇到以下情况&#xff0c…

从C++到游戏(学习路径)

1. 概念设计&#xff08;Concept Design&#xff09; 主题与故事线&#xff1a;这是游戏灵魂的起源&#xff0c;决定了游戏的基调、情感表达和玩家的游戏体验。工具&#xff1a;手绘草图可以快速捕捉想法&#xff0c;而Adobe Illustrator、Photoshop等专业软件则能提供高质量的…

无人机竞速赛

速度与激情的空中盛宴&#xff0c;无人机竞速赛再次点燃我们的肾上腺素&#xff01; 想象一下&#xff0c;数百架智能飞行器在蓝天下疾驰&#xff0c;如同未来战士穿梭于现实与虚拟的边界&#xff0c;每一次转弯、加速都精准至极&#xff0c;挑战着物理与技术的极限&#xff0…