所有文章 > 日积月累 > CNN是什么?深入探讨卷积神经网络
CNN是什么?深入探讨卷积神经网络

CNN是什么?深入探讨卷积神经网络

一、图像原理

图像在计算机中是一组按特定顺序排列的数字,通常范围在0到255之间。0表示最暗,255则表示最亮。在图像处理中,通常使用RGB颜色模型来表示彩色图像。RGB模型通过红、绿、蓝三种颜色的不同组合来生成各种色彩。如下图所示,RGB模型可以理解为三个矩阵组成的三维张量,每个矩阵代表一个颜色通道(通道可以理解为图像的不同层次或维度)。

灰度图示例

在RGB模型中,每个像素都由红、绿、蓝三种颜色的不同数值组合而成,这三个通道的组合就形成了最终的彩色图像。

RGB模型示例

二、为什么要学习卷积神经网络?

传统神经网络在识别图像时,可能会因为图像的位置变化导致识别错误。例如,下图中红色框内的图像在位置上各不相同,传统神经网络可能无法识别出它们属于同一个类别。这是因为传统神经网络对平移不具有不变性。

位置变化示例

卷积神经网络(CNN)通过在卷积层中应用卷积操作,可以捕捉到图像中的局部特征,从而实现平移不变性。无论物体在图像的哪个位置,CNN都能识别出其特征。

卷积原理示意图

三、什么是卷积?

卷积操作是指使用一个可移动的小窗口(数据窗口,如下图中的绿色矩形)与图像进行逐元素相乘然后相加的操作。这个小窗口实际上是一组固定的权重,称为滤波器或卷积核。卷积操作可以看作是对图像特征的提取过程。

卷积示意图

卷积操作通过滑动窗口对图像的不同位置进行运算,从而提取图像的特征信息。下面的动图展示了卷积的整个过程:

卷积过程动图

一张图带你了解卷积计算过程:

卷积计算过程图

卷积需要注意哪些问题?

在进行卷积操作时,有几个重要参数需要注意:

  • 步长(stride):指卷积核每次滑动的格数。步长越大,输出特征图的尺寸越小。
  • 卷积核的个数:决定输出的深度(depth),即输出特征图的厚度。
  • 填充值(zero-padding):在输入图像的外围补充若干圈0,以确保卷积核能够完整覆盖输入图像的边缘区域。

例如,若数据窗口每次移动两个步长去取3×3的局部数据,则stride=2。若有两个滤波器,则depth=2。此外,zero-padding=1可以确保特征图尺寸保持不变。

为什么要进行数据填充:

假设有一个大小为4×4的输入图像:

[[1, 2, 3, 4],
 [5, 6, 7, 8], 
 [9, 10, 11, 12], 
 [13, 14, 15, 16]]

如果我们不进行填充,那么使用3×3的卷积核卷积后,输出特征图的尺寸将变小,可能无法覆盖输入图像的边缘。因此,我们在输入图像周围填充一圈0:

[[0, 0, 0, 0, 0, 0], 
 [0, 1, 2, 3, 4, 0], 
 [0, 5, 6, 7, 8, 0], 
 [0, 9, 10, 11, 12, 0], 
 [0, 13, 14, 15, 16, 0], 
 [0, 0, 0, 0, 0, 0]]

填充的主要目的是确保卷积核能够覆盖输入图像的边缘区域,同时保持输出特征图的大小不变。

卷积神经网络的模型是什么样的?

卷积神经网络(CNN)由多个卷积层、池化层和全连接层组成。下图展示了CNN的基本构造:

卷积神经网络模型

四、卷积神经网络的构造

CNN构造示意图

1 输入层

输入层接收原始图像数据。图像通常由红、绿、蓝三个颜色通道组成,形成一个二维矩阵,表示像素的强度值。

2 卷积和激活

卷积层将输入图像与卷积核进行卷积操作。然后,通过应用激活函数(如ReLU)来引入非线性。这一步使网络能够学习复杂的特征。

3 池化层

池化层通过减小特征图的大小来减少计算复杂性。它通过选择池化窗口内的最大值或平均值来实现。这有助于提取最重要的特征。

4 多层堆叠

CNN通常由多个卷积和池化层的堆叠组成,以逐渐提取更高级别的特征。深层次的特征可以表示更复杂的模式。

5 全连接和输出

最后,全连接层将提取的特征映射转化为网络的最终输出。这可以是一个分类标签、回归值或其他任务的结果。

形象的过程如下图:

CNN展开形式
CNN未展开形式

五、图片经过卷积后的样子

与人眼观看事物的原理相似,卷积神经网络能够识别物体的轮廓。卷积操作后,图像中的重要信息得以保留,而不重要的信息被过滤掉。

卷积后图像示例

卷积神经网络是一种前馈型神经网络,受生物视觉认知机制启发而来。它们的最大优势在于能够直接处理原始图像数据,并在图像分类、目标识别、目标检测等任务中表现出色。

FAQ

  1. 问:什么是卷积神经网络?

    • 答:卷积神经网络(CNN)是一种专门用于处理图像数据的深度学习模型。它通过卷积层提取图像特征,广泛应用于图像分类、目标检测等任务。
  2. 问:卷积神经网络如何实现平移不变性?

    • 答:通过卷积操作,CNN能够提取图像中的局部特征,从而实现对位置变化的鲁棒性,即无论物体在图像中的哪个位置,CNN都能识别其特征。
  3. 问:为什么卷积神经网络需要填充?

    • 答:填充的目的是为了确保卷积核能够覆盖输入图像的边缘区域,同时保持输出特征图的大小不变。这对于保留空间信息和处理边缘数据非常重要。
#你可能也喜欢这些API文章!