深度学习与目标检测
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1 卷积层

卷积运算是卷积神经网络最重要的操作,也是“卷积神经网络”这个名字的由来。卷积包含两个关键操作:局部关联;窗口滑动。局部关联就是将卷积核看作滤波器;窗口滑动就是利用滤波器对局部数据进行计算。

卷积层涉及三个概念:步长(stride);扩充值(padding);深度(depth)。

● 步长是指卷积核在原始图像上滑动时间隔的像素数量。

● 扩充值是指当原始图像的像素数量不足以进行卷积训练时,人为地对原始图像进行扩充。例如,对一幅3×3的原始图像,需要将其扩充为7×7,然后进行卷积运算,那么此时的扩充值就是2,相当于在原始图像的基础上向外扩充了4个维度。在扩充的维度内,默认每个像素块的数值均为0。

● 深度是指原始图像拥有的通道数量。在学习卷积的过程中一般不强调深度的概念,但大家要知道,图像不止有平面的两个维度,还有一个维度,就是这里所说的深度。

卷积通常分为三种:valid卷积;full卷积;same卷积。接下来,将分别对这三种卷积进行详细的介绍。

3.1.1 valid卷积

本节介绍一种最常用的下采样卷积——valid卷积。如图3.3所示,左侧表示特征图的深度(在这里为3);右侧表示卷积层的深度,其中一个圆圈代表一个神经元,有多少个神经元,深度就是多少(显然,在这里卷积层的深度为5)。

图3.3 valid卷积核尺寸

valid卷积是卷积神经网络的核心运算。valid卷积的特点是卷积核不能超出特征图的范围。在不增加扩充值的情况下,这是一个下采样过程。如图3.4所示,上一层特征图中的一个子矩阵,通过卷积核的运算,转换成一个长和宽均为1但不限深度的节点矩阵。在卷积层中,卷积核的常见尺寸为3×3或者5×5(因为较小的尺寸通常能够更好地表达图像的特征),卷积核单元的深度要与上一层传递过来的矩阵的深度相同(但卷积层的深度是由卷积核的个数决定的)。具体的卷积操作就是将两个矩阵的对应部分相乘后全部相加。在如图3.4所示的卷积运算中,特征图的大小是5×5,卷积核的大小为3×3,步长为1,扩充值为0,最后得到的输出的大小也是3×3。

图3.4 valid卷积操作

在这里,每一层卷积的结果与步长、扩充值、卷积核的大小及该层输入的特征图的大小有一定的线性关系,具体输出维度Doutput通常使用式3.1计算(上述例子也可以用该公式进行验证)。

其中,Skernel代表卷积核的步长,Dkernel代表卷积核的维度,Padding代表扩充值的维度。

这个过程可以理解为:有一个滑动窗口,对图像进行卷积操作,对卷积核与输入的特征图做乘法运算后求和,得到3×3的卷积结果。也就是说,使用卷积核这个过滤器来过滤图像中的每个小区域,从而得到这些小区域的特征值。整个卷积层的前向传播,就是指这个卷积核从输入矩阵的左上角移动至右下角,在移动过程中通过计算生成输出矩阵的过程。

3.1.2 full卷积

与下采样卷积对应的是上采样卷积。本节将介绍full卷积这种典型的上采样卷积。

full卷积的特点是卷积核可以超出特征图的范围,但是卷积核的边缘要与特征图的边缘有交点。如图3.5所示,蓝色部分为原图像,灰色部分为卷积核,白色部分为对应卷积所增加的值为0的扩充,绿色部分为卷积后的图像。从卷积核右下角与图片左上角的重叠部分开始进行卷积操作,步长为1,卷积核的中心要与卷积后的图像像素点对应。可以看到,卷积后的图像是4×4的,比原来扩大了1倍(输入的图像是2×2的,卷积核的大小为3×3,卷积后的图像是4×4的)。其实,这才是完整的卷积计算,其他比它小的卷积结果都省去了对部分像素的卷积。在这里,输出维度仍可以使用式3.1计算得出。

图3.5 full卷积

如图3.5所示,滑动步长为1,扩充值为2,原始图像大小为2×2,卷积核维度为3×3,卷积后图像的维度为=4×4。

在深度神经网络的具体应用中,往往有多个卷积核。我们可以认为,每个卷积核代表了一种图像模式。如果某个图像块与此卷积核进行卷积后输出的值很大,则认为此图像块十分接近此卷积核。在实际训练中,卷积核的值是在学习过程中学到的。

3.1.3 same卷积

前面介绍了valid卷积与full卷积,我们不妨将两者的输入、输出做个比对。valid卷积会将输入尺寸卷积成小尺寸来输出,也就是将原图像的尺寸缩小。full卷积会将输入尺寸卷积成大尺寸来输出,也就是将原图像的尺寸放大。本节要介绍的same卷积则正好处于两者之间——保持特征图尺寸在卷积前后不变。

same卷积的卷积操作与上述两种卷积操作无异,不同点在于扩充值的选择。我们从式3.1着手理解。假如输入特征图的尺寸为n×n,我们用n替换式3.1中的DinputDoutput,得到式3.2,就达到了“输入尺寸等于输出尺寸”的目的。

对式3.2做变换,着重体现卷积核维度Dkernel与扩充值维度Padding的关系,得到式3.3。所以,不同于valid卷积和full卷积,same卷积的扩充值必须通过计算来指定。

same卷积的示例,如图3.6所示。绿色部分是原图像,蓝色部分是卷积核,下方白色部分为对应卷积操作增加的值为0的扩充部分,上方白色部分是卷积后的特征图。在初始阶段,卷积核的中心与原图像左下角的像素对应。对一个6×6的输入,用3×3的卷积核进行same卷积,滑动步长为1,那么扩充值就是=1。

图3.6 same卷积

综上所述,三种卷积既有相同点,又有不同点。相同点在于卷积核的中心与生成的特征图上的单元相对应;不同点在于扩充值的选取。在本质上,valid卷积和full卷积是一回事。