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 零填充操作过程