【小知识】对于LeNet-5网络中卷积层的理解

很多同学在刚开始学习LeNet-5网络的时候,我很疑惑为什么它的第二层(C2)卷积得到的特征图的通道数是16,这似乎和我们传统观念上的卷积不太一样,所以本文来对这一疑惑做一些理解。

一、三维卷积

为了能够理解C2层得到的特征图的通道数为什么是16,我们需要先来了解一下什么是三维卷积。什么是三维卷积呢?
首先我们看下面这样一个卷积核:
【小知识】对于LeNet-5网络中卷积层的理解_第1张图片
从图中我们不难看出,这个卷积核是有深度的,也就是说我们之前所见到的卷积核的尺寸为 f × f × 1 f \times f\times1 f×f×1,而这个卷积核的尺寸为 f × f × 3 f \times f \times3 f×f×3,用这样一个3通道的卷积核在图像上滑动提取特征的过程就是三维卷积。
但是要注意的是,本文提到的三维卷积的概念只是针对卷积核的通道数提出的,而在利用Pytorch书写代码时,还应该使用Conv2d函数。
接下来我们来看下它的工作过程,假如我们有如图下图所示的一幅RGB图像:
【小知识】对于LeNet-5网络中卷积层的理解_第2张图片
为了简单起见,我们规定了这幅图像的每个通道上像素的灰度值都与第一个通道上的值相同,接着我们采用上面提到的卷积核开始进行卷积,过程如下图所示:
【小知识】对于LeNet-5网络中卷积层的理解_第3张图片
这个图可能对于你来说蕴含的信息量过于庞大,我们来详细分析一下特征图中的52这个值是如何来的,我们把卷积核滑动到图像上面,对三个通道分别用对应的卷积核进行卷积,会得到如下的式子:
R : 1 × 1 + 1 × 7 + 1 × 13 − 1 × 3 − 1 × 9 − 1 × 15 = − 6 R: 1 \times 1+1 \times 7+1 \times 13-1 \times 3-1 \times 9-1 \times 15=-6 R:1×1+1×7+1×131×31×91×15=6
G : 1 × 1 + 2 × 7 + 1 × 13 + 2 × 2 + 2 × 14 + 1 × 3 + 2 × 9 + 1 × 15 = 94 G: 1 \times 1+2 \times 7+1 \times 13+2 \times 2+2 \times 14+1 \times 3+2 \times 9+1 \times15=94 G:1×1+2×7+1×13+2×2+2×14+1×3+2×9+1×15=94
B : 1 × 1 + 1 × 2 + 1 × 3 − 1 × 13 − 1 × 14 − 1 × 15 = − 36 B: 1 \times 1+1 \times 2+1 \times 3-1 \times 13-1 \times 14-1 \times 15=-36 B:1×1+1×2+1×31×131×141×15=36
接着再对上面的结果进行求和,就得到了特征图的第一个元素,等式如下:
O u t p u t = − 6 + 94 − 36 = 52 Output = -6+94-36=52 Output=6+9436=52
而得到剩下的4个像素的过程与此完全相同,这个三维卷积核在整个图像滑动过一次之后,我们就得到了 2 × 2 × 1 2 \times 2 \times 1 2×2×1的特征图。
得到52的过程如下:
【小知识】对于LeNet-5网络中卷积层的理解_第4张图片
以上的过程说明,我们做三维卷积得到的特征图大小依然符合下面这个公式:
在这里插入图片描述
这个公式显示出了输出图像的尺寸与输入图像的尺寸以及卷积核尺寸、边界尺寸、步长之间的关系,当然我们这里的padding取0,步长stridelength取1.
而且因为我们只用了一个三维卷积核,所以得到的特征图的通道就是1 。也就是说,特征图的通道数等于上一层卷积核的个数。

二、多维卷积

将卷积核的通道数目由3推广到更多,就得到了多维卷积,计算方法与三维卷积完全相同,这里不再赘述。
了解到了多维卷积以后,我们就能够理解LeNet-5网络中C2层得到的特征图的个数为什么是16个了。C2层卷积层正是采用了16个尺寸为 5 × 5 × 6 5 \times 5 \times 6 5×5×6的卷积核对C1、S1层输出的尺寸为 14 × 14 × 6 14 \times 14 \times 6 14×14×6的特征图进行卷积。你可以称这样的卷积为多维卷积,但是因为卷积核的个数是16个,所以我们得到的特征图的深度也就为16。
【小知识】对于LeNet-5网络中卷积层的理解_第5张图片

你可能感兴趣的:(【小知识】对于LeNet-5网络中卷积层的理解)