基于CNN 的单路口路网程序分析——CNN篇

0.学习目标

  1. 学习卷积神经网络(CNN)的结构
  2. 掌握图像卷积、池化等概念和原理

1.卷积神经网络(CNN)

1.1 为什么使用卷积神经网络?

作为人工神经网络(ANN)的一个推广和延申,卷积神经网络已经被证明是图像识别领域最有效的工具。就本例而言,我们从SUMO.gui界面直接读取像素点,这是一个高维的输入。卷积神经网络可以很好的完成自动提取特征、降维处理数据输入等任务。

1.2 卷积神经网络的基本结构

基于CNN 的单路口路网程序分析——CNN篇
上图是一个简单的CNN 网络例子。输入是一张图片的像素值;输入图像分为四类:狗,猫,船或鸟(原始LeNet主要用于字符识别任务)。从上图可以明显看出,在接收到船图像作为输入时,网络会正确分配所有四个类别中船的最高概率(0.94)。输出层中所有概率的总和应为1(在本文后面解释)。

可以看出,CNN的操作分为四步:

1.卷积
2.非线性处理(ReLU)
3.池化
4.分类(全连接层)

1.3 输入图像及概念

卷积神经网络的输入是一张照片,其实质是一个像素点矩阵,如下图。
基于CNN 的单路口路网程序分析——CNN篇

  • 通道(channel):黑白照片的通道数是1,像素点矩阵各个元素表示灰度值大小;彩色照片的通道数是3(红绿蓝),可以理解为三个相互堆叠的二维矩阵。

1.4 图像卷积及概念

卷积是一种 ‘对应相乘再相加’ 的数学运算。图像卷积和信号与系统里所学的卷积不同:
基于CNN 的单路口路网程序分析——CNN篇
图像卷积的过程如下(举例说明):
输入图像是一个5×5的矩阵;
基于CNN 的单路口路网程序分析——CNN篇
考虑另一个3 x 3矩阵(卷积核):
基于CNN 的单路口路网程序分析——CNN篇
然后,可以计算出5 x 5图像和3 x 3矩阵的卷积:
基于CNN 的单路口路网程序分析——CNN篇

  • 卷积核\过滤器(kernel\filter):其数学操作是卷积核在输入图像上以步长(stride)滑动,每次滑动到卷积核大小的方框时,对应元素相乘再相加。其作用是提取图像特征,在卷积核里面填充不同的数值就可以对输入图像进行不同特征的提取。
  • 深度(depth):一种卷积核可以提取一种特征(即产生一个输出像素点矩阵),所以n个卷积核数量就产生n个输出,对图像提取了n种特征。卷积核的数量n被称为深度。
  • 步长(Stride):卷积核每次滑动的距离。
  • 边界填充:可以从上面的动图里看出,输入图像和卷积核卷积之后,图片的尺寸变小。其规律是输入图像尺寸n×n,卷积核尺寸m×m;则输出图像的尺寸是n-(m-1),这是图像卷积的一种方式。如果不想让输出图像的尺寸变小怎么办?可以在输入图像的边界填充上数字(一般用0填充),就可以保证输入图像和输出图像的尺寸一致。

下面这张图可以更好的理解卷积核提取特征(卷积核就像是滤镜)
输入图像:
基于CNN 的单路口路网程序分析——CNN篇
对它进行卷积操作:
基于CNN 的单路口路网程序分析——CNN篇

1.5 引入非线性

每个卷积运算之后,都使用了一个称为ReLU的附加运算。ReLU代表整流线性单位,是一种非线性运算。其输出如下:
基于CNN 的单路口路网程序分析——CNN篇
ReLU的目的是在我们的神经网络中引入非线性,因为需要学习的大多数现实世界数据都是非线性的。引入非线性函数可以拟合各种各样的函数。

1.6 池化(pooling)

池化(也称为子采样或下采样)降低了每个特征图的尺寸,但保留了最重要的信息。空间池可以有不同的类型:最大值,平均值,总和等。
在“最大池化”的情况下,我们定义一个空间邻域(例如2×2窗口),并从该窗口内获取最大的元素。
基于CNN 的单路口路网程序分析——CNN篇

1.7全连接层(Full Connected layer)

全连接层位于卷积、池化操作之后。其特点是:每个节点都连接到相邻层中的每个其他节点。我的理解是,全连接层就是一个人工神经网络(ANN)。
基于CNN 的单路口路网程序分析——CNN篇

  • 全连接层的作用?
    全连接层和卷积层的作用是相辅相成的。卷积层负责提取特征,提供有意义的,低维的并且关键信息(基本)不变的特征空间;而全连接层用来学习该空间中的(可能是非线性的)函数。

1.8 总结

基于CNN 的单路口路网程序分析——CNN篇
到目前为止,我们已经了解了卷积、ReLU、池化。这些都是构建一个CNN的基础模块。卷积网络的总体训练过程可以总结如下:

  • 步骤1:我们使用随机值初始化所有过滤器和参数/权重
  • 步骤2: 网络将训练图像作为输入,进行正向传播步骤(卷积,ReLU和池化操作以及完全连接层中的正向传播)
  • 步骤3:计算输出层的总误差
  • 步骤4:使用反向传播来计算相对于网络中所有权重的误差梯度,并使用梯度下降来更新所有滤波器值/权重和参数值,以最大程度地减少输出误差。
  • 步骤5:对训练集中的所有图像重复步骤2-4。