深度学习03 卷积神经网络CNN
目录
CNN图像识别
CNN原理
输入层
卷积层
池化层
全连接层
输出层
感受野
CNN的经典模型
CNN图像识别
卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,在图像识别、计算机视觉等领域取得了显著的成果。
由于卷积操作的特性,CNN 对图像中的物体在不同位置出现具有较好的识别能力,即具有一定的平移不变性。传统神经网络难以自动学习这种不变性。
卷积神经网络处理图像有平移不变性、尺度不变性、旋转不变性
CNN 能够自动从图像中学习有效的特征层次结构,从低级特征(如边缘、纹理)到高级特征(如物体形状、部件)。传统神经网络通常需要手动设计特征提取器,这是一个复杂且依赖经验的过程。
CNN的最大特征是不需要做特征的提取
CNN原理
卷积神经网络包括多个层级,一般包括输入层、卷积层、池化层、全连接层和输出层。
输入层
接收原始图像
卷积层
什么是卷积?
对图像和卷积核做内积的操作就是卷积
卷积操作的几个参数
步长stride:每次滑动的位置步长。 卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数。 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
卷积层的计算
例如输入数据为32323的图像,用10个553的卷积核来进行操作,步长为1,边界0填充为2,最终输出结果为?
(32-5+22)/1 +1 =32,输出规模为3232*10的特征图
池化层
池化是一种降采样,为了减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。
常见的池化层:
最大池化、平均池化、全局平均池化、全局最大池化。
平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。 最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。
全局平均池化:计算整个图像区域的平均值作为该区域池化后的值。 全局最大池化:选整个图像区域的最大值作为该区域池化后的值。
池化层与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。
全连接层
当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间。 通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。
输出层
输出模型的预测结果
感受野
感受野是指卷积层中一个神经元(或滤波器)对输入层的感知范围,取决于卷积层的滤波器的大小、步幅和填充方式
例如图片是3通道: 卷积核为3个77的,则卷积核所需要的参数个数为:3(377)=441个 卷积核为3个33的3层,则卷积核所需要的参数个数为:3(333)+3(333) +3(333) =243个
CNN的经典模型
LeNet:第一个成功的卷积神经网络应用
AlexNet:类似LeNet,但更深更大。使用了层叠的卷积层来抓取特征(通常是一个卷积层马上一 个max pooling层)
ZF Net:增加了中间卷积层的尺寸,让第一层的stride和filter size更小。
GoogLeNet:减少parameters数量,最后一层用max pooling层代替了全连接层,更重要的是Inception-v4模块的使用。
VGGNet:只使用3x3 卷积层和2x2 pooling层从头到尾堆叠。 ResNet:引入了跨层连接和batch normalization。 DenseNet:将跨层连接从头进行到尾。