第九章 卷积神经网络解读
9.1 计算机视觉
目标分类
目标识别
64x64x3=12288
1000x1000x3=3000000
使用传统神经网络处理机器视觉面临的一个挑战是:数据的输入会非常大
一般的神经网络很难处理海量图像数据。解决这一问题的方法就是卷积神经网络
9.2 卷积运算
神经网络由浅层到深层,分别可以检测出不同层次的信息,在计算机视觉中我们依托深度卷积神经网络,来依次学习理解图片的边缘特征、局部特征(例如眼睛、鼻子等),直至最后一层综合前面检测的特征来识别整体图像内容。
9.3 边缘检测
- 垂直边缘检测
- 水平边缘检测
*:表示卷积
9.4 Padding填充
输入大小:nxn
滤波器大小:fxf
输出大小:(n-f+1)x(n-f-1)
问题:边缘的次数较少,中间的次数较多,因此忽略了边缘的信息,我们可以在卷积前,先填充一层像素。
Padding=1:填充一圈
- Valid卷积:不填充
- Same卷积:填充后,输出输出大小一样,此时p=(f-1)/2
9.5 Stride卷积步长
Stride=2
输出大小:(n+2p-f)/s +1
9.6 三维卷积
不同通道的滤波器可以不相同。
9.7 单层卷积网络
9.8 简单卷积网络示例
卷积神经网络包含有三种典型的层结构:
- Convolution
- Pooling
- Fully connected
9.9 池化层
1、Max pooling
缩减模型的大小,提高计算速度,同时减小噪声提高所提取特征的稳健性。
2、Average pooling
9.10 卷积神经网络示例
9.11 为什么使用卷积??
- 参数共享:一个滤波器能对整个输入的某一特征进行探测
- 稀疏连接:输入与输出之间的连接是稀疏的,每个输出值只取决于输入在局部的一小部分值
由于CNN参数数量较小,所需的训练样本就相对较少,因此在一定程度上不容易发生过拟合现象。
第十章 经典CNN网络实例详解
10.1 经典卷积网络
1、LeNet5:手写字体识别模型,90年代提出来,是最早的卷积神经网络之一
当 LeNet-5 模型被提出时,其池化层使用的是平均池化,而且各层激活函数一般选用 Sigmoid 和 tanh。现在我们更多的会使用最大池化并选用 ReLU 作为激活函数。
2、AlexNet
3、VGG-16:证明了增加网络的深度能够在一定程度上影响网络最终的性能,大家广泛的将其作为典型CNN结构。
16是指网络中包含16个卷积层和全连接层,超参数较少
10.2 残差网络 ResNet
随着神经网络层数变多和变深,会带来严重的梯度消失和梯度爆炸问题,使得模型难以寻训练成功!
在网络结构层面,一种解决方法是人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为Residual Networks(ResNets)残差网络。
说明残差网络有助于解决梯度消失和梯度爆炸问题,使得在训练更深网络的同时,又能保证良好的性能。
残差网络有效的原因?
10.3 1x1卷积(滤波器的尺寸为1)
相当于乘积操作,类似全连接层的神经网络结构,从而对数据进行升降维度
10.4 Inception网络
之前的CNN典型结构,都只选择单一尺寸和类型的滤波器,而Inception网络的作用是代替人工来确定卷积层中的滤波器尺寸与类型
Inception 网络选用不同尺寸的滤波器进行 Same 卷积,并将卷积和池化得到的输出组合拼接起来,最终让网络自己去学习需要的参数和采用的滤波器组合。
Inception引入了1x1卷积来减少计算量问题。1x1 的卷积层通常被称作瓶颈层(Bottleneck layer)。借助在网络中合理设计瓶颈层,可以在保持网络性能的前提下显著缩小计算规模。
10.6 迁移学习
10.7 数据扩增
镜像翻转、随机裁剪、色彩转换