目录
1.卷积
1.1一维卷积
1.2卷积的作用
1.3卷积扩展
1.4二维卷积
1.5 互相关
2.卷积神经网络
2.1 用卷积代替全连接
2.2 卷积层
2.3 汇聚层(池化层)
2.4 卷积网络结构
3.其它卷积种类
3.1空洞卷积
3.2 转置卷积/微步卷积
4 典型的卷积神经网络
4.1 LeNet-5
4.2 AlexNet
4.3 Inception
4.4 残差网络
利用全连接前馈网络处理图像时的问题:
(1)参数太多:
对于输入的1001003的RGB图像,全连接前馈网络,第一个隐藏层的每个神经元到输入层有1001003=30000个独立的连接,即权重参数,隐藏层神经元个数增加,参数规模急剧增加,网络训练效率低,易过拟合。
(2)局部不变性特征:
全连接网络很难提取自然图像中的局部不变性特征:尺度缩放、平移、旋转;这些操作不影响自然图像的语义信息。
卷积神经网络
CNN三个结构特性:局部连接、权重共享、汇聚
这三特性使CNN具有一定的平移、缩放、旋转不变性。参数更少。
感受野
卷积神经网络(CNN)收生物学感受野机制得来。感受野指视觉、听觉系统中的一些神经元只接受其支配的刺激区域内的信号。一个神经元的感受野指视网膜上特定的区域,只有这个区域的刺激才能激活该神经元。
假设一个信号发生器每个时刻 t 产生一个信号 x_t,其信息的衰减率为 w_k,即在 − 1 个时间步长后,信息为原来的 w_k 倍.我们把 w_1, w_2, w_3, ⋯ 称为滤波器(Filter)或卷积(Convolution Kernel). 假设滤波器长度为,它和一个信号序列 x_1, x_2, ⋯ 的卷积为:
信号序列x和滤波器w的卷积定义为:
其中∗表示卷积运算。
引入滑动步长和零填充增加卷积多样性。滑动步长 (Stride)是指滤波器在滑动时的时间间隔。零填充(Zero Padding)是在输入向量的边界外进行补零。示意图如下:
一个输入信息X和滤波器W的二维卷积定义为:
其中∗表示卷积运算。二维卷积实例如图:
均值滤波为将当前位置的像素设置为滤波器窗口中所有像素的平均值,即
卷积常作为特征提取的有效方法,图像经过卷积操作得到的结果叫做特征映射(Feature Map)。以下分别是:高斯滤波器、平滑去噪滤波器、边缘特征提取滤波器。
在后面学习中,都是使用互相关来代替卷积!!!
CNN一般由卷积层、汇聚层、全连接层构成。
两个原因:
不同的卷积核相当于不同的特征提取器。
为充分利用图像的局部信息,经常将神经元组织为三维结构的神经层,大小为 M * N * D ,由 D 个 M * N 大小的特征映射构成。为提高卷积网络的表示能力,可以在每一层使用多个不同的特征映射。
在输入层:特征映射是图像本身。
灰度图像:有一个特征映射,输入层深度D=1。
彩色图像:有RGB三个颜色通道的特征映射,输入层深度D=3。
卷积层的结构:
汇聚层(Pooling Layer) 也叫子采样层(Subsampling Layer),作用是进行特征选择,降低特征数量,从而减少参数数量。因为卷积层只减少了网络中连接的数量,却没有减少特征映射组中的神经元个数。
(1)最大汇聚(Max Pooling):取一个区域内所有神经元的最大值。
(2)平均汇聚(Mean Pooling):取一个区域内所有神经元的平均值。
汇聚层既可以减少神经元数量,又可以是网络对一些相对小的局部形态改变保持不变性,并拥有更大的感受野。
目前主流的卷积网络中,汇聚层仅含下采样操作,早期卷积网络(LeNet-5) 中,会在汇聚层后接激活函数。
典型的汇聚层为对 2 ∗ 2 的不重叠区域记性最大汇聚。汇聚层可以看做特殊的卷积层,卷积核大小为 K ∗ K ,步长为 S ∗ S,卷积核为max函数 或 mean函数。过大的采样区域会急剧减少神经元的数量,也会造成过多的信息损失。
图:汇聚层中最大汇聚过程示例
典型的卷积网络结构如图:
一个卷积块为连续M个卷积层和b个汇聚层(M常为2-5,b常为0或1)。一个卷积网络中可以堆叠 个连续的卷积块,然后在后面接 K 个全连接层(N常为1-100,b常为0-2)。
目前,网络结构趋向于更小的卷积核(11或33)、更深的结构(大于50层)。此外,由于卷积的操作性越来越灵活(不同的步长),汇聚层作用渐小,故目前流行的卷积网络中汇聚层在减少,趋向于全卷积网络。
对于卷积层想增加输出单元的感受野可以:
(1)增加卷积核大小(但会增加参数量)
(2)增加卷积的层数(但会增加参数量)
(3)卷积之前进行汇聚操作(但会丢失信息)
(4)空洞卷积(不增加参数量):通过给卷积核插入“空洞”来变相地增加其大小。
空洞卷积又称膨胀卷积,通过给卷积核插入空洞来增加大小,如果在卷积核每两元素之间插入D-1个空洞,卷积核的有效大小为:
D为膨胀率,当D=1时,卷积核为普通的卷积核。
常见的卷积是进行降维操作,但一些卷积也可以将低维特征映射到高维特征。
通过转置W实现低维到高维反向映射:
将低维特征映射到高维特征的卷积操作称为转置卷积(Transposed Convolution)也称为反卷积(Deconvolution)。步长 = 1,无零填充 = 0 的二维卷积和其对应的转置卷积:
微步卷积 通过减少转置卷积的步长 < 1来实现上采样操作,大幅提高特征维数。步长 < 1 的转置卷积也称为微步卷积。为了实现微步卷积,可以在输入特征之间插入0 来间接地使得步长变小。如果卷积操作的步长为 > 1,希望其对应的转置卷积的步长为 1/S。需要在输入特征之间插入 − 1 个0 来使得其移动的速度变慢。步长 = 2,无零填充 = 0 的二维卷积和其对应的转置卷积如图:
LeNet-5网络结构如图:
LeNet-5网络共有7层,输入图像为 32 × \times× 32,输出对应为10个类别数字的概率得分。每层结构如下:
C1卷积层:6个5×5的滤波器,得到6组28 × 28=784的特征映射,故C1层的神经元数量为6 × 784=4704,可训练参数数量为6 × 25+6=156,连接数为156 × 784=122304.
S2汇聚层:平均汇聚,采样窗口为 2 × 2,并接一个激活函数,神经元个数为6 × 14 × \times× 14 = 1176,可训练参数数量为 6 × ( 1 + 1 ) = 12,连接数为 6 × 196 × ( 4 + 1 ) = 5880。
C3卷积层:LeNet-5用连接表来定义输入和输出特征映射之间的依赖关系,共使用60个5 × 5 的滤波器,得到16组大小为10 × 10 的特征映射,神经元个数为16 × 100 = 1600,可训练参数数量为 60 × 25 + 1 = 1516 ,连接数为 100 × 1516 = 151600。
S4汇聚层:采样窗口为 2 × 2,得到16个 5 × 5大小的特征映射,可训练参数数量为 16 × 2 = 32 ,连接数为 16 × 25 × ( 4 + 1 ) = 2000。
C5卷积层:使用 120 × 16 = 1920个 5 × 5 的滤波器,得到120组大小为 1 × 1 的特征映射。C5层的神经元数量为120,可训练参数数量为 1920 × 25 + 120 = 48120,连接数为 120 × ( 16 × 25 + 1 ) = 48120。
F6全连接层:84个神经元,可训练参数数量为 84 × ( 120 + 1 ) = 10164 。连接数和可训练参数个数相同,为10164。
输出层:输出层由 10个径向基函数 组成。
连接表 卷积层的输入和输出特征映射之间是全连接关系,可用连接表转为为非全连接关系。
C3层的第0-5个特征映射依赖于S2 层的特征映射组的每3个连续子集,第6-11个特征映射依赖于S2 层的特征映射组的每4个连续子集,第12-14个特征映射依赖于S2 层的特征映射的每4个不连续子集,第15个特征映射依赖于S2 层的所有特征映射。
AlexNet是第一个现代深度卷积网络模型,首次使用GPU 进行并行训练,采用了ReLU 作为非线性激活函数,使用Dropout 防止过拟合,使用数据增强来提高模型准确率等。AlexNet 赢得了2012 年ImageNet 图像分类竞赛的冠军。
AlexNet网络规模超出了当时的单个GPU 的内存限制,AlexNet 将网络拆为两半,分别放在两个GPU 上,GPU 间只在某些层(比如第3层)进行通信。
AlexNet 的输入为224 × 224 × 3 的图像,输出为1 000 个类别的条件概率,具体结构如下:
卷积层1:两个大小为11 × 11 × 3 × 48 的卷积核,步长 = 4,零填充 = 3,得到两个大小为55 × 55 × 48 的特征映射组。
汇聚层1:为3 × 3 的最大汇聚操作,步长 = 2,得到两个27 × 27 × 48 的特征映射组。
卷积层2:两个大小为5 × 5 × 48 × 128 的卷积核,步长 = 1,零填充 = 2,得到两个大小为27 × 27 × 128 的特征映射组。
汇聚层2:3 × 3 的最大汇聚操作,步长 = 2,得到两个大小为13 × 13 × 128 的特征映射组。
卷积层3:两个路径的融合,使用一个大小为3 × 3 × 256 × 384 的卷积核,步长 = 1,零填充 = 1,得到两个大小为13 × 13 × 192 的特征映射组。
卷积层4:两个大小为3 × 3 × 192 × 192 的卷积核,步长 = 1,零填充 = 1,得到两个大小为13 × 13 × 192 的特征映射组。
卷积层5:两个大小为3 × 3 × 192 × 128 的卷积核,步长 = 1,零填充 = 1,得到两个大小为13 × 13 × 128 的特征映射组。
汇聚层3:3 × 3 的最大汇聚操作,步长 = 2,得到两个大小为6 × 6 × 128 的特征映射组。
全连接层:三个全连接层,神经元数量分别为4096、4096 和1 000。
AlexNet 在前2个汇聚层之后进行了局部响应归一化(Local Response Normalization,LRN)以增强模型的泛化能力。
在Inception 网络中,一个卷积层包含多个不同大小的卷积操作,称为Inception 模块。Inception 网络是由有多个Inception 模块和少量的汇聚层堆叠而成。
Inception 模块同时使用1 × 1、3 × 3、5 × 5 等不同大小的卷积核,并将得到的特征映射在深度上拼接(堆叠)起来作为输出特征映射。先用1 × 1卷积对四组平的特征抽取方式进行减少特征映射的深度。
Inception V1版本的GoogleNet是2014 年ImageNet 图像分类竞赛的冠军。由9个Inception V1模块和5个汇聚层、卷积层、全连接层共22层网络构成,并引入两个辅助分类器来加强监督信息以解决梯度消失问题:
Inception 网络有多个改进版本,如Inception V3:Inception v3 网络用多层的小卷积核来替换大的卷积核,以减少计算量和参数量,并保持感受野不变。具体包括:(1)使用两层3 × 3 的卷积来替换v1 中的5 × 5 的卷积;(2)使用连续的 × 1 和1 × 来替换 × 的卷积。引入了标签平滑以及批量归一化等优化方法进行训练。
残差网络(Residual Network,ResNet)通过给非线性的卷积层增加直连边(Shortcut Connection)提高信息的传播效率。
残差网络将很多个残差单元串联起来构成的一个非常深的网络。残差单元由多个级联的(等宽)卷积层和一个跨层的直连边组成,再经过ReLU 激活后得到输出: