PyTorch自动驾驶视觉感知算法实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.2 通道(Channel)和三维卷积

卷积神经网络特别适合处理图像数据,这是因为卷积运算使用二维卷积核对图像进行扫描,让二维空间的几何连续性得以保留。读者可以观察到,图1-7中的3×3的卷积核包含了一条竖线,再观察输出特征图,会发现里面数值最大的特征也形成了一条竖线,正对应了原图中的竖线,这就是卷积核的作用:模式识别(Pattern Recognition)。卷积核保存了一种模式,输入图像经过卷积运算后,能把这种模式识别出来。例如,使用保存竖线模式的卷积核进行运算,输出的特征就是竖线特征图。不难想到,使用横线模式的卷积核就会输出横线特征图,使用斜线模式的卷积核就会输出斜线特征图。

既然一个卷积核可以识别一种模式,想要尽可能识别更多的模式,就需要很多卷积核。每一个卷积核都能输出一张特征图,一般称这张特征图是一个通道(Channel)。为了统一概念,输入图片也被认为是由通道组成的,如图1-6中所示的输入就是单通道输入(Single Channel Input)。若输入一张彩色图片,就是一个多通道输入(Multi-Channel Input),准确地说,是一个三通道输入。输入、输出可以有更高的维度,这种高维度的数据,一般称之为张量(Tensor)。例如,一张640×480分辨率的彩色图片就是一个维度为3×640×480的张量。

前文提到的二维卷积运算的输入是单通道张量,如果输入有多通道张量,是不是要把同一个卷积核在所有的通道上都做一遍卷积呢?这当然是可以的,这种卷积计算的方法称为深度卷积(Depth-Wise Convolution)。一般将一个三维张量的三个维度称为长、宽和深。通道的数目决定了张量的深度,对张量每一个深度的二维矩阵做卷积,称为深度卷积。

深度卷积的缺点是忽略了不同通道之间信息的相关性。例如,一幅彩色图片,RGB三个基本色组成了输入的三个通道,如果要识别蓝天所在的部分,除了考虑蓝色通道的值,同时还要考虑红色和绿色通道的值,只有三个通道的值同时纳入考虑,才能正确地识别出蓝天。为了学习通道之间的关联性,卷积神经网络一般会使用三维卷积核对张量进行卷积运算,卷积的计算方式和二维卷积类似。如图1-8所示,输入是一个深度为3的张量,如果选择3×3作为卷积核的尺寸(Kernel Size),那么这个卷积核就是一个维度为3×3×3的三维张量。同理,如果输入张量有10个通道,或者说深度为10,卷积核就是一个维度为10×3×3的张量。

• 图1-8 卷积运算三维视图

图1-8中一个三维卷积核对整个输入张量进行一次卷积运算后,只能得到特征图的一个通道。想要获得多通道的输出特征,就得使用多个三维卷积核,如图1-8所示,每一个卷积核都能输出一个特征图,于是得到了一个多通道的输出张量。四个三维卷积核放在一起,其实就组成了一个四维张量,该四维张量就是这个卷积层的权重,或者说是整个卷积层的卷积核。假设输入张量深度为10,输出特征图有20个通道,卷积核尺寸为3,那么这个卷积层的权重就是一个20×3×3×10的四维张量。

每一层卷积层输出的通道数目代表这一层可以识别的模式有多少种,显然,输出通道越多,可以识别的模式也就越多,能解决的问题就越复杂。