📜  卷积神经网络

📅  最后修改于: 2020-11-11 01:02:32             🧑  作者: Mango

PyTorch中的卷积神经网络

卷积神经网络是在神经网络中进行图像分类和图像识别的主要类别之一。场景标记,物体检测和面部识别等是卷积神经网络广泛使用的一些领域。

CNN将图像作为输入,将其分类并按特定类别(例如狗,猫,狮子,老虎等)进行处理。计算机将图像视为像素阵列,并且取决于图像的分辨率。基于图像分辨率,它将显示为h * w * d,其中h =高度w =宽度,d =尺寸。例如,RGB图像是矩阵的6 * 6 * 3阵列,而灰度图像是矩阵的4 * 4 * 1阵列。

在CNN中,每个输入图像都将经过一系列卷积层以及池化,完全连接的层,过滤器(也称为内核)。之后,我们将应用Soft-max函数对概率值为0和1的对象进行分类。

卷积层

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

  • 图像矩阵的尺寸为h×w×d
  • 滤波器的尺寸为f h ×f w ×d
  • 输出的尺寸为(hf h +1)×(wf w +1)×1

让我们从一个5 * 5的图像开始,其像素值为0、1,并将滤波器矩阵3 * 3设置为:

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

使用不同的滤镜对图像进行卷积可以通过应用滤镜来执行诸如模糊,锐化和边缘检测之类的操作。

大步前进

步幅是在输入矩阵上移动的像素数。当步幅等于1时,我们一次将滤镜移动到1个像素;如果步幅等于2,则我们一次将滤镜移动到2个像素。下图显示了卷积的步长为2。

填充

填充在构建卷积神经网络中起着至关重要的作用。如果图像缩小,并且我们采用一个带有100层图层的神经网络,则最终过滤后,它会为我们提供一个小图像。

如果我们在灰度图像上采用三乘三滤镜并进行卷积运算,那将会发生什么?

从上图可以清楚地看到,角落的像素只会被覆盖一次,而中间的像素将被覆盖一次以上。这意味着我们对该中间像素有更多的信息,因此存在两个缺点:

  • 缩小输出
  • 图像一角丢失信息。

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

池化层

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

最大池

最大池化是基于样本的离散化过程。它的主要目的是缩小输入表示的比例,减小其尺寸,并允许对合并的子区域中包含的特征进行假设。

通过将max过滤器应用于初始表示的非重叠子区域来完成max pooling。


平均池化

通过将输入划分为矩形池区域并计算每个区域的平均值,将通过平均池进行缩减。

句法

汇总池

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

全连接层

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

在上图中,借助完全连接的图层,特征图矩阵将转换为向量,例如x1,x2,x3 … xn。我们将结合功能来创建模型,并应用激活函数(例如softmax或Sigmoid)将输出分类为汽车,狗,卡车等。