网站首页 > 技术文章 正文
卷积神经网络,也称为 ConvNets 或 CNN,是一类专门设计的深度神经网络,专为擅长计算机视觉任务而设计。深度学习(使用深度神经网络的学习)已经证明自己是一个非常强大的工具,因为它能够处理大量数据。这主要是由于使用了隐藏层,使这些网络超越了传统技术。
自 1950 年代人工智能诞生以来,研究人员一直在努力创建一个能够理解和处理图像等视觉数据的系统。2012 年,多伦多大学的一组研究人员开发了一种人工智能模型,该模型大大超越了最先进的图像识别算法,该领域发生了一场革命。 这种深度学习架构被称为 AlexNet(以其创建者 Alex Krizhevski 的名字命名),在 2012 年 ImageNet 计算机视觉竞赛中示了令人难以置信的 85% 的准确率,赢得了 2012 年 ImageNet 计算机视觉竞赛。
常规人工神经网络的架构
在常规神经网络中,有三种层:
- 输入层:这是向模型提供输入的层。该层中的神经元数量等于数据中的特征总数(图像中的像素数)。
- 隐藏层:然后将输入层的输入输入到一个或多个隐藏层中。隐藏层的数量取决于模型的性质和数据大小。每个隐藏层可以具有不同数量的神经元,这些神经元通常大于特征的数量。每一层的输出是通过将前一层的输出与该层的可学习权重相乘的矩阵计算的,然后通过添加可学习偏差,然后是激活函数,使网络成为非线性的。
- 输出层:然后将隐藏层的输出输入到逻辑函数(如 Sigmoid 或 SoftMax)中,该函数将每个类的输出转换为该类的概率分数。
将数据馈送到模型中,将其传递到隐藏层,然后从那里进入输出的过程称为前馈。然后,使用损失函数计算误差(或损失)。一些常见的损失函数是分类交叉熵、铰链损失和平方铰链损失。损失函数衡量网络的性能。之后,通过计算导数反向传播到模型中。这一步称为反向传播,基本上是用于最小化损失。
CNN 架构
卷积神经网络也由多层组成,但它们是专门的,并且以精确的顺序工作。五种基本类型的层是输入层、卷积层、池化层、密集(或完全连接)层和输出层。
它是如何工作的?
在讨论 CNN 之前,先介绍一下基础知识,例如图像是什么以及它在计算机中的表示方式。RGB 图像只是具有三个平面的像素值矩阵,而灰度图像只有一个平面。下图清楚地说明了这一点:
卷积层使用称为内核(或滤波器)的东西对图像进行卷积以获得卷积特征。内核从输入图像的左上角扫到右下角,通过简单的加法计算每个卷积特征。下面以灰度(为简单起见)进行说明:
在上图中,取一个内核(在本例中为 3x3 矩阵)并将其应用于图像左上角到右下角的输入图像。在这里,位于第一行和第三列。内核中的数字乘以输入图像相关部分中的相应数字。然后将结果相加并放置在卷积特征矩阵中的相应位置。然后,这个复杂的特征被传递到下一层。
上图显示了内核(在图像中不可见)如何从左上角扫过右下角,计算相关值并将它们存储在错综特征矩阵中的适当位置。
以显示了卷积在三平面或 RGB 图像中的工作原理。
有三个内核通道,每个颜色通道(R、G 和 B)一个。在每个步骤中,内核以 +1 的偏差相加,以获得输出并存储在输出矩阵中。
卷积神经网络由多层人工神经元组成。人工神经元实际上只是计算多个输入和输出的加权和以及激活值的数学函数。在 ConvNet 的情况下,每一层都会生成多个激活函数,这些激活函数会传递到下一层。
提取特征的过程以分层方式工作,就像人类的视觉皮层一样。第一层通常提取边缘等基本特征。然后,该输出被传递到一个更复杂的层,该层可能会提取角或组合边缘。当我们进入最后几层时,网络开始识别更复杂的特征,如鼻子和下巴,最终识别面部、物体等。
最终或分类图层输出一组置信度分数(介于 0 和 1 之间的值),这些分数指定图像属于某个“类”的概率。例如,如果您有一个检测猫、狗和马的 ConvNet,则最后一层的输出是输入图像包含这些动物中的任何一种的可能性。
什么是池化层?
池化图层负责减小卷积要素的空间大小。这样做是为了通过减小维度来降低处理数据所需的计算能力。有两种类型的池化:平均池化和最大池化。
在最大池化中,我前被内核覆盖的图像部分找到像素的最大值。如下图所示:
平均池化顾名思义。它不是从覆盖区域中获取最大值,而是计算平均值并将其存储在输出矩阵中。
后续步骤
在池化层之后,有一个称为展平化的过程。在这里,生成的特征图在卷积层和池化层之后被展平为一维向量,因此它们可以传递到完全链接的(密集)层中进行分类或回归。
CNN的局限性
尽管 CNN 的功能和资源很复杂,但它们提供了深入的结果。归根结底,它只是识别那些非常微小和不显眼的模式和细节,以至于人眼不会注意到它们。但是当涉及到理解图像的内容时,它就失败了。
猜你喜欢
- 2024-09-29 图像识别(七):卷积神经网络 卷积神经网络 简书
- 2024-09-29 「动手学计算机视觉」第十五讲:卷积神经网络之LeNet
- 2024-09-29 卷积神经网络与Transformer结合,视频帧合成新架构
- 2024-09-29 用CNN做基础模型,可变形卷积InternImage实现检测分割新纪录
- 2024-09-29 卷积神经网络图片分类模型之Inception v1
- 2024-09-29 利用pytorch CNN手写字母识别神经网络模型识别多手写字母(A-Z)
- 2024-09-29 paddle几行代码轻松实现CNN卷积神经网络在MNIST上的图像分类
- 2024-09-29 级联金字塔结构卷积神经网络 卷积神经网络结构示意图
- 2024-09-29 人工智能Keras CNN卷积神经网络的图片识别
- 2024-09-29 图像的处理原理:CNN(卷积神经网络)的实现过程
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)