摘 要:深度学习是目前人工智能领域研究的热点,并有着巨大突破,在语音识别、自然语言处理、计算机视觉、图像与视频分析、多媒体等诸多领域的应用取得了巨大成功。本文首先将简要概述深度学习及所使用的卷积神经网络算法及其特点,其次重点阐述卷烟数据的收集和深度学习模型的搭建过程,最后讨论深度学习应用到卷烟种类识别的问题和主要挑战。
关键词:深度学习;卷积神经网络;ResNet;卷烟分类
一、深度学习概念
深度学习的概念源自于人们对神经网络的研究,是机器学习的一种,它是基于对数据进行表征学习的一种方法。神经网络由仿生学延伸而来,它借鉴了生物的大脑神经网络处理方式,因此称之为人工神经网络。使用深度学习可以通过非监督式或半监督式的特征学习使用分层特征提取从而提高运算处理速度从而替代手工获取特征。
二、卷积神经网络
卷积神经网络是神经网络的一种,因为卷积神经网络需要非常少的数据预处理工作,是一种多层次网络结构的深度学习算法。对局部区域的分析处理,通过层次结构化,局部特征的提取从而达到全局训练的目的。目前卷积神经网络已经广泛应用到了在图像分类和识别的领域。通过卷积运算挖掘图像数据中的局部特征的相关性,利用反向传播算法从而减少网络中训练参数的数量。使用卷积神经网络中处理图像,是将图像中的局部区域通过卷积处理当作层次结构中的底层的输入数据。图像数据前向传播经过卷积运算到达并通过网络中的每一层,从而根据局部特征的提取获得局部的相关性。根据局部区域的相关性可以获得图像的边界和角落等,由于卷积神经网络依据的是局部特征的相关性所以在识别对原图像产生位移或者拉伸及旋转时依然有很高的识别度,特别适用于图像的识别和分类。
三、卷烟分类识别的现状
传统的卷烟识别主要是依靠人工识别或者扫烟盒上的条形碼进行识别分类。其中通过人工识别的受影响因素很多,容易引起错误。而采用扫条形码识别准确率较高,但当遇到条形码损坏则无法进行识别。虽然数字图像处理技术和机器学习算法利用轮廓提取和特征点匹配等方式,也可以完成对烟盒图像的分类识别,但是针对的场景单一、适用范围窄、正确率低;不同角度、不同远近的烟盒图像都会对图像处理的结果产生很大的影响。而通过使用卷积神经网络,将卷烟图像通过卷积得到输出,之后再通过反向传播算法,迭代更新参数权值,结合防止梯度下降过快和过拟合的方法,最后得到能使整个网络最优的权值达到精准的训练模型。针对开放场景下的烟盒识别。在大量样本数据支撑下,卷积神经网络具有更强大的适应性,有着更高的正确率和更宽泛的场景支持。下面将重点介绍使用ResNet为代表的卷积神经网络对卷烟进行分类识别的步骤。
使用传统的卷积层进行识别时,当层叠网络的层数越来越多,加深到一定层数时会由于感知区域的逐级递减从而使得梯度消失的越来越严重。从而导致利用反向传播算法时很难训练到浅层网络。为了解决深层卷积结构的梯度消失问题在ImageNet比赛的分类任务中参赛队伍使用残差神经网络,并获得了成功,通过拟合残差来提升网络效果。
四、使用卷积神经网络对卷烟进行分类
第一步:图片收集和筛选
收集并整理烟盒图片的应用场景,收集不同种类的不同状态的烟盒图片。首先对烟盒图片的种类进行分类,总共150种,每个品种至少100张。用作基础库。其次对各个种类的烟盒图片中所占图片比例小于60%的烟盒图片以及图像严重失真的图片进行删除。最后将筛选好的图片进行初步整理,作为原始数据集。本步骤应尽量收集多的数据,避免在模型训练时由于数据不足导致的模型过拟合。
第二步:图片库预处理和扩充
对第一步中的图片进行预处理和扩充。扩充手段包括但不限于对图片进行旋转、平移、错切变换改变图片的颜色值、改变图片的亮度和对比度。将收集到的图片库扩大10倍。将扩充后的数据集的70%的数据作为训练数据,20%数据作为验证数据,剩余的10%用于测试模型的预测情况。
第三步:卷积神经网络搭建
本研究采用的残差神经网络ResNet卷积神经网络。该模型包括网络前端的数据层、中段的隐藏层(卷积层和池化层)、末段的输出层。由于全连接层在一定程度上会损失图像的空间信息因此抛弃隐藏层中的全连接层。
网络前端:
数据层:训练数据为150(种)×750张,测试数据为15000张。由于采集到的图片的大小可能各不相同,有一些图像的分辨率较大,有一些比较小。而且长宽比也不一定会一样。通过裁剪的方法使得输出的图像的分辨率固定为3×256×256(通道数×图像高度×图像宽度),在网络训练的阶段,裁剪的位置从原始的图像上随机选择,只需要满足裁剪的子图完全落在图像中即可。通过随机的方式来增加了额外的数据,能够缓解过拟合的问题。裁剪之后的原图,每一个像素都是0到255的固定的数值。进一步的处理,包括减去均值,以及等比例缩放像素值使得像素值的分部基本在[-1,1]之间。随后对图像进行归一化增强图像,随机选择RGB三个通道中的一个,然后在原像素值的基础上,随机添加一个从[-20,20]之间的数值。
网络中段:
卷积层:使用3×3的卷积核进行卷积运算后再使用1×1卷积核来增加维度,得到feature_map,提取图像的局部信息。池化层:使用最大池化对卷积层产生的特征图进行融合,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征对每一个特征图单独进行操作并且输出一个对应的特征图。
ReLu:引入修正线性单元(Rectified linear unit,ReLU)作为激活函数进行激活,由于ReLU函数是分段线性函数,通过对每一个值进行处理,把所有的负值都变为0,而正值不变,这种单侧抑制。在每一个卷积运算后使用ReLU函数进行处理,可以使得本研究中神经网络中的神经元具有了稀疏激活性,缓解过拟合问题发生。并且可以降低计算量;避免ReLU函数反向传播时出现的梯度消失导致无法完成模型收敛。通过ReLU实现稀疏后的模型能够更好地挖掘相关特征,拟合训练数据。
网络末段:
输出层:从网络训练的角度,末端主要是损失函数。也就是将数据映射为一个标量。通过随机梯度下降的方式,使得损失函数逐渐降低。本研究使用神经网络将图片分类,因此这里使用了softmax函数。
先将输入归一化到[0,1]之间,通过Softmax函数,然后通过交叉熵定义損失值,softmax输出返回列表的概率求和为1,每个概率代表给定图像属于特定输出类的概率。输出分类结果到softmax层输出种类概率向量。
第四步:训练模型
训练过程:对已有的样本,使用最小化的求解梯度下降法(Gradient Decent)反向传播算法(back propagation)将误差信号传递到每一层的输出。再通过每一层的函数对参数的导数,可求得参数的梯度,再通过基于梯度的最优化,就能寻得最优值,完成训练过程。根据前向传播的LOSS值,来反向迭代更新每一层的权重,确定LOSS趋于收敛时,保存模型。
(1)初始化参数。
(2)求代价函数关于参数的梯度。
(3)根据梯度更新参数的值。
(4)经过迭代以后取得最佳参数,从而完成模型的训练。
引入迁移学习的方法,将预先训练好的ResNet模型的前30层的参数固化,后面的用新数据训练,从而避免初始随机的权重赋值,缩短训练周期。
第五步:预判模型
加载训练好的模型,将待识别的烟盒图片输入,判断模型的有效性。使用第二步中的10%的预测图片集,从中选择若干图片输入到模型中,提取烟盒图片的特征,输出图片的标签类别以及TOP5的置信度。
参考文献:
[1]深度学习在图像识别中的研究进展与展望[DB].CSDN.NET.
[2]许可.卷积神经网络在图像识别上的应用的研究[D].浙江大学,2012.
[3]杨莹.给予卷积神经网络的图像分类研究[J].现代计算机,2016,3.
[4]黎哲明.基于卷积神经网络的车辆品牌和型号识别[J].东南大学学报,2017.
[5]李超波.深度学习在图像识别中的应用[J].南通大学学报(自然科学版)-2018.
[6]Deep Residual Learning for Image Recognition [J].Microsoft Research,2015.
作者简介:孙晶(1987- ),女,硕士,中级职称,研究方向:卷烟营销和管理