购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 卷积层

在计算机视觉领域,输入图像的尺寸通常较大。手写字体识别模型LeNet是最早的卷积神经网络(Convolutional Neural Network, CNN)之一。相较于仅使用全连接层搭建的网络结构,LeNet通过巧妙的设计,利用卷积、池化等操作进行特征提取。其中,卷积层具有局部连接和权重共享的特点,避免了较高的计算成本,并在完成分类识别任务方面表现出色。使用PyTorch实现LeNet的示例代码如算法2-1所示,该算法展示了如何定义LeNet的结构、准备数据加载器、编译(在PyTorch中称为配置优化器)及训练模型。

卷积层是卷积神经网络最重要的组成部分,其主要作用是自动学习和提取图像特征。卷积层包括一组滤波器(又称卷积核),通过对给定输入做卷积来生成输出特征图。

2.1.1 卷积操作

什么是卷积操作? 在计算机中,图像以像素点组成的矩阵形式存储,对图像和滤波矩阵做内积的操作即卷积操作。其中,图像指存储在不同数据窗口中的像素数据;而滤波矩阵则指一组固定的权重,可视为一个恒定的滤波器;内积指逐个元素相乘后求和的计算过程。卷积层利用滤波器提取图像特征,通过使用不同的卷积核进行卷积操作可以获得多样化的特征。

图像矩阵、卷积核和输出特征图示例如图2-1所示,卷积层旨在从输入图像中提取特征,即得到输出特征图。在此过程中,卷积层通过使用卷积核对该层的输入执行卷积操作,卷积操作的实现过程如图2-2所示。为了方便读者理解,给定一个二维输入特征图和一个卷积核,它们的尺寸分别为6×6和3×3,卷积层将3×3的卷积核与输入特征图的高亮窗口(大小为3×3)逐元素相乘,并将所有乘积结果相加,从而生成输出特征图中的一个值。卷积核沿水平或垂直方向(输入特征图的宽度或高度方向)以步长1移动。将该步长称为卷积的步幅(Stride),可根据需要将步幅设置为不同的值。卷积核沿输入特征图的宽度和高度方向滑动,直到无法进一步滑动。

图2-1 图像矩阵、卷积核和输出特征图示例

在图2-1中,输出特征图的尺寸相较于输入特征图有所减小。具体而言,当输入特征图的尺寸为 h × w ,卷积核的尺寸为 f × f ,步幅为 s 时,输出特征图的尺寸 h ′× w ′可由式(2-1)计算得到。

式中, 表示向下取整。

然而,在图像去噪、图像超分辨率和图像分割等任务中,通常需要进行像素级别的密集预测,因此要求在进行卷积操作后,输出特征图的尺寸保持不变,有时甚至要大于输入特征图的尺寸。

图2-2 卷积操作的实现过程

图2-2 卷积操作的实现过程(续)

为了解决该问题,可以通过在输出特征图的周围进行填充(Padding)来维持输出特征图的尺寸,常用的填充方法包括零填充等。水平和垂直方向的零填充允许增大输出维度,不仅能提高网络结构设计的灵活性,还能避免输出特征维度的快速坍塌,因此允许进行更深层次的网络设计。通常更深层次的网络能够实现更好的性能和更高分辨率的输出标签。填充的本质是通过增大输入特征图的尺寸来获得具有所需尺寸的输出特征图。如果 p 表示沿每个维度给输入特征图增加的像素数(通过零填充方法实现,零填充操作过程如图2-3所示),则可由式(2-2)计算得到修改后的输出特征图尺寸。

图2-3 零填充操作过程

2.1.2 感受野

感受野指神经网络中神经元“看到的”输入区域,在卷积神经网络中,输入特征图中某个元素的计算受其某个区域的影响,这样的区域称为该元素的感受野。

在卷积神经网络中,随着网络层数的增加,神经元的感受野扩大。不同层特征图对应的感受野示意图如图2-4所示。在图2-4(a)中,原始层(第一层)应用大小为3×3的卷积核进行两次步幅为1的卷积操作后,第二层神经元的感受野为绿色区域,第三层神经元的感受野为黄色区域。显然,第二层中的每个神经元都能感知第一层中3×3大小的区域,第三层中的每个神经元都能感知第二层中3×3大小的区域,该区域也能覆盖第一层中5×5大小的区域。

更大的感受野意味着深层神经元能够利用原始图像中更丰富的上下文信息,通常可以获得更好的结果。为了扩大神经元的感受野,最直接的方法是增大卷积核的尺寸。使用5×5卷积核代替3×3卷积核进行卷积操作或使用7×7卷积核代替5×5卷积核进行特征提取都是可行的。然而,采用较大尺寸的卷积核会导致需要训练的参数量增加,尤其在深层网络中,参数量往往随卷积核尺寸的增大呈平方规律增加。在多次实践中,研究人员提出采用多个小卷积核进行多次卷积的方法,这可以在维持感受野尺寸不变的同时明显减缓参数量的增加。如图2-4(b)、(c)所示,使用两个3×3卷积核进行两次卷积操作可以代替使用一个5×5卷积核进行一次卷积操作。在这个过程中,小卷积核仅引入了18(2×3×3)个未知参数,而大卷积核则引入了25(5×5)个未知参数。

图2-4 不同层特征图对应的感受野示意图

2.1.3 多通道卷积和多卷积核卷积

前面都是以单通道卷积进行示例的,而在实际应用中,通常需要处理彩色图像,一幅彩色图像可以用一个三维矩阵表示。当输入具有多个通道(如R、G、B三个通道)时,进行卷积操作的卷积核应具有与输入特征图相同的通道数。在计算过程中,每个卷积核通道与相应的输入特征图通道进行卷积;将每个通道的卷积结果按位相加,得到最终的输出特征图。多通道卷积计算示意图如图2-5所示。

图2-5 多通道卷积计算示意图

在实际的图像特征提取过程中,需要使用多个卷积核分别对不同的特征进行提取。不同的卷积核可以理解为通过不同的视角从图像中提取所需的特征。以一只鸟的图像为例,通过使用不同的卷积核进行卷积操作,可以分别得到鸟的喙、翅膀、脚等特征信息,便于进行后续处理。

在卷积过程中使用的卷积核数量决定了输出特征图的维度。多卷积核卷积计算示意图如图2-6所示,通过使用两个3×3×3的卷积核对一幅5×5×3的图像进行卷积处理,可以得到大小为3×3、维度为2的输出特征图。

图2-6 多卷积核卷积计算示意图

2.1.4 空洞卷积

2.1.2节提到的扩大感受野的方法限制了所学习的卷积滤波器的空间上下文,这仅与层数线性相关。然而,在像素级密集预测的应用中,为了完成分割和标记等任务,获得理想的特征,需要通过卷积层中更大的感受野来聚合更广泛的上下文信息。空洞卷积是一种能够扩大感受野而不增加参数量的方法。它的核心思想在于引入空洞因子 d ,在执行卷积操作时,该参数决定了卷积在输入数据中的采样间隔。使用空洞滤波器进行卷积的示意图如图2-7所示,一个空洞因子为 d 的空洞表示原始卷积核在每个元素之间扩展 d -1个空格,且中间的空位置用零填充。这一策略的实施可以将尺寸为 f × f 的卷积核放大到 ,其原理在3.2.3节进行详细介绍。使用PyTorch框架实现空洞卷积的示例代码如算法2-2所示。该算法创建一个简单的网络,其中包含一个空洞卷积层,用于处理输入图像(输入特征图)。

图2-7 使用空洞滤波器进行卷积(卷积核大小为3×3,空洞因子 d =2)示意图 Zj7NT8akCqx5YN2Ax/RS0+jn/WsQD5Xjd2gnY0/G54jO85v0ct7HZj4NBw+5PVGj

点击中间区域
呼出菜单
上一章
目录
下一章
×