了解卷积神经网络:架构、卷积、池化和参数计算

348 阅读7分钟

卷积神经网络 (CNN):概述

卷积神经网络 (CNN) 是一种人工神经网络,广泛应用于图像和视频识别、目标检测和其他计算机视觉任务的深度学习领域。在本文中,我们将概述 CNN 的主要特性,包括它们的架构、层、激活函数和流行的应用。

CNN 的架构

image.png

CNN 基本组件

CNN 的架构通常由几层组成,每一层都有特定的功能。CNN 中最常用的层包括:

  1. 卷积层:卷积层负责从输入图像中提取特征。这是通过对输入图像应用一组过滤器(也称为内核或权重)来实现的,该过滤器对输入进行卷积并生成特征图。每个过滤器从图像中提取特定特征,例如边缘、角或斑点。

image.png

每个卷积产生 1 个 Feature Map

2.池化层:池化层用于减少卷积层生成的特征图的空间维度。这有助于降低网络的计算复杂度并提高其性能。最常见的池化层类型包括最大池化和平均池化。

image.png

应用池化后 4*4 变成 2*2

image.png

池化大小 2*2

池化中最常用的两个聚合函数是“max”和“average”。这些操作背后的原因如下:

最大池化: 如果任何一个补丁强烈表明存在特定特征,则池化层将该特征视为“检测到”。通过选择补丁中的最大值,最大池可以有效地捕获输入图像中最突出的特征。

平均池化: 如果一个补丁提供了一个特征的强烈指示,但其他补丁不同意,池化层取平均值来确定该特征的存在。这允许平均池化来捕获在输入图像中可能不那么突出的更细微的特征。

3.激活函数: 激活函数用于将非线性引入网络,使其能够学习输入数据中的复杂模式。CNN 中最常用的激活函数包括 ReLU(整流线性单元)和 sigmoid。

image.png

4.全连接层: 全连接层用于分类任务,目标是为输入图像分配标签。这些层获取卷积层和池化层的输出,并将其传递给一系列致密层,这些致密层负责产生网络的最终输出。

训练 CNN

CNN 的训练包括以下步骤:

1.正向传播:在这一步中,输入图像通过网络,并使用网络的权重和偏差计算输出。

2. Backward Propagation:在这一步中,计算预测输出和真实标签之间的误差,并使用梯度下降更新网络的权重和偏差。

3.优化:优化步骤涉及微调网络的超参数,例如学习率、批量大小和轮数。

卷积:

我们已经看到,将 7X 7 维的输入与 3 X 3 的滤波器进行卷积会产生 5X 5 的输出。

如果输入为 n X n,滤波器大小为 k X k,则输出大小为 (n-k+1) X (n-k+1)

image.png

这里主要有两个缺点:

  1. 每次我们应用卷积运算时,图像的尺寸都会缩小
  2. 与中心像素相比,图像角落中的像素在卷积过程中只使用了几次。因此,我们不会过分关注角落,因为这会导致信息丢失

填充:

为了克服这些问题,我们可以用额外的边框填充图像,即我们在所有边缘周围添加一个像素。这意味着输入将是一个 8 X 8 矩阵(而不是 6 X 6 矩阵)。对其应用 3 X 3 卷积将产生 6 X 6 矩阵,这是图像的原始形状。

image.png

输入:  n X n填充:  p滤波器大小:  k X k输出:  (n+2p-k+1) X (n+2p-k+1)

跨步卷积

假设我们选择步幅为 2。因此,在对图像进行卷积时,我们将采取两个步骤——分别在水平和垂直方向上。输出图像的大小将是

image.png

image.png

根据上面的公式,如果我们提交值 n=6,p=0,k/f=3,S=2。输出图像大小为2.52.5,如果输出结果为分数,则始终需要取底值。因此输出图像大小为 22。

参数计算

在卷积神经网络 (CNN) 中,我们使用过滤器(也称为内核或权重)从输入图像中提取特征。每个过滤器都是一个小的数字矩阵,通过在图像上滑动它并计算过滤器和图像的相应补丁之间的点积来应用于输入图像。

image.png

卷积

可以使用不同的过滤器从输入图像中提取不同类型的特征。例如,一个滤波器可以设计用于检测水平边缘,而另一个滤波器可以设计用于检测垂直边缘。通过在卷积层中使用多个过滤器,网络可以学习检测输入图像中的各种特征。如果我们对上图应用不同的过滤器,我们会得到不同的输出。

image.png

CNN 的优点是我们不需要手动指定内核值(不需要记住过滤器值)。它们在训练期间自动学习。这允许 CNN 检测各种特征,如曲线、圆、锐边和直线(在训练期间,过滤器的数量和过滤器大小将在网络中定义为随机值,在反向传播权重优化将发生)

image.png

在上面的卷积中,权重总数为 9,因为过滤器大小为 3*3,并且每个过滤器都有一个与之相关的偏差。

正如我们所知,参数总数 = 权重数 + 偏差项,在上面的单个卷积中总共有 10 个参数。

会发现参数个数在卷积运算的下方。图像的输入大小为 77,填充为 1(参数数量不依赖于输入大小和填充)。内核数量为 5,每个内核大小为 33。

image.png

总权重数=内核数内核大小=53*3=45
Number of Biases(内核数)=5
总参数数=权重+偏置=45+5=50

亚历克斯网

image.png

  1. Conv-1:第一个卷积层由 96 个大小为 11×11 的核组成,步长为 4,填充为 0。

n=227,p=0,k=11,s=4

(n+2p-k)/s+1 = (227–11)/4+1=55

输出大小 5555 和输出深度取决于过滤器的数量,因为每个过滤器生成一个特征图,所以第一个卷积的输出是 5555*96

第一个卷积有多少个参数?

权重总数=核数核大小=96(11113)=34848。请记住,输入和过滤器中的通道数/深度应该相同。

滤波器尺寸给定为 1111,但如果检查输入图像深度为 3,则滤波器尺寸为 1111*3
Number of Biases (number of kernels)=96
参数总数 = weights + biases =34848+96 =34944

您还可以计算和交叉检查剩余卷积的输出大小和参数数量,现在也将对一个池化层进行计算。

MaxPool-1:  Conv-1之后的maxpool层由3×3的pooling size和stride 2组成。这里的公式可以写成(np)/s+1

p 这里是池大小

n=55(555596为输入尺寸),p=3,s=2

(55–3)/2+1=27

池化的输出是27*27,池化层的深度不会有任何变化,池化的输入和输出将具有相同的深度。

这里输入深度为96,所以池化层输出大小为272796

我们可以使用以下代码探索所有计算。

image.png

image.png

image.png

本文涵盖了 CNN 的所有基本概念和计算。要获得更深入的了解,您可以探索和了解各种预训练的 CNN 架构。