CNN是一种人工神经网络,CNN的结构可以分为3层:
卷积层(Convolutional Layer) - 主要作用是提取特征。
池化层(Max Pooling Layer) - 主要作用是下采样(downsampling),却不会损坏识别结果。
全连接层(Fully Connected Layer) - 主要作用是分类。
1.CNN解决的问题
- CNN卷积神经网络是一种专门用来处理具有类似网格结构的数据神经网络
- 在CNN出现之前,图像对于人工智能来说是一个难题,原因有2;
- 1.图像需要处理的数据量太大,导致成本很高,效率很低
- 2.图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不高
- 能够有效的将大数据量的图片降维成小数据量
- 能够有效的保留图片特征,符合图片处理的原则
- CNN是一种专门用来处理具有类似网格结构的
2.CNN五层网络结构
- 数据输入层/Input layer
- 预处理,图片的像素矩阵
- 卷积层/CONV layer(提取图像中的局部特征)
- 卷积层被称为过滤器(filter)或者内核(kernel)或卷积核
- 对输入图像和滤波矩阵(恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是卷积,也是卷积圣神经网络的名字
- ReLU激励层/ReLU layer
- 池化层/Pooling layer
- 全连接层/FClayer
3.池化层
为了有效地减少计算量,CNN 使用的另一个有效的工具被称为 “池化 (Pooling)”。池化就是将输入图像进行缩小,减少像素信息,只保留重要信息。
池化的操作也很简单,通常情况下,池化区域是 2*2 大小,然后按一定规则转换成相应的值,例如取这个池化区域内的最大值(max-pooling)、平均值(mean-pooling)等,以这个值作为结果的像素值。
下图显示了左上角 2*2 池化区域的 max-pooling 结果,取该区域的最大值 max (0.77,-0.11,-0.11,1.00),作为池化后的结果,如下图:
池化区域往左,第二小块取大值 max (0.11,0.33,-0.11,0.33),作为池化后的结果,如下图:
其它区域也是类似,取区域内的最大值作为池化后的结果,最后经过池化后,结果如下:
对所有的 feature map 执行同样的操作,结果如下:
最大池化(max-pooling)保留了每一小块内的最大值,也就是相当于保留了这一块最佳的匹配结果(因为值越接近 1 表示匹配越好)。也就是说,它不会具体关注窗口内到底是哪一个地方匹配了,而只关注是不是有某个地方匹配上了。
通过加入池化层,图像缩小了,能很大程度上减少计算量,降低机器负载。