TensorFlow 中的卷积神经网络介绍

17 Mar 2025 | 4 分钟阅读

卷积神经网络是用于在神经网络中进行图像分类和图像识别的一种技术。 它设计用于通过多层阵列处理数据。 这种类型的神经网络用于诸如图像识别面部识别之类的应用程序中。 CNN 与其他神经网络的主要区别在于,CNN 将输入作为二维数组。 并且它直接对图像进行操作,而不是专注于其他神经网络所做的特征提取。

Introduction of Convolutional Neural Network in TensorFlow

CNN 的主要方法包括用于解决识别问题的解决方案。 像谷歌脸书这样的公司已经投资于与识别项目相关的现场研究和开发,以便以更高的速度完成活动。

场景标记、对象检测和人脸识别等是卷积神经网络工作的一些领域。

卷积神经网络(CNN 或 ConvNet)是一种前馈人工网络,其神经元之间的连接模式受到动物视觉皮层的组织结构的启发。

视觉皮层具有一小部分细胞,这些细胞对视觉区域的特定区域敏感。 我们大脑中某些单独的神经元细胞会在存在特定方向的边缘时做出反应。

卷积神经网络的起源

神经网络的智能是不自然的。 虽然人工神经网络早在1960 年代就由Rosenblatt进行了研究,但直到 2000 年代后期才开始使用神经网络进行深度学习。 关键的推动因素是计算能力和数据集的规模,谷歌正在开发对深度学习的研究。 在2012 年 7 月,谷歌的研究人员向一系列未标记的、从 YouTube 视频中切出的静态图像披露了一个高级神经网络。

例如:

考虑一下这张自然图像,乍一看,我们会看到很多建筑物和颜色。

计算机如何读取图像?

图像被分解为 3 个颜色通道,即红色绿色蓝色。 这些颜色通道中的每一个都映射到图像的像素。

Introduction of Convolutional Neural Network in TensorFlow

当暴露于顶点边缘时,一些神经元会触发,当显示水平或对角边缘时,另一些神经元会触发。 CNN 利用输入数据中存在的空间相关性。 神经网络的每个并发层都连接一些输入神经元。 此区域称为局部感受野。 局部感受野侧重于隐藏神经元。

隐藏的神经元会处理上述字段内的输入数据,而没有意识到特定边界之外的更改。

卷积神经网络具有以下 4 层

  • 卷积
  • ReLU 层
  • 池化
  • 完全连接

卷积层

卷积层是用于从输入图像导出特征的第一层。 卷积层通过使用输入数据的一小块正方形来学习图像特征,从而保持像素之间的关系。 它是进行两个输入(例如图像矩阵内核任何过滤器)的数学运算。

  • 图像矩阵的维度为h×w×d
  • 任何过滤器的维度均为fh×fw×d
  • 输出的维度为(h-fh+1)×(w-fw+1)×1
Introduction of Convolutional Neural Network in TensorFlow

ReLU 层

修正线性单元 (ReLU) 转换函数仅在输入高于某个数量时才激活一个节点。 当数据低于零时,输出为零,但当输入高于某个阈值时。 它与因变量具有线性关系。

在此层中,我们从过滤后的图像中删除每个负值,并将其替换为零。

之所以发生这种情况,是为了避免值加起来为零。

Introduction of Convolutional Neural Network in TensorFlow

池化层

池化层在任何图像的预处理中起着至关重要的作用。 当图像太大时,池化层会减少参数的数量。 池化是对来自先前层的图像的“下缩放”。 它可以与缩小图像以减小图像的密度进行比较。 空间池也称为下采样和子采样,它减少了每个地图的维度,但保留了基本信息。 这些是以下类型的空间池化。

我们通过实施以下 4 个步骤来执行此操作

  • 选择窗口大小(通常为 2 或 3)
  • 选择一个步幅(通常为 2)
  • 将您的窗口穿过您的过滤图像
  • 从每个窗口中,取最大

最大池化

最大池化是一个基于样本的离散化过程。 最大池化的主要目的是缩小输入表示,减小其维度,并允许对包含在子区域中的特征进行假设。

最大池化是通过在初始表示的非重叠子区域中应用最大滤波器来完成的。

Introduction of Convolutional Neural Network in TensorFlow
Introduction of Convolutional Neural Network in TensorFlow

平均池化

通过将输入分成矩形池化区域并计算每个区域的平均值,将执行下缩放。

语法

求和池化

求和池化均值池化的子区域设置为与最大池化相同,但我们使用求和或均值而不是最大函数。

在此层中,我们将图像堆栈缩小为较小的大小步骤;

  1. 选择窗口大小(通常为 2 或 3)
  2. 选择步幅(通常为 2)
  3. 将我们的窗口穿过我们的过滤图像。
  4. 从每个窗口中,取最大值。

使用窗口大小 2 和步幅 2 执行池化。

完全连接(密集)层

全连接层(密集层)是一个将来自其他层的输入压入矢量的层。 它会将输出转换为网络中的任意数量的类。

Introduction of Convolutional Neural Network in TensorFlow

在上图中,地图矩阵借助全连接层转换为向量,例如x1、x2、x3...xn。 我们将组合特征以创建任何模型,并应用激活函数(如softmaxsigmoid)将输出分类为汽车、狗、卡车等。

Introduction of Convolutional Neural Network in TensorFlow

这是实际分类发生的地方。