了解卷积神经网络的设计

人工智能2年前 (2023)发布 wangzhan
319 0
ChatGPT国内版

卷积神经网络在计算机视觉应用中取得了成功。各种网络架构被提出,它们既不神奇也不难理解。

323导航网的本文章中,您将了解卷积层的操作及其在更大的卷积神经网络中的作用。

完成本教程后,您将学到:

  • 卷积层如何从图像中提取特征
  • 不同的卷积层如何堆叠起来构建神经网络
了解卷积神经网络的设计

了解卷积神经网络的设计

概述

本文分为三个部分;他们是:

  • 网络示例
  • 显示特征图
  • 卷积层的影响

网络示例

以下是在CIFAR-10数据集上进行图像分类的程序:

该网络应该能够实现 70% 左右的分类准确率。图像为 32×32 像素,RGB 颜色。它们分为 10 个不同的类,标签是从 0 到 9 的整数。

您可以使用 Keras 的函数打印网络summary()

在此网络中,屏幕上将显示以下内容:

在图像分类网络中,早期阶段通常由卷积层组成,其中 dropout 层和池化层交错。然后,在稍后阶段,卷积层的输出被一些全连接层展平并处理。

显示特征图

在上面的网络中,有两个卷积层(Conv2D)。第一层定义如下:

这意味着卷积层将具有 3×3 内核,并应用于 32×32 像素和三个通道(RGB 颜色)的输入图像。因此,该层的输出将为32个通道。

为了理解卷积层,您可以查看它的内核。该变量model保存网络,您可以通过以下方式找到第一个卷积层的内核:

这打印:

model.layers[0]通过将上述输出中的名称conv2d与 的输出进行比较,您可以判断这是正确的层model.summary()。该层具有形状 的内核(3, 3, 3, 32),分别是高度、宽度、输入通道和输出特征图。

假设内核是一个 NumPy 数组k。卷积层将采用其内核k[:, :, 0, n](3×3 数组)并应用于图像的第一个通道。然后应用k[:, :, 1, n]到图像的第二个通道,依此类推。然后,所有通道上的卷积结果相加成为n输出的特征图,其中n,在这种情况下,对于 32 个输出特征图将从 0 运行到 31。

在 Keras 中,您可以使用提取器模型提取每一层的输出。接下来,您将使用一个输入图像创建一批并将其发送到网络。然后看第一个卷积层的特征图:

上面的代码将打印特征图,如下所示:了解卷积神经网络的设计

这对应于以下输入图像:了解卷积神经网络的设计

您可以看到它们被称为特征图,因为它们突出显示输入图像中的某些特征。使用小窗口(在本例中为 3×3 像素过滤器)来识别特征。输入图像具有三个颜色通道。每个通道都应用了不同的滤波器,并将它们的结果组合起来形成输出特征。

您可以类似地显示第二个卷积层输出的特征图,如下所示:

这显示了以下内容:了解卷积神经网络的设计

从上面可以看出,提取出来的特征比较抽象,辨识度较低

卷积层的影响

卷积层最重要的超参数是滤波器的大小。通常,它是正方形的,您可以将其视为查看输入图像的窗口感受野。因此,图像的分辨率越高,您就可以期望使用更大的滤镜。

另一方面,太大的滤波器会模糊细节特征,因为从感受野通过滤波器的所有像素都将在输出特征图上组合成一个像素。因此,需要权衡滤波器的适当尺寸。

堆叠两个卷积层(中间没有任何其他层)相当于具有更大滤波器的单个卷积层。但现在使用的典型设计是将两层小型滤波器堆叠在一起,而不是一层大型滤波器堆叠在一起,因为需要训练的参数较少。

带有 1×1 滤波器的卷积层是个例外。这通常被视为网络的起始层。这种卷积层的目的是将输入通道合并为一个通道,而不是变换像素。从概念上讲,这可以将彩色图像转换为灰度图像,但通常,您可以使用多种转换方式为网络创建更多的输入通道,而不仅仅是 RGB。

另请注意,在上面的网络中,您使用的Conv2D是 2D 滤波器。还有一个Conv3D用于 3D 滤镜的层。区别在于您是否为每个通道或特征图单独应用过滤器,或者考虑将输入特征图堆叠为 3D 数组并应用单个过滤器对其进行整体转换。通常,使用前者,因为不考虑特征图应堆叠的特定顺序更合理。

© 版权声明
广告也精彩

相关文章

暂无评论

暂无评论...