Code前端首页关于Code前端联系我们

卷积神经网络模型是如何工作的?可以做什么?

terry 2年前 (2023-09-23) 阅读数 113 #AI人工智能

进入深度学习过程,最吸引作者的就是一些用来分类物体的模型。最新的科学研究结果表明,此类模型已经可以检测实时视频中的多个物体。这要归功于计算机视觉领域的最新技术创新。

众所周知,卷积神经网络(CNN 或 ConvNet)在过去几年中在深度学习方面取得了许多重大突破,但对于大多数人来说这种描述相当不直观。因此,要了解模型所取得的突破,我们首先应该了解卷积神经网络是如何工作的。

卷积神经网络能做什么?

卷积神经网络用于查找图像中的特征。在CNN的前几层,神经网络可以进行简单的“线”和“角”识别。我们还可以通过神经网络将其传递下去,以识别更复杂的特征。这一特性使得 CNN 擅长识别图像中的对象。

卷积神经网络

CNN是一个包含不同层的神经网络,其中一些是卷积层、池化层和激活函数。

折叠层如何工作?

要了解 CNN 的工作原理,您需要了解卷积。卷积涉及特定的事情,例如浏览图像和应用过滤器。

卷积神经网络模型怎样工作的?可以做些什么?

上图是一个5x5的矩阵。现在,您选择另一个 3x3 矩阵,在图像上移动并将 3x3 矩阵乘以图像的被覆盖部分以生成单个值。紧接着,3x3 矩阵向右和向下移动以“覆盖”整个图像。最后,我们将得到如上所示的内容。

卷积层的目标是过滤。滤波器由向量权重的堆栈乘以卷积输出的值来表示。随着图像的训练,这些权重会发生变化,这意味着当评估图像时,它会根据捕获的一些特征来预测图像的内容。

卷积神经网络模型怎样工作的?可以做些什么?

池化层

卷积层之后的层主要是CNN架构中的池化层。它将输入图像划分为一组不重叠的矩形,并输出每个子区域的值。

卷积神经网络模型怎样工作的?可以做些什么?

两个主要池化层是最大池化和平均池化。

最大池化 - 打印子区域的最大值。

平均池化 - 打印子区域的平均值。

池化层用于减少空间维度而不是深度。

减少空间维度的主要优点是:

• 通过减少空间信息,可以优化计算性能。

• 通过减少空间信息,您可以使用更少的参数来训练模型,从而降低过度拟合的可能性。

• 获取固定值。

激活函数

激活函数的工作原理与其他神经网络完全相同。该函数的主要目的是将值压缩到特定范围内。一些常用的激活函数有:

卷积神经网络模型怎样工作的?可以做些什么?

最常用的激活函数是 ReLu 激活函数。它接受输入“x”并确定“x”是否为正数,如果不是正数则返回 0。使用ReLu函数的原因是它的执行成本非常低。

卷积神经网络模型怎样工作的?可以做些什么?

上图是一个卷积层的一般表示。我们通过池化层执行卷积和 ReLu 函数。这些层彼此堆叠。

尽管定义和训练深度神经网络 (DNN) 比以往任何时候都容易,但大多数人仍然陷入误解。

为此,我们使用可视化来理解 CNN 模型的不同层。

使用 Keras 进行可视化

在这一部分中我们将尝试使用 Keras 进行可视化。我们将使用 Keras 可视化输入,最大化 VGG16 架构不同层中滤波器的激活并训练 ImageNet。

首先,我们先在 Keras 中定义 VGG16 模型:

卷积神经网络模型怎样工作的?可以做些什么?

请注意,我们只输入最后一个卷积层。原因是添加全连接层迫使您使用模型的固定输入大小(224x224,原始 ImageNet 格式)。通过保留卷积模,我们的模型可以适应任意输入大小。

模型加载了一组在 ImageNet 上预训练的权重。

现在让我们定义一个损失函数,它将促进特定层(层名称)中特定过滤器(filter_index)的激活。我们通过 Kera 的后端函数来完成此操作,这使我们的代码能够在 TensorFlow 和 Theano 之上运行。

卷积神经网络模型怎样工作的?可以做些什么?

一切都很简单。这里唯一的技巧是对输入图像中的像素梯度进行归一化,以确保梯度增加足够平滑。

现在我们可以使用我们定义的 Keras 函数在输入空间上执行梯度下降:

卷积神经网络模型怎样工作的?可以做些什么?

使用 TensorFlow 在 CPU 上执行此操作需要几秒钟。

然后我们可以提取并显示生成的输入:

卷积神经网络模型怎样工作的?可以做些什么?

结果:

卷积神经网络模型怎样工作的?可以做些什么?

第一层几乎只编码方向和颜色。然后将这些方向和过滤器组合成基本的网格和斑点纹理。这些纹理逐渐组合成越来越复杂的图案。

您可以将每层中的过滤器视为向量基,该向量基通常是完整的,可用于以紧凑的方式对输入层进行编码。当过滤器开始整合来自更大空间范围的信息时,它们变得更加复杂。

以下是不同层生成的特征图图像:

卷积神经网络模型怎样工作的?可以做些什么?

第1层主要生成水平线、垂直线和对角线。主要用于检测图像中的边缘。第 2 层将尝试提供更多信息。主要是检测角点。在第 3 层,我们可以开始检测一些复杂的模式,例如眼睛、面部等。我们可以假设这个特征图是从经过训练的人脸识别模型获得的。在第 4 层上,它可以位于面部更复杂的部分(例如眼睛)。

卷积神经网络模型怎样工作的?可以做些什么?

在第5层,可以使用特征图生成人脸、汽车轮胎、动物脸等特定人脸,这个特征图包含了图像的大部分信息

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门