1 卷积神经网络
1.1 CNN介绍
CNN(Convolutional Neural Network)
雏形:LeCun的LeNet(1998)网络结构
1.2 CNN的发展
1986年,Runelhart和Hinton等人提出了反向传播(Back Propagation,BP)算法。
1998年,LeCun等人利用BP算法训练LeNet5网络,标志着CNN的真正面世。(硬件跟不上)
2006年,Hinton在他们的Science Paper中首次提出了Deep Learning的概念。
2012年,Hinton的学生Alex Krizhevsky在寝室用GPU死磕了一个Deep Learning模型,一举摘下了视觉领域竞赛ILSVRC 2012的桂冠,在百万量级的ImageNet数据集合上,效果大幅度超过传统的方法,从传统的70%多提升到80%多。
1.3 CNN的应用
2 全连接层
2.1 神经元
2.2 BP神经网络
BP(Back Propagation)算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。
2.3 实例:利用BP神经网络做车牌数字识别
2.3.1 输入层
1.读入一张RGB图像
每个像素(即每个小方块)都包含3个值,即R,G,B的分量。
2.将RGB图灰度化处理
此时,每个像素(即每个小方块)只有一个分量。
3.进行二值化处理(得到黑白图像,黑为0,白为255)
4.用5*3的滑动窗口在二值图像上进行滑动,每滑动一个位置就计算白色方框占整个窗口的比例,最右窗口不够3列,补0凑够3列。
5.将其展开拼接成一行。
6.将上面1*25的行向量作为神经网络的输入层。
2.3.2 输出层
one-hot编码是常用的一种对标签进行编码的一种方式:
例如上图所示,期望输出0~9,10个数,就构造10*10的矩阵。对0编码就是第一位置1,其他位置0;以此类推。
2.3.3 搭建网络
输入层25个节点,输出层10个节点,中间的隐藏层根据情况设定。
3 卷积层
3.1 卷积层介绍
CNN中独特的网络结构。
目的:进行图像的特征提取。
卷积特性:
- 拥有局部感知机制。
- 权值共享。
3.2 卷积过程
卷积核与输入特征矩阵做矩阵乘运算,各层矩阵相应位置相加,得出输出特征矩阵。
注意:
- 卷积核的channel与输入特征层的channel相同
- 输出的特征矩阵channel与卷积核个数相同
3.3 卷积后矩阵尺寸
在卷积操作过程中,矩阵经卷积操作后的尺寸由以下几个因数决定:
- 输入图像大小
- Filter大小F*F
- 步长S
- padding的像素数P
经卷积后的矩阵尺寸大小计算公式为:
N=(W-F+2P)/S+1
注:padding为当滑动窗口滑动到最右边列数不够,补零。一般上下左右对称补零。
4 池化层
4.1 池化层介绍
目的:对特征图进行稀疏处理,减少数据运算量。
MaxPooling下采样举例:
AveragePooling下采样层
4.2 池化层特点
- 没有训练参数
- 只改变特征矩阵的w和h,不改变channel
- 一般poolsize和stride相同