本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢!
此专栏是关于《自动驾驶汽车环境感知》书籍的笔记
3.卷积神经网络基本结构
3.1 概述
卷积神经网络由卷积层、池化层、全连接层(配合dropout)组成;
上图说明:一个卷积块为连续A个卷积层和b个池化层(A通常设置为2~5,b为0或1);一个卷积网络可以堆叠B个连续的卷积块,K个全连接层(B取值区间:1~100或更大;K一般为0~2);
3.2 卷积层
- 使用卷积层是为了能够提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器;
- 为了更充分利用图像局部信息,通常将神经元组织为三维结构的神经层,其大小为宽度M×高度N×深度D,由D个M×N大小的特征映射构成;
- 特征映射(feature map)为一幅图像在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征;
- 为了增强卷积网络的表示能力,可以在每一层使用多个不同的特征映射,以更好地表示图像的特征;
- 不同的特征映射实际上反映了通过卷积操作提取出来物体的不同的特征,从而能够更好地反映物体的特征;
- 在输入层,特征映射是图像本身;如果是灰度图像,就有一个特征映射,深度D=1;如果是彩色图像,分别有R、G、B三个颜色通道的特征映射,输入层深度D=3;
卷积层结构:
- 输入特征映射组: X ∈ R M × N × D X\in{R^{M\times{N}\times{D}}} X∈RM×N×D为三维张量(tensor),其中每个切片(slice)矩阵 X d ∈ R M × N X^d\in{R^{M\times{N}}} Xd∈RM×N为一个输入特征映射, 1 ≤ d ≤ D 1≤d≤D 1≤d≤D;
- 输出特征映射组: Y ∈ R M ′ × N ′ × P Y\in{R^{M'\times{N'}\times{P}}} Y∈RM′×N′×P为三维张量,其中每个切片矩阵 Y p ∈ R M ′ × N ′ Y^p\in{R^{M'\times{N'}}} Yp∈RM′×N′为一个输出特征映射, 1 ≤ p ≤ P 1≤p≤P 1≤p≤P;
- 卷积核: W ∈ R m × n × D × P W\in{R^{m\times{n}\times{D}\times{P}}} W∈Rm×n×D×P为四维张量,其中每个切片矩阵 W p , d ∈ R m × n W^{p,d}\in{R^{m\times{n}}} Wp,d∈Rm×n为一个二维卷积核, 1 ≤ d ≤ D , 1 ≤ p ≤ P 1≤d≤D,1≤p≤P 1≤d≤D,1≤p≤P;
- 输出特征映射
Y
p
Y^p
Yp的计算:用卷积核
W
p
,
1
,
W
p
,
2
,
.
.
.
,
W
p
,
D
W^{p,1},W^{p,2},...,W^{p,D}
Wp,1,Wp,2,...,Wp,D分别对输入特征映射
X
1
,
X
2
,
.
.
.
,
X
D
X^1,X^2,...,X^D
X1,X2,...,XD进行卷积,将卷积结果相加,并加上一个标量偏置
b
p
b^p
bp得到卷积层的净输入
Z
p
Z^p
Zp,经过非线性激活函数后得到输出特征映射
Y
p
Y^p
Yp;
Z p = W p ⊗ X + b p = ∑ d = 1 D W p , d ⊗ X d + b p , Y p = f ( Z p ) Z^p=W^p\otimes{X}+b^p=\sum^D_{d=1}W^{p,d}\otimes{X^d}+b^p,Y^p=f(Z^p) Zp=Wp⊗X+bp=d=1∑DWp,d⊗Xd+bp,Yp=f(Zp)
其中, W p ∈ R m × n × D W^p\in{R^{m\times{n}\times{D}}} Wp∈Rm×n×D为三维卷积核, f ( ⋅ ) f(·) f(⋅)为非线性激活函数,一般用 R e L U ReLU ReLU函数;如果希望卷积层输出 P P P个特征映射,将上述计算过程重复 P P P次,得到 P P P个输出特征映射 Y 1 , Y 2 , . . . , Y p Y^1,Y^2,...,Y^p Y1,Y2,...,Yp;
在输入为 X ∈ R M × N × D X\in{R^{M\times{N}\times{D}}} X∈RM×N×D,输出为 Y ∈ R M ′ × N ′ × P Y\in{R^{M'\times{N'}\times{P}}} Y∈RM′×N′×P的卷积层中,每一个输入特征映射都需要 D D D个滤波器及一个偏置;假设每个滤波器的大小为 m × n m\times{n} m×n,那么共需要 P × D × ( m × n ) + P P\times{D}\times{(m\times{n})}+P P×D×(m×n)+P个参数;
3.3 池化层
- 池化层抽象为一种对统计信息的提取;在卷积神经网络中,池化的主要目的是降维,即在保持原有特征的基础上最大限度地将数组的维数变小;
- 卷积层可以显著减少网络中连接的数量,但特征映射组中的神经元个数没有显著减少,对分类器的输入维数依然很高;在卷积层后加上池化层,可以降低维数,避免过拟合;
- 假设池化层的输入特征映射组为 X ∈ R M × N × D X\in{R^{M\times{N}\times{D}}} X∈RM×N×D,对于其中每一个特征映射 X d X^d Xd,将其划分为若干个区域 R m , n d , 1 ≤ m ≤ M ′ , 1 ≤ n ≤ N ′ R^d_{m,n},1≤m≤M',1≤n≤N' Rm,nd,1≤m≤M′,1≤n≤N′;然后对每个区域,以一定的方法求出一个能代表这个区域的值;
- 常用池化函数:最大池化和平均池化;
- 最大池化(maximum pooling):取一个区域内所有神经元的最大值;
- 平均池化(mean pooling):取一个区域内所有神经元的平均值;
- 典型池化层:将每个特征映射组划分为 2 × 2 2\times{2} 2×2大小的不重叠区域,使用最大池化或平均池化方式输出;
- 池化层可以有效减少神经元的数量,可以使得网络对一些小的局部形态改变保持不变性,并拥有更大的感受野;
- 卷积是将对应像素上的点相乘,再相加;池化侧重特征维数的减少,只关心卷积核的尺寸而不考虑取值;池化可以看成一个特殊的卷积层,卷积核大小为
m
×
m
m\times{m}
m×m,步长为
s
×
s
s\times{s}
s×s,卷积核为
max
\max
max函数或mean函数;
3.4 全连接层
全连接层类似前馈网络的某一层和下一层的连接关系,其中上一层每一个节点和下一层的节点间有一个权重连接,如下图:
3.5 dropout
- dropout是神经网络防止过拟合,提高泛化能力的一种措施;
- 过拟合:训练模型在训练集上性能表现较好,在测试集上性能表现较差的情况;
- 当模型参数太多,训练样本太少时容易出现过拟合情况;
- 为了解决过拟合问题,采用集成学习(ensemble)方式,即训练多个模型并组合起来进行预测;
- Hinton教授在2012年提出dropout算法:在每个训练批次中,随机让一部分隐层节点失效(节点值为0),从而改变网络结构,较少隐层节点间的相互作用,但每个节点值会保留下来;最终预测时,再打开所有隐层节点,使用完整的网络进行计算,相当于组合了多个不同的网络进行预测,这样可以提高泛化能力,有效防止过拟合;