CNN卷积神经网络
目录
一、BP神经网络回顾
人工全连接神经网络
(1)每相邻两层之间的每个神经元之间都是有边相连的
(2)当输入层的特征维度变得很高时,这时全连接网络需要训练的参数就会增大很多,计算速度就会变得很慢
传统神经网络存在的问题:
(1)权值太多,计算量太大
(2)权值太多,需要大量样本进行训练
二、CNN卷积神经网络
1、CNN的主要概述
卷积层的神经元只与前一层的部分神经元节点相连,即它的神经元间的连接是非全连接的,且同一层中某些神经元之间的连接的权重w和偏置b是共享的(即相同的)大量地减少了需要训练参数的数量
CNN主要特点:减少权值,局部连接,权值共享
CNN通过感受野和权值共享减少了神经网络需要训练的参数的个数。
2、CNN的一般结构
输入层:用于数据的输入
卷积层:使用卷积核进行特征提取和特征映射
激励层:由于卷积也是一种线性运算,因此需要增加非线性映射
池化层:压缩数据和参数的量,减小过拟合。
全连接层:通常在CNN的尾部进行重新拟合,减少特征信息的损失
输出层:用于输出结果
(1)输入层
在CNN的输入层中,(图片)数据输入的格式与全连接神经网络的输入格式(一维向量)不太一样。CNN的输入层的输入格式保留了图片本身的结构。
对于黑白的 28×28 的图片,CNN的输入是一个28×28 的的二维神经元;
对于RGB格式的28×28图片,CNN的输入则是一个 3×28×28 的三维神经元(RGB中的每一个颜色通道都有一个 28×28 的矩阵),如下图所示:
(2)卷积层
需要明确的几个概念:
感受视野( local receptive fields)
即感受上一层的部分特征。在卷积神经网络中,隐藏层中的神经元的感受视野比较小,只能看到上一次的部分特征,上一层的其他特征可以通过平移感受视野来得到同一层的其他神经元。
卷积核
感受视野中的权重矩阵
共享权值(shared weights)
步长(stride)
感受视野对输入的扫描间隔称为步长(stride)
边界扩充(pad)
当步长比较大时(stride>1),为了扫描到边缘的一些特征,感受视野可能会“出界”,这时需要对边界扩充(pad)
特征映射图(feature map)
通过一个带有卷积核的感受视野 扫描生成的下一层神经元矩阵 称为一个特征映射图(feature map)
通过以下图理解以上概念及卷积计算
(3)激励层
激励层主要对卷积层的输出进行一个非线性映射,因为卷积层的计算还是一种线性计算。使用的激励函数一般为ReLu函数
卷积层和激励层通常合并在一起称为“卷积层”。
(4)池化层
当输入经过卷积层时,若感受视野比较小,布长stride比较小,得到的feature map(特征映射图)还是比较大,可以通过池化层来对每一个feature map进行降维操作,输出的深度还是不变的,依然为feature map的个数。
池化层也有一个“池化视野(filter)”来对feature map矩阵进行扫描,对“池化视野”中的矩阵值进行计算,一般有两种计算方式:
(1)Max pooling:取“池化视野”矩阵中的最大值
(2)Average pooling:取“池化视野”矩阵中的平均值
(5)全连接层和输出层
全连接层主要对特征进行重新拟合,减少特征信息的丢失。
输出层主要准备做好最后目标结果的输出。
(6)中间还可以使用其他的功能层
归一化层(Batch Normalization):在CNN中对特征的归一化
切分层:对某些(图片)数据的进行分区域的单独学习
融合层:对独立进行特征学习的分支进行融合
三、CNN卷积神经网络的应用
1、目标分类
2、目标检测(目标定位、人脸检测、人形检测、车辆检测)
(R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD、YOLO V2、YOLO V3)
3、目标识别(人脸识别、人形识别) 人脸识别算法演化史 (DeepFace、FaceNet、DeepID)
4、目标跟踪
5、目标分割
6、关键点检测 关键点检测
参考博客资料:
1、https://blog.csdn.net/cxmscb/article/details/71023576
2、https://blog.csdn.net/xierhacker/article/details/53463525
3、https://www.cnblogs.com/skyfsm/p/6790245.html