Tensorflow06-CNN卷积神经网络
一、卷积神经网络思想
1、简介
卷积神经网络广泛使用于计算机视觉领域,主要用于提取图片的特征图(feature map)。不同于数学中的卷积,这里的卷积指的是对矩阵的一种运算方式(本质上就是离散化的数学卷积),使用卷积核对图片矩阵进行操作,可以减少图片的位置信息,增加图片的通道信息,从而得到高层语义信息。
2、卷积操作
在提出卷积的运算方式之前必须清楚,为什么不使用全连接神经网络对图片处理,为什么使用卷积操作,为什么可以使用卷积。
- 全连接网络处理图片这种数据量,特征数量很多的,表现的不好。
-
全连接神经网络每次提取特征面向的是全局(每次全面观察,这是费力且没有必要的),卷积神经网络则是使用卷积核每次提取局部的特征(每次观察图片的一小部分,且观察方式不变),使用不同的卷积核就可以观察到各种特征信息。通过卷积神经网络代替全连接神经网络,网络的参数量大大减少了(卷积神经网络的参数只存在于卷积核中)。
使用卷积核扫描区域并将卷积核对应位置的参数和扫描区域数值相乘求和得到特征值,扫描多个区域得到多个特征值组合的矩阵就是特征图(feature map)。需要注意的是,卷积操作是针对矩阵区域的,对多个通道的同区域会进行相应合并得到一个特征图(合并一般是分别对每个通道提取特征,然后特征值求和得到该区域的特征)。之所以使用卷积操作提取特征,这是由来已久的,在计算机视觉的历史上使用特定的滤波器处理图片是个常用手段,卷积很早就被提出了,不过那时候对于不同的任务人为设计不同的滤波器(卷积核),这里只是在深度学习的基础上沿用罢了(卷积核变为自动学习而不是人为设计)
总之,卷积操作就是利用 多个 卷积核(滤波器),对图像进行计算的过程,如下。
其中,卷积核一次移动的距离称为步长(stride),默认为 1。即一次移动一个单元格长度。
如果步长等于卷积核的边长 n,相当于对图像缩小了 n 倍。
通过上述卷积操作,可以得到尺寸变小的高通道特征图,如使用16个3*3卷积核提取5*5图片特征会得到维度为[3, 3, 16]的特征图,很显然,图片的尺寸变小了。
3、卷积核
每个卷积核表示对图像进行一次特征提取,比如我们使用 16 个 卷积核,则表示对同一个图像进行特征抽取 16次,每个卷积核样式不同,提取出的特征不同,所以得到的结果也不同。至于具体使用的卷积核样式,不用我们关心,深度学习算法会自动根据训练进行调整。
(1)均值模糊
即卷积核的操作是将所有像素点加起来求和,所以得到模糊图像。卷积核如下:
(2)高斯模糊
利用高斯分布进行对卷积核的取值,如下:
(3)边缘监测
使用如下的卷积核,可以分别对图像的横向边缘和纵向边缘提取出来。比较常用的是prewitt算子:
一个卷积核只能提取一种特征,所以使用多个卷积核提取多种特征,来做出判断和分类。
3、池化
在局部结点内进行操作;对于局部转换不敏感
池化 --> 降采样
例如最大池化,最小池化,平均池化。就是对局部求最大最小平均值。
4、卷积神经网络基本思想
局部连接和权值共享:有效的降低了神经网络的复杂性,大大减少了全连接神经网络的参数
卷积核的权值是从数据中学习得到的
二、卷积神经网络的结构
可以将卷积神经网络分为特征提取阶段 和 分类识别阶段。
特征识别阶段通常由多个特征层堆叠而成,每个特征层由卷积层和池化层组成。
处在网络前端的特征层用来捕捉图像局部的细节信息,后面的特征层捕捉图像中更加抽象的信息。
分类识别阶段通常是一个简单的识别器(例如全连接网络和支持向量机),接受最后一个特征层的输出,完成分类和识别。
如下图
1、卷积层(特征提取层)
2、池化层
在减少数据量的同时,保留有用信息。进一步抽象信息,提高了泛化性,防止过拟合。
如下图,经过池化缩小图片,可以提取到更有用的信息
池化有多种方式,最大值,均值,均方差,归一化等等,并且这也不一定是必须要做的一步,有些神经网络就没有池化层。