母亲节祝福语 三明治的做法 红烧排骨的家常做法 小米粥的做法 小龙虾的做法 大闸蟹的做法 鲜贝的家常做法 卷心菜的做法 苹果派的做法 冬瓜的做法大全家常菜
当前位置: 首页 > 生活百科 >

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

595次浏览     发布时间:2024-04-17 18:14:47    

什么是卷积神经网络?

卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习架构,它接受图像作为输入,应用卷积和池化操作,然后通过全连接层和激活函数返回输出。这个输出通常包含图像内容的分类信息或关于图像中不同物体位置的信息。与传统的神经网络不同,传统神经网络主要依赖于矩阵乘法,而CNN利用一种称为卷积的技术。数学上,卷积是一种将两个函数组合起来创建第三个函数的操作,表示一个函数如何改变另一个函数的形状。卷积神经网络的工作过程还包括池化和全连接层以及激活函数等进一步处理阶段,以返回预测结果。下面是一个典型的CNN架构图:

卷积神经网络的卷积层通过卷积

CNN总体架构

的过程有效地扫描图像并提取关键特征,如边缘、纹理和形状。这些特征然后通过多个层传递并使用池化和激活函数等技术进行处理,从而得到原始图像的紧凑且信息丰富的表示。这个紧凑表示然后作为网络的全连接层的输入,用于进行最终的预测。

了解卷积的数学细节可能会有所帮助,但并不是理解CNN算法在深度学习中的整体概念所必需的。

在高层次上,CNN旨在将图像转换为神经网络可以理解的表示,同时保留能够进行准确预测所需的重要特征。

CNN与前馈神经网络的区别

要正确理解CNN,有必要考虑它的前身:前馈神经网络。

前馈神经网络是一种在单次传递中处理数据的神经网络类型,输入经过多个层次后达到输出。当涉及到图像处理时,前馈网络存在一个主要限制:过拟合的风险。

图像可以表示为具有形状(行 * 列 * 通道数)的像素值矩阵。一个典型的实际图像大小至少为200 * 200 * 3个像素。将图像输入前馈神经网络的一种方法是将图像展平为一个一维矩阵。然而,这将需要大量的神经元和相应数量的权重在第一个隐藏层。这导致了大量的参数,增加了过拟合的风险。

相反,卷积神经网络以一种不同的方式处理图像。与将图像展平并在一次传递中处理的前馈神经网络不同,CNN一次处理图像的小部分,并移动到整个图像上。这使得网络能够学习图像的重要特征,同时使用较少的神经元和较少的参数。这种方法使得CNN比前馈神经网络更高效,也更不容易过拟合。

卷积神经网络的工作原理

在深入研究卷积神经网络的内部工作之前,理解图像的基本概念和其如何表示是很重要的。

图像可以表示为像素值矩阵,每个像素具有特定的颜色值。RGB图像是最常用的图像类型,有三个表示红色、绿色和蓝色颜色通道的平面。而灰度图像只有一个平面,表示像素的强度。

三通道的RGB图像

一个图像中的像素数量决定了其分辨率,分辨率较高的图像具有更多的像素和更详细的信息。

现在我们已经讨论了所需的背景知识,我们需要深入研究CNN的工作原理。让我们通过使用灰度图像的示例来解释,因为它们的结构不像RGB图像那样复杂。

什么是卷积?

卷积的计算过程

单步卷积过程


卷积是一种将小矩阵(称为滤波器或卷积核)应用于输入图像以提取重要特征的过程。滤波器在图像上移动,每个位置的值与图像中的相应值相乘,然后将结果相加。

这个过程产生一个“卷积特征”,然后传递给下一层进行进一步处理。下面是一个动画,显示了该过程应用于一个5x5像素数据网格:


卷积如何工作的动画

卷积神经网络由一系列相互连接的人工“神经元”层组成。这些人工神经元是数学函数,它们接受多个输入,对它们进行加权,然后返回一个激活值。

ConvNet的第一层负责识别基本特征,如边缘、角点和其他简单形状。随着图像通过连续的层传递,网络可以通过在前面的层收集的信息上构建,检测到更复杂的特征,如物体和人脸。随着图像在网络中进一步处理,它可以识别更复杂的特征,如物体和人脸。

卷积神经网络的最后一个卷积层生成一个“激活图”。在分类任务中,例如,分类层使用此图来确定输入图像属于特定“类”的可能性。

这种可能性表示为一组置信度分数,取值范围从0到1。例如,如果ConvNet旨在识别猫、狗和马,那么最后一层的输出将是输入图像包含这些动物的概率。值越高,图像包含相应类别的可能性就越大。

卷积神经网络在目标检测中的应用

CNN可以用于目标检测,这是一项涉及在图像或视频中定位和识别对象的任务。CNN的输出将是图像中对象周围的一组边界框,以及表示每个对象是什么以及网络对预测的置信度分数的类标签。

有多种方法可以使用CNN进行目标检测,但常见的方法是使用两阶段框架,如流行的R-CNN(Regions with Convolutional Neural Networks)系列模型。在第一阶段,网络用于提议图像中的候选对象区域,称为“区域提议”。然后,这些区域提议通过第二阶段进行处理,其中使用完全连接的网络对区域中的对象进行分类并细化边界框。最近的方法,如YOLO(You Only Look Once)和RetinaNet,使用单阶段方法,其中网络直接从输入图像中预测边界框、类标签和置信度分数。这些模型往往比两阶段方法更快,但通常具有稍低的准确性。

无论具体的架构如何,使用CNN进行目标检测的主要思想是利用卷积层从图像中提取丰富的、具有辨别力的特征,然后使用这些特征对图像中的对象进行预测。

卷积神经网络的层次结构

在本节中,我们将全面介绍构建卷积神经网络架构所需的常用层次。我们将检查组成CNN的各种层次类型:池化层、激活函数层、批归一化层、dropout层和分类层。让我们开始吧!

汇聚层(池化层)

汇聚层与前面讨论的卷积层类似,它减小了卷积特征的空间大小。

这种空间大小的减小是通过下采样卷积特征实现的。这既降低了处理数据所需的计算能力,又增加了特征中的抽象级别。

CNN中常用的两种池化技术是平均汇聚和最大汇聚。

最大汇聚过程的动画

最大汇聚通过选择像素中窗口覆盖的部分中的最大值来减小卷积特征的空间大小。

这种技术不仅降低了处理数据所需的计算能力,还起到了噪声抑制的作用,丢弃了嘈杂的激活值,并进行了降维。

另一方面,平均汇聚返回窗口覆盖部分的所有值的平均值。它也起到了降维的作用,但缺乏最大汇聚的噪声抑制能力。


最大汇聚和平均汇聚计算的输出


激活函数层

激活函数层有助于网络学习输入和输出之间的非线性关系。它负责在网络中引入非线性,并允许它对数据中的复杂模式和关系进行建模。

激活函数通常应用于网络中每个神经元的输出。它接受输入的加权和并产生一个输出,然后传递给下一层。

在CNN中最常用的激活函数有:

  • ReLU(Rectified Linear Unit)
  • Sigmoid(S型函数)
  • 双曲正切(tanh)

ReLU是CNN中常见的选择,因为它在计算上很高效,并倾向于产生稀疏的输入数据表示。它返回输入值(如果为正)或返回0(如果为负)。Sigmoid和tanh是其他非线性函数,但在CNN中使用得不如ReLU广泛,因为当输入较大时可能产生接近于0的梯度。激活函数层可以被视为CNN的“大脑”,在其中输入被转化为数据的有意义的表示。它是一个基本组件。

有关激活函数的更多信息,请查看我们全面的激活函数指南。

批归一化层

批归一化(Batch Normalization,BN)层通常在卷积神经网络中使用,以使每个神经元的输入均值为零,方差为1。这有助于稳定学习过程,并防止训练过程中的内部协变量转移问题。

BN使用输入数据批次的均值和标准差来对每个神经元的输出进行标准化,通常应用于卷积和全连接层之后。

批归一化层对CNN具有几个积极的影响:

  • BN可以通过减少内部协变量转移并允许更高的学习速率来加速训练过程。
  • BN有助于正则化模型,使其更不容易过拟合。
  • BN已被证明可以提高CNN的泛化性能,使其能够在看不见的数据上获得更好的性能。
  • BN有助于减少需要调整的超参数的数量,例如学习率。这将简化训练过程并改善泛化能力。
  • BN使模型对权重的初始值不太敏感。

总而言之,批归一化是一种强大的技术,在CNN中被广泛使用,用于稳定学习过程并提高模型的性能。它对每个神经元进行标准化,减少了内部协变量的转移,并对模型进行了正则化,从而提高了泛化性能。

批量归一化的图示

Dropout层

dropout层使用正则化技术防止过拟合。它通过在每个训练迭代中随机将一定比例的输入单元设置为零,从而“丢弃”这些单元,并防止它们对正向传递产生影响。

这个过程强制网络学习输入的多个独立表示,使它对输入数据的变化更加稳健,降低了过拟合的可能性。dropout通常应用于CNN的全连接层,但也可以应用于任何层。

dropout的灵感来自于Hinton和他的银行:“我去了我的银行,银行柜员不断变换,我问其中一个为什么。他说他不知道,但是他们经常换位置。我意识到这一定是因为需要员工之间的合作才能成功欺诈银行。这让我意识到,在每个示例上随机去掉一组不同的神经元,将防止合谋,从而减少过拟合。”

举个例子,假设我们想检测一张脸。一般来说,脸部不一定总是具有鼻子、眼睛等所有脸部特征。一般来说,可能会缺少某些特征。因此,随机学习一组特征子集而不是所有的特征,以便能够更好地推广到看不见的数据上,强制我的人脸检测器也在某些特征存在的情况下工作。

Dropout层的特征联合适应的概念


分类层

分类层是CNN的最后一层。这一层为输入图像生成类别得分。CNN中使用两种主要类型的分类层:全连接层和全局平均池化层。

全连接(FC)层是标准的神经网络层,将前一层中的所有神经元与当前层中的所有神经元连接起来。FC层的输出是通过将权重矩阵和偏置向量应用于输入计算得到的,然后是一个激活函数。FC层然后连接到具有softmax激活的全连接层,以生成类别得分。

使用全连接层的优点是允许网络学习类别之间的复杂决策边界。另一方面,这些层可能导致过拟合,并且需要大量的参数。为了解决这些问题,提出了全局平均汇聚(GAP)。

全局平均汇聚层是一种池化层,通过对每个特征映射的所有值取平均值来减小特征映射的空间维度。GAP层的输出是大小与特征映射数量相等的1D向量。GAP层连接到一个具有softmax激活的全连接(FC)层,以生成类别得分。

使用GAP层的优点是它们更不容易过拟合,并且需要较少的参数。然而,GAP层不能学习类别之间的复杂决策边界。

总而言之,全连接层适用于复杂的决策边界,但需要更多的参数,并且可能导致过拟合。GAP层更不容易过拟合,但无法学习类别之间的复杂决策边界。


全连接层与全局平均池化的比较


著名的CNN示例

让我们讨论一些著名的卷积神经网络实现,包括较早的和更现代的CNN。

LeNet

LeNet由Yann LeCun于1998年提出,用于手写数字识别。它被认为是第一个成功的CNN,并为许多后续CNN架构奠定了基础。

LeNet的架构包括几个层次,包括:

  • 两个卷积层,每个后面跟着一个最大池化层,用于从输入图像中提取特征。
  • 两个全连接层,也称为密集层,用于对特征进行分类。

第一层卷积层有6个大小为5x5的过滤器,第二层卷积层有16个大小为5x5的过滤器。最大池化层通过在2x2的窗口中选择最大值来减小特征映射的空间维度。

第一个全连接层有120个神经元,第二个全连接层有84个神经元。最后一层是一个具有10个神经元的全连接层,每个类别一个。

LeNet是一个相对简单的架构,但仍然被用作许多图像分类任务的起点。然而,LeNet不像许多更近期的架构那样强大。

AlexNet

AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton于2012年提出的。它是2012年ImageNet计算机视觉比赛中获胜的模型。AlexNet是首个在这个基准测试中超过传统手工设计模型性能的CNN。

AlexNet的架构包括几个层次,包括:

  • 五个卷积层,每个后面跟着一个最大池化层,用于从输入图像中提取特征。
  • 三个全连接层,也称为密集层,用于对特征进行分类。前两个卷积层有96个大小为11x11的过滤器,接下来的两个卷积层有256个大小为5x5的过滤器,最后一个卷积层有384个大小为3x3的过滤器。最大池化层通过在2x2的窗口中选择最大值来减小特征映射的空间维度。第一个全连接层有4096个神经元,第二个全连接层有4096个神经元,最后一层是一个具有1000个神经元的全连接层,每个ImageNet数据集类别一个。

AlexNet引入了几个关键创新,使它能够在当时实现最先进的性能,如使用ReLU激活函数、数据增强和dropout正则化。它还比LeNet具有更大的容量,能够从图像中学习更复杂的特征。当时,AlexNet被广泛认为是计算机视觉领域的突破,启发了许多随后的架构。

VGGNet

VGGNet是由牛津大学视觉几何组(Visual Geometry Group,简称VGG)于2014年提出的卷积神经网络架构。它是通过使用非常小的卷积过滤器(3x3)和非常深的架构(多达19层)来实现良好性能的。

VGGNet的特点是使用非常小的卷积过滤器(3x3),并具有非常深的架构(多达19层)。这种架构后来被修改并用作各种计算机视觉任务的基础,如目标检测和图像分割。

ResNet

训练非常深的神经网络的一个主要挑战是梯度消失问题,即梯度(用于在训练过程中更新参数)变得非常小,训练变慢。由微软研究院于2015年开发的ResNet(Residual Neural Network)通过引入“残差连接”的概念来解决这个问题。

残差连接是一种绕过一个或多个层的快捷连接,允许梯度直接流向较早的层。这使得ResNet能够训练比以前的架构更深的网络,而不会遇到梯度消失问题。

ResNet的架构以其深度为特点。最初的ResNet有152层。更近期的版本,如ResNet-50、ResNet-101和ResNet-152,分别有50、101和152层。ResNet已成为许多计算机视觉任务的流行选择,如目标检测、语义分割和图像分类,并且已被用作许多计算机视觉任务的骨干,如人脸识别、物体跟踪等。

MobileNet

MobileNet是由Google于2017年开发的,专为在资源有限的移动和嵌入式设备上使用。MobileNet使用深度可分离卷积来减少参数和计算成本,同时保持良好的准确性。

深度可分离卷积是一种将单个卷积过滤器应用于每个输入通道(深度卷积)并应用一个点卷积(1x1卷积)来结合结果的卷积方法。这种方法减少了参数和计算的数量,相比标准的卷积层更高效。

MobileNet的设计旨在轻量和高效,因此非常适合在资源有限的移动和嵌入式设备上部署。该模型有几个版本,具有不同的复杂性和准确性。最近的版本MobileNet V3被认为是最高效的,具有良好的准确性和效率。

MobileNet已被广泛应用于各种应用程序,如目标检测、语义分割和图像分类,并且已被用作许多计算机视觉任务的骨干,如人脸识别、物体跟踪等。

结论

卷积神经网络是一种深度学习架构,已广泛应用于计算机视觉任务,如图像分类、目标检测和语义分割。与传统的计算机视觉方法相比,CNN具有几个优势,包括:

  • 对平移和旋转的鲁棒性:CNN能够学习对物体在图像中的位置和方向的微小变化具有鲁棒性的特征,这使得它们非常适合目标检测和语义分割等任务。
  • 处理大量数据:CNN能够从大量数据中学习,这使它们非常适合在大规模数据集上进行训练,如ImageNet。
  • 迁移学习:在ImageNet等大型数据集上训练的CNN可以在较小的数据集上进行微调,从而大大减少了训练所需的数据和计算资源。

然而,CNN也有一些限制和挑战,包括:

  • 计算成本:CNN需要大量的计算资源来训练和部署,这可能限制了其在移动和嵌入式设备上的部署。
  • 过拟合:当数据量有限时,CNN可能容易过拟合,这可能导致在看不见的数据上的性能不佳。
  • 解释性:CNN通常被认为是黑盒,很难理解它们是如何做出决策的,并识别潜在的错误。

翻译自:
https://blog.roboflow.com/what-is-a-convolutional-neural-network/

相关文章