
卷积神经网络CNN与图像识别
卷积神经网络(CNN)深度学习算法目前在很多领域取得成功的应用,例如: 语音识别,图像识别,图像分割,自然语言处理等。釆用卷积神经网络算法(CNN)是通过机器学习方式提高算法准确率,对X光图片进行特征提取,推理与分类存储,通过深度学习的方法建立违禁品与危化品数据模型,实现实时对X光扫描视频流图像信息内容进行识别。
通过卷积神经网络(CNN)建立深度学习算法,将日常收集的违禁品图像数据上传云服务器;CNN可以自动从(通常是大规模)数据中学习特征,并把结果向同类型未知数据泛化;自动学习系统定期对新数据进行学习及模型训练;通过互联网将新模型下发安检设备完成自动更新。
用CNN卷积神经网络识别图片,一般需要的步骤有:
卷积层:卷积层负责提取图像中的局部特征;
池化层:池化层用来大幅降低参数量级(降维);
全连接层:全连接层类似传统神经网络的部分,用来输出想要的结果。
1、卷积层工作原理
卷积层的作用:就是提取图片每个小部分里具有的特征
假定我们有一个尺寸为6 ∗ 6 6*66∗6 的图像,每一个像素点里都存储着图像的信息。我们再定义一个卷积核(相当于权重),用来从图像中提取一定的特征。卷积核与数字矩阵对应位相乘再相加,得到卷积层输出结果。
(429 = 181+540+511+550+1211+750+351+240+204*1)
卷积核的取值在没有以往学习的经验下,可由函数随机生成,再逐步训练调整
当所有的像素点都至少被覆盖一次后,就可以产生一个卷积层的输出(下图的步长为1)
机器一开始并不知道要识别的部分具有哪些特征,是通过与不同的卷积核相作用得到的输出值,相互比较来判断哪一个卷积核最能表现该图片的特征——比如我们要识别图像中的某种特征(比如曲线),也就是说,这个卷积核要对这种曲线有很高的输出值,对其他形状(比如三角形)则输出较低。卷积层输出值越高,就说明匹配程度越高,越能表现该图片的特征。
现在我们用上面的卷积核,来识别这个简化版的图片——一只漫画老鼠
当机器识别到老鼠的屁股的时候,真实区域数字矩阵与卷积核相乘作用后,输出较大:6600
而用同一个卷积核,来识别老鼠的耳朵的时候,输出则很小:0
我们就可以认为:现有的这个卷积核保存着曲线的特征,匹配识别出来了老鼠的屁股是曲线的。我们则还需要其他特征的卷积核,来匹配识别出来老鼠的其他部分。卷积层的作用其实就是通过不断的改变卷积核,来确定能初步表征图片特征的有用的卷积核是哪些,再得到与相应的卷积核相乘后的输出矩阵
2、池化层工作原理
池化层的输入就是卷积层输出的原数据与相应的卷积核相乘后的输出矩阵
池化层的目的:
为了减少训练参数的数量,降低卷积层输出的特征向量的维度
减小过拟合现象,只保留最有用的图片信息,减少噪声的传递
最常见的两种池化层的形式:
最大池化:max-pooling——选取指定区域内最大的一个数来代表整片区域
均值池化:mean-pooling——选取指定区域内数值的平均值来代表整片区域
举例说明两种池化方式:(池化步长为2,选取过的区域,下一次就不再选取)
在4 ∗ 4 4*44∗4的数字矩阵里,以步长2 ∗ 2 2*22∗2选取区域,比如上左将区域[1,2,3,4]中最大的值4池化输出;上右将区域[1,2,3,4]中平均值5/2池化输出
3、全连接层工作原理
卷积层和池化层的工作就是提取特征,并减少原始图像带来的参数。然而,为了生成最终的输出,我们需要应用全连接层来生成一个等于我们需要的类的数量的分类器。
全连接层的工作原理和之前的神经网络学习很类似,我们需要把池化层输出的张量重新切割成一些向量,乘上权重矩阵,加上偏置值,然后对其使用ReLU激活函数,用梯度下降法优化参数既可。