1.1 卷积神经网络基础

卷积神经网络基础
- 卷积神经网络
- 全连接层
- 卷积层
- 池化层

一、卷积神经网络

CNN历史
雏形:LeNet:LeCun1998年提出的网络结构
只要包含了卷积层的网络都可以称为卷积神经网络

- 1986年:Rumelhart和Hinton等人提出了反向传播(Back Propagation, BP)
- 1998年 :LeCun等利用BP算法训练LeNet5网络,标志着CNN的真正面试(硬件跟不上)
- 2006年:Hinton在他们的Science Paper中首次提出了Deep Learning的概念
- 2012年:Hinton的学生Alex Krizhevsky在寝室用GPU死磕了一个Deep Learning模型,一举摘下了视觉领域竞赛ILSVRC 2012的桂冠,效果大幅度超过传统的方法,传统的70%多提升到80%多

卷积神经网络无处不在

检测、分割

无人驾驶

有GPU资源尽量使用GPU,因为测试中GPU和CPU的速度相差很大,GPU提升效率在20倍以上
图像描述

图像风格迁移

全连接层
-1是偏置

BP(back propagation)算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行
3层BP神经网络可以实现多维单位立方体R^m到R^n的映射,即能够逼近任何有理函数。

实例:利用BP神经网络做车牌数字识别

读入一个RGB图像,可以看到每一个像素里包含三个值,即RGB分量,首先将它灰度化,得到中间图,每个像素值只有一个分量,在进行二值化处理就得到一个黑白图像

5行3列滑动窗口,进行滑动,每滑动一个窗口就计算白色像素占整个像素的比例
后面越界可以补0或者提前判断越界情况更改窗口大小

得到一个5*5的矩阵,将这个矩阵按行进行展开,拼接成一个行向量,把这个行向量当成神经网络的输入层

输出层,one-hot编码是常用对标签编码的一种方式
不会重复,下面是期望输出编码

实际训练过程
输入层25个节点,输出节点10个,中间隐层可按情况设置

三、卷积层

CNN中独特的网络结构
其实是一个滑动窗口在特征图上进行滑动并计算
计算过程:卷积核的值和特征图上的值进行相乘然后相加得到一个值,每滑动一个窗口计算得到一个值,最后得到一个卷积特征图
卷积的目的:进行图像特征提取
卷积特性:
- 拥有局部感知机制
- 权值共享

普通神经网络VS 卷积神经网络

多维卷积操作
RGB
卷积核维度要和输入特征矩阵维度保持一致
卷积后进行求和操作得到一个卷积层,不同卷积核进行卷积得到不同输出特征矩阵,然后将不同卷积核得到的输出特征矩阵进行拼接,得到整个输出的特征矩阵

总结
- 卷积核的channel与输入特征层的channel相同
- 输出的特征矩阵channel与卷积核个数相同

思考
- 加上偏移量biass该如何计算
- 最后将卷积核偏置加在输出特征矩阵上就可以,每个值都加
2.加上激活函数后该如何计算
引入非线性因素,使其具备解决非线性问题的能力

3.如果卷积过程中出现越界的情况怎么办
使用padding方式在周围补上0

四、池化层

例如:MaxPooling下采样层(取最大值作为特征输入值)
目的:对特征图进行稀疏处理,减少数据运算量

平均下采样层(AveragePooling)
相加取平均值

池化层特点:
- 没有训练参数
- 只改变特征矩阵的w和h,不改变channel
- 一般poolsize和stride相同