经典神经网络总结

1. LeNet-5(3层卷积 + 2层全连接)

第一个CNN网络,由 L e C u n LeCun LeCun提出,用于手写数字识别。

1.1 网络结构

在这里插入图片描述

1.2 各层参数详解

0. INPUT层——输入层
输入图像统一归一化到32 * 32
——————————————————————————————————————————————————————————
1. C1层——卷积层
输入图片:32 * 32
卷积核大小:5 * 5
卷积核个数:6
输出特征图大小:28 * 28 <= = = (32 - 5) / 1 + 1 <= = = (H - F + 2P) / S + 1
神经元数量:28 * 28 * 6
可训练参数:(5 * 5 + 1)* 6 (每个过滤器5 * 5个w参数和一个bias参数)
连接数:(5 * 5 + 1)* 6 * 28 * 28
卷积核的大小为55,总共就有6(55+1)=156个参数。对于卷积层C1,C1内的每个像素都与输入图像中的55个像素和1个bias有连接,所以总共有1562828=122304个连接(connection)。有122304个连接,但是我们只需要学习156个参数,主要是通过权值共享实现的。
————————————————————————————————————————————————————————————
2. S2层——池化层
输入:28 * 28 * 6
采样区域:2 * 2
采样数量:6 (与上一层卷积核数量相同)
输出特征图大小:14 * 14(28 / 2)
神经元数量:14 * 14 * 6
连接数:(2 * 2 + 1)* 6 * 14 * 14
S2中每个特征图的大小是C1中特征图大小的1/4。
—————————————————————————————————————————————————————————————
3. C3层——卷积层
输入:14 * 14 * 6
卷积核大小:5 * 5
卷积核个数:16
输出特征图大小:10 * 10 <= = = (14 - 5) / 1 + 1 <= = = (H - F + 2P) / S + 1
神经元数量:10 * 10 * 16
可训练参数:6 * (3 * 5 * 5 + 1) + 6 * (4 * 5 * 5 + 1) + 3 * (4 * 5 * 5 + 1) + 1 * (6 * 5 * 5 + 1) = 1516
连接数:10 * 10 * 1516 = 151600
经S2层后得到6个特征图,现需从这6个特征图中提取出16个特征图,采用以下方式:
在这里插入图片描述
C3的前6个feature map(对应上图第一个红框的6列)与S2层相邻的3个feature map相连接(上图第一个红框),后面6个feature map与S2层相邻的4个feature map相连接(上图第二个红框),后面3个feature map与S2层部分不相邻的4个feature map相连接,最后一个与S2层的所有feature map相连。在这里插入图片描述—————————————————————————————————————————————————————————————
4. S4层——池化层
输入:10 * 10 * 16
采样区域:2 * 2
采样数量:16 (与上一层卷积核数量相同)
输出特征图大小:5 * 5(10 / 2)
神经元数量:5 * 5 * 16
连接数:(2 * 2 + 1)* 16 * 5 * 5
S4中每个特征图的大小是C3中特征图大小的1/4。
—————————————————————————————————————————————————————————————
5. C5层——卷积层
输入:5 * 5 * 16
卷积核大小:5 * 5
卷积核个数:120
输出特征图大小:1 * 1 <= = = (5 - 5) / 1 + 1 <= = = (H - F + 2P) / S + 1
神经元数量:1 * 1 * 120
可训练参数:120 * (5 * 5 * 16 + 1)= 48120
连接数:120 * (5 * 5 * 16 + 1)= 48120
经S4层后得到16个特征图,现需从这16个特征图中提取出120个特征图,令每个特征图都与上一层16个特征图相连。
在这里插入图片描述—————————————————————————————————————————————————————————————
6. F6层——全连接层
输入:1 * 1 * 120
输出: 84
—————————————————————————————————————————————————————————————
7.F7层——全连接层
输入:84
输出:10

2. AlexNet(5层卷积 + 3层全连接 + 引进relu + LRN + GPU)

AlexNet是由 A l e x Alex Alex 提出的首个应用于图像分类的深层卷积神经网络,其使用GPU代替CPU进行运算,使得在可接受的时间范围内模型结构能够更加复杂,它的出现证明了深层卷积神经网络在复杂模型下的有效性,使CNN在计算机视觉中流行开来,直接或间接地引发了深度学习的热潮。

2.1 模型结构

在这里插入图片描述

2.2 各层参数详解

0. INPUT层——输入层
输入图像统一归一化到227 * 227 * 3
—————————————————————————————————————————————————————————————
C1层—— 卷积层
①. 卷积
输入图片:227 * 227 * 3
卷积核:11 * 11
卷积核数量:96
输出特征图大小:55 * 55 <= = = (227 - 11 + 2 * 0) / 4 + 1 <= = = (H - F + 2P) / S + 1, S = 4,padding = 0
②. relu激活
③. LRN 归一化(局部响应归一化)
④. maxpooling池化
输入:55 * 55
采样区域:3 * 3, stride = 2, pad = 0
采样数量:96 (与上一层卷积核数量相同)
输出特征图大小:27 * 27 <=== (55 - 3) / 2 + 1 = 27
将96个特征图分为两组,每组48个特征图,分别在GPU上训练。
——————————————————————————————————————————————————————————
C2层——卷积层
①. 卷积
输入图片:27 * 27 * 96
卷积核:5 * 5
卷积核数量:256
输出特征图大小:27 * 27 <= = = (27 - 5 + 2 * 2) / 1 + 1 <= = = (H - F + 2P) / S + 1, S = 1,padding = 2
②. relu激活
③. LRN 归一化(局部响应归一化)
④. maxpooling池化
输入:27 * 27 * 256
采样区域:3 * 3, stride = 2, pad = 0
采样数量:256(与上一层卷积核数量相同)
输出特征图大小:27 * 27 <=== (27 - 3) / 2 + 1 = 13
将256个特征图分为两组,每组128个特征图,分别在GPU上训练。
————————————————————————————————————————————————————————————
C3层——卷积层
输入图片:13 * 13 * 256
卷积核:3 * 3
卷积核数量:384
输出特征图大小:13 * 13 <= = = (13 - 3 + 2 * 1) / 1 + 1 <= = = (H - F + 2P) / S + 1, S = 1,padding = 1
②. relu激活
将384个特征图分为两组,每组192个特征图,分别在GPU上训练。
—————————————————————————————————————————————————————————————
C4层——卷积层
输入图片:13 * 13 * 384
卷积核:3 * 3
卷积核数量:384
输出特征图大小:13 * 13 <= = = (13 - 3 + 2 * 1) / 1 + 1 <= = = (H - F + 2P) / S + 1, S = 1,padding = 1
②. relu激活
将384个特征图分为两组,每组192个特征图,分别在GPU上训练。
————————————————————————————————————————————————————————————
C5层——卷积层
①. 卷积
输入图片:13 * 13 * 384
卷积核: 3 * 3
卷积核数量:256
输出特征图大小:13 * 13 <= = = (13 - 3 + 2 * 1) / 1 + 1 <= = = (H - F + 2P) / S + 1, S = 1,padding = 1
②. relu激活
③. maxpooling池化
输入:13 * 13 * 256
采样区域:3 * 3, stride = 2, pad = 0
采样数量:256(与上一层卷积核数量相同)
输出特征图大小:6 * 6 <=== (13 - 3) / 2 + 1 = 6
将256个特征图分为两组,每组128个特征图,分别在GPU上训练。
——————————————————————————————————————————————————————————
F6层——全连接层
①. 全连接
输入图片:6 * 6 * 256
输出图片:4096
②. relu激活
输出图片:4096
③. dropout
输出图片:4096
将4096个特征图分为两组,每组2048个特征图,分别在GPU上训练。
—————————————————————————————————————————————————————————————F7层——全连接层
①. 全连接
输入图片:4096
输出图片:4096
②. relu激活
③. dropout
将4096个特征图分为两组,每组2048个特征图,分别在GPU上训练。
—————————————————————————————————————————————————————————————F8层——全连接层
①. 全连接
输入图片:4096
输出图片:1000
————————————————————————————————————————————
整个网络层参数如下:
在这里插入图片描述

2.3 Alex Net创新点

1. 在2个GPU上训练,提高速度
2. 样本增强,减少过拟合
3. 采用Relu作为激活函数,防止梯度消失
4. 采用LRN层(局部响应归一化),提高精度
5. 采用重叠最大池化(池化步长 < 核尺寸)
6. 采用Dropout防止过拟合

3. ZF Net

3.1 网络结构

在这里插入图片描述

3.2 ZF的创新点

1. 通过非池化和解卷积实现了可视化。
2. 可视化可以在训练时观察特征的演变过程。
3. 将Alex Net的第一层卷积核由size11 * 11,s = 4变为了size7 * 7,s = 2。
4. 将Alex Net在2个GPU上训练变为了在一个GPU上训练。

4. VGG Net

4.1 网络结构

在这里插入图片描述

4.2 网络参数

在这里插入图片描述

4.3 VGG Net的创新点

1. 结构简洁
VGG-16 包含5组卷积,卷积核大小均为3 * 3,每组卷积后跟一个maxpool,池化尺寸均为2 * 2,最后接3个全连接层和1个softmax输出层,即16 = (2 + 2 + 3 + 3 + 3) + 3。
2. 小卷积核和多卷积子层:
2个3 * 3的卷积获得的感受野大小相当于1个 5 * 5的卷积,3个3 * 3的卷积获得的感受野大小相当于1个 7 * 7的卷积。
这种替换方式能够增加非线性映射,同时可以减少参数。
3. 小池化核
相比AlexNet的3x3的池化核,VGG全部采用2x2的池化核。
4. 通道数多
VGG网络第一层通道数为64,后面每层都进行翻倍,最多到512个。增加通道数,能够提取更多的信息
5. 特征图空间分辨率单调递减,特征图通道数单调递增
卷积核专注于扩大通道数,池化专注于缩小特征图。
6. 测试阶段全连接转卷积
测试阶段将全连接转化为卷积后可以不再统一输入图像大小。

4.4 VGG实验的结论

1. 增加网络深度能够提高准确率。
2. LRN层无性能增益。
3. 多个小卷积核比单个大卷积核性能好

5. GoogLE Net

5.1 背景

一般来说提升网络性能的最直接方法就是增加网络深度(网络层次数量)和宽度(神经元数量)
但这种方式会存在以下问题:
1. 网络越深,越易发生梯度消失。
2. 网络越宽,参数越多,计算量大,易过拟合。
考虑将全连接变为稀疏连接
GoogLE Net 提出Inception网络结构既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能

5.2 Inception V1

5.2.1 Inception V1的网络结构

最初结构
在这里插入图片描述
参数数量 :(1 * 1 * 192 * 64)+ (3 * 3 * 192 * 128) + (5 * 5 * 192 * 32) = 387072
最终输出feature map个数:64 + 128 + 32 + 192 = 416

注意:
** 1. 池化层不引入新参数,通道数也不变,仍为192。**
2. 同个通道的卷积核提取同一层的特征,他们参数共享,而不同通道的卷积核提取的是不同层特征,因而参数不共享。故64 * 192

新结构
在这里插入图片描述新结构在 3 * 3, 5 * 5的卷积前以及池化后增加了1 * 1的卷积层用于降维和减少参数。
其中128个3 * 3的卷积核前使用了96个1 * 1的卷积核,32个5 * 5的卷积核前采用了16个1 * 1的卷积核,192个池化层后用了32个1 * 1卷积。
参数数量 :(1 * 1 * 192 * 64)+ (1 * 1 * 192 * 96 + 3 * 3 * 96 * 128) + (1 * 1 * 192 * 16 + 5 * 5 * 16 * 32) + (1 * 1 * 192 * 32) = 163328 最终输出feature map个数:64 + 128 + 32 + 32 = 256

可以得出结论 1 * 1卷积核的作用在于:
** 1. 降维**(即减少通道数,有时也可升维,取决于卷积核个数)。
** 2. 减少参数,降低了计算。**
** 3. 增加了非线性映射次数。(1 * 1 卷积后面通常会跟随非线性激活函数)
** 4. 实现跨通道的交互和信息整合。

** 5. 可以替代全连接层使用。**(如1 * 1 * 4096 <=> 4096)

5.2.2 Inception V1的创新点

1. 不同尺度的卷积核横向排列,输出通道间组合信息,更好的提取特征。
2. 采用多个1 * 1的卷积层实现了降维和减少参数。
3. 采用全局平均池化层替代了全连接层, 减少了参数,训练更快。

5.3 Inception V2

5.3.1 Inception V1的创新点

1. 引入了BN层, 加快了收敛速度,减轻了过拟合,提高了精度。
2. 仿造VGG,用2个3 * 3代替一个5 * 5
在这里插入图片描述

5.4 Inception V3的创新点

1. 将一个较大的二维卷积拆成两个较小的一维卷积,节约了大量参数。
2. 非对称拆分方式增加了非线性能力。(7 * 7----> 1 * 7 + 7 * 1)
3. 优化了Inception模块。(三种不同结构)
在这里插入图片描述

5.5 Inception V4的创新点

1. 融合了Res Net方法,提高了训练速度。

6. Res Net

6.1 背景

传统的卷积网络或全连接网络在信息传递时存在信息丢失的问题,同时还有梯度消失和梯度爆炸的问题,导致很深的网络无法训练
Res Net 通过将输入信息绕道传到输出,保护信息的完整性。整个网络只需学习输入、输出的差别。

6.2 网络结构

Res Net中有两种残差模块,一种以两个3 * 3的卷积网络串在一起,另一种以1 * 1、 3 * 3、 1 * 1的卷积网络串在一起。
bottleneck模块
右侧为bottleneck模块,其使用1 * 1的卷积进行缩放feature map的维度,减少了参数,加快了训练速度。
在这里插入图片描述
ResNet有不同的网络层数,比较常用的是50-layer,101-layer,152-layer。他们都是由上述的残差模块堆叠在一起实现的。
在这里插入图片描述

6.2 Res Net的创新点

1. 引入了残差学习的思想,即学习实际输出和输入之间的残差。
2. 设计了skip connection的残差结构,使得网络达到很深的层次,同时提升了性能。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值