卷积神经网络(Convolutional Neural Network,CNN) 是神经网络中进行图像分类和图像识别的主要类别之一。卷积神经网络在场景标注、物体检测和人脸识别等领域广泛应用。

CNN以图像作为输入,该图像根据狗、猫、狮子、老虎等特定类别进行分类和处理。计算机将图像视为像素数组,取决于图像的分辨率。根据图像分辨率,它将被视为h * w * d,其中h=高度,w=宽度,d=维度。例如,RGB图像是6 * 6 * 3矩阵数组,灰度图像是4 * 4 * 1矩阵数组。

在CNN中,每个输入图像将通过一系列卷积层、池化层、全连接层和滤波器(也称为卷积核)进行处理。然后,我们将应用Soft-max函数对对象进行分类,得到概率值0和1。

7-1.jpg

卷积层

卷积层是从输入图像提取特征的第一层。通过使用输入数据的小方块学习图像特征,卷积层保留了像素之间的关系。这是一个数学运算,它接受两个输入,例如图像矩阵和卷积核或滤波器。

  • 图像矩阵的维度是h×w×d
  • 滤波器的维度是fh×fw×d
  • 输出的维度是(h-fh+1)×(w-fw+1)×1

7-2.png

让我们从考虑一个5 5图像开始,其像素值为0、1,以及3 3的滤波器矩阵:

7-3.png

5 5图像矩阵与3 3滤波器矩阵的卷积被称为“特征图”并显示为输出。

7-4.png

通过使用不同滤波器对图像进行卷积,可以执行模糊、锐化和边缘检测等操作。

步幅

步幅是在输入矩阵上移动的像素数。当步幅等于1时,我们将滤波器每次移动1个像素,类似地,如果步幅等于2,我们将滤波器每次移动2个像素。以下图显示了卷积使用步幅为2的情况。

7-5.png

填充

填充在构建卷积神经网络中起着关键作用。如果图像缩小,如果我们在其上采用具有数百层的神经网络,最终会得到一个小图像。

如果我们将一个3*3的滤波器放在灰度图像的顶部并进行卷积,会发生什么?

7-6.png

从上图可以看出,角落的像素只会被覆盖一次,但中间的像素会被覆盖多次。这意味着我们在中间像素上有更多的信息,因此有两个缺点:

  • 输出缩小
  • 丢失图像角落的信息

为了解决这个问题,我们引入了填充到图像中。“填充是可以添加到图像边缘的附加层。”

池化层

池化层在图像的预处理中起着重要作用。当图像太大时,池化层减少参数的数量。池化是从先前层获得的图像的“降维”。它可以类比将图像缩小以减少其像素密度。空间池化也称为降采样或子采样,它减少每个地图的维度,但保留重要信息。以下是空间池化的几种类型:

最大池化

最大池化是一种基于样本的离散化过程。其主要目标是缩小输入表示,降低其维度,并使有关子区域中包含的特征的假设成为可能。

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

7-7.png

7-8.png

平均池化

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

语法

layer = averagePooling2dLayer(poolSize)
layer = averagePooling2dLayer(poolSize,Name,Value)

求和池化

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

全连接层

全连接层是一层,其中来自其他层的输入将被展平为一个向量并发送。它将输出转换为网络所需的类别数。

7-9.png

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

7-10.png

标签: Pytorch, Pytorch教程, Pytorch安装, Pytorch入门, Pytorch下载, Pytorch指南, Pytorch编程, Pytorch入门教程, Pytorch初级教程, Pytorch进阶, Pytorch高级教程, Pytorch学习, Pytorch库