卷积神经网络介绍(CNN)-1

winterSky 2024-03-17 AM 710℃ 0条

2024-03-16T13:43:48.png

什么是卷积神经网络以及它们为何重要?
卷积神经网络(ConvNet或CNN )是神经网络的一类,已被证明在图像识别和分类等领域非常有效。除了为机器人和自动驾驶汽车的视觉提供动力之外,卷积网络还成功地识别了人脸、物体和交通标志。


LeNet 架构(20 世纪 90 年代)
LeNet 是最早的卷积神经网络之一,有助于推动深度学习领域的发展。Yann LeCun 的这项开创性工作 自 1988 年以来经过多次成功迭代后被命名为LeNet5 [ 3 ]。当时LeNet架构主要用于字符识别任务,例如读取邮政编码、数字等。

下面,我们将直观地了解 LeNet 架构如何学习识别图像。近年来提出了几种新的架构,它们都是对 LeNet 的改进,但它们都使用了 LeNet 的主要概念,
2024-03-16T19:30:35.png
图 3 中的卷积神经网络在架构上与原始 LeNet 类似,并将输入图像分为四类:狗、猫、船或鸟(原始 LeNet 主要用于字符识别任务)。从上图可以看出,在接收到船只图像作为输入后,网络正确地为所有四个类别中的船只分配了最高概率 (0.94)。输出层中所有概率的总和应该为 1
如上图 3所示,ConvNet 中有四个主要操作:

  1. 卷积
  2. 非线性 (ReLU)
  3. 池化或子采样
  4. 分类(全连接层)

图像是像素值的矩阵
本质上,每个图像都可以表示为像素值矩阵。
2024-03-16T19:33:17.png
通道是一个传统术语,用于指代图像的某个组成部分。标准数码相机的图像将具有三个通道 - 红色、绿色和蓝色 - 您可以将它们想象为三个相互堆叠的二维矩阵(每种颜色一个),每个矩阵的像素值在 0 到 255 范围内。

另一方面,灰度图像 只有一个通道。出于本文的目的,我们将仅考虑灰度图像,因此我们将有一个表示图像的二维矩阵。矩阵中每个像素的值范围为 0 到 255 - 0 表示黑色,255 表示白色。


卷积步骤
卷积网络的名称源自 “卷积”运算符。对于 ConvNet,卷积的主要目的是从输入图像中提取特征。卷积通过使用输入数据的小方块学习图像特征来保留像素之间的空间关系。我们不会在这里讨论卷积的数学细节,但会尝试理解它如何在图像上工作。

正如我们上面所讨论的,每个图像都可以被视为像素值的矩阵。考虑一个 5 x 5 图像,其像素值只有 0 和 1(注意,对于灰度图像,像素值范围从 0 到 255,下面的绿色矩阵是像素值只有 0 和 1 的特殊情况):

2024-03-16T19:35:33.png
2024-03-16T19:36:17.png

我们将橙色矩阵在原始图像(绿色)上滑动 1 个像素(也称为“步幅” stride),对于每个位置,我们计算元素乘法(两个矩阵之间)并将乘法输出相加以获得形成的最终整数输出矩阵的单个元素(粉红色)。请注意,3×3 矩阵在每个步幅中仅“看到”输入图像的一部分。

在 CNN 术语中,3×3 矩阵称为“滤波器 filter”或“内核 kernel”或“特征检测器 feature detector”,通过在图像上滑动滤波器并计算点积形成的矩阵称为“卷积特征”或“激活”地图”或“特征地图”。值得注意的是,滤波器充当原始输入图像的特征检测器。
我们可以看到上图使用不同滤波器进行卷积的效果。如图所示,我们可以通过在卷积运算之前更改滤波器矩阵的数值来执行边缘检测、锐化和模糊等操作[ 8 ]——这意味着不同的滤波器可以检测图像中的不同特征,例如边缘,曲线等。
2024-03-16T19:40:33.png

特征图(卷积特征)的大小由我们需要在执行卷积步骤之前决定的三个参数[ 4 ]控制:

深度: 深度对应于我们用于卷积运算的滤波器的数量。在图 7所示的网络中 ,我们使用三个不同的滤波器对原始船图像进行卷积,从而生成如图所示的三个不同的特征图。您可以将这三个特征图视为堆叠的二维矩阵,因此特征图的“深度”将为三。
2024-03-16T19:41:59.png
步幅:步幅是 我们在输入矩阵上滑动过滤器矩阵的像素数。当步长为 1 时,我们一次移动过滤器一个像素。当步长为 2 时,当我们滑动过滤器时,过滤器一次跳跃 2 个像素。步幅较大会产生较小的特征图。
零填充:有时,在边界周围用零填充输入矩阵很方便,这样我们就可以将过滤器应用于输入图像矩阵的边界元素。零填充的一个很好的功能是它允许我们控制特征图的大小。添加零填充也称为宽卷积,不使用零填充则称为窄卷积。这在[ 14 ]中已经解释得很清楚了。

2024-03-16T20:11:15.png

非线性 (ReLU) 简介
在上面图 3中的每个卷积操作之后都使用了一个名为 ReLU 的附加操作 。ReLU 代表整流线性单元,是一种非线性运算。其输出由下式给出:
2024-03-16T19:58:24.png

ReLU 是一种逐元素运算(应用于每个像素),并将特征图中的所有负像素值替换为零。ReLU 的目的是在我们的 ConvNet 中引入非线性,因为我们希望 ConvNet 学习的大多数现实世界数据都是非线性的(卷积是一种线性运算——元素明智的矩阵乘法和加法,所以我们通过引入 ReLU 等非线性函数来解释非线性)。

从下面的图9可以清楚地理解ReLU操作 。它显示了应用于上面图 6中获得的特征图之一的 ReLU 操作 。这里的输出特征图也称为“校正”特征图。
2024-03-16T19:59:12.png
其他非线性函数(例如 tanh或 sigmoid)也可以用来代替 ReLU,但人们发现 ReLU 在大多数情况下表现更好。

标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~