基于神经网络的面包智能溯源系统
2022-08-12王鹏程苏一水王茂发
王鹏程 苏一水 王茂发
(桂林电子科技大学计算机与信息安全学院,广西 桂林 541004)
1 引言
中国食品安全报纸发布的《2021年烘焙食品零售额有望达近3000亿》[1]一文中指出我国烘焙食品近些年来的增幅巨大:销售总量从2016年的1700亿元增长到2020年的2569亿元,销售总额的增长率高达151%,同时预测2021年的销售额预计到达2856亿元。文章也指出随着人们对于烘焙类产品的重视和新冠疫情的影响,烘焙食品行业对食品安全要求和对于中高端产品的需求愈来愈高。本文所编写的系统便是这针对这一需求开发的,保障食品安全,满足人们对于中高端产品的需求。
本文结合市场的发展需要[2,3]运用VGG16神经网络迁移模型开发了一套面包产品的溯源、溯鲜系统。本系统把生产线作为起点,先对生产线产出的面包产品的纹理进行特征提取,在提取特征值的过程当中训练相应的VGG16 的神经网络迁移学习模型,经过产品线的大量训练之后,将得到一套适配于当前生产线产品的特征值提取模型。之后将该模型提取出的生产线产品的特征值和与之对应的产品信息(如:生产日期、产地、价格等)装载到数据库H5 文件当中。当顾客挑选面包时,只需要使用系统提供的用户端,根据系统的提示对于产品拍照上传。系统会使用对应特征值提取模型提取产品的特征值,并通过余弦相似度算法从数据库当中提取对应的产品信息返回给用户,从而实现溯源、溯鲜过程。
2 特征值提取模型的介绍
本系统当中的特征值提取模型的识别率的高低,对于系统最终的查询准确度有着最核心的影响。因此模型种类的选择、模型改进的策略与模型训练的方法等方面都直接影响着整个系统品质的高低,在以上问题的选择当中本文都经过了详细的对比与分析。
近些年来卷积神经网络无论是在理论还是在应用方面都取得了长足的进步,郑远攀[4]等人的研究介绍了诸如深度信念网络(DBN)、卷积神经网络(CNN)、循环神经网络(RNN)、生成式对抗网络(GAN)等多种应用于图像识别的深度学习模型;同时图像识别也在众多领域取得了广泛的引用,如Wu[5]等人提出的一种用于人脸识别的优化的稀疏深度学习网络(SDLN),何雪英[6]等人改进了一种用于乳腺癌病理图像识别的迁移学习深度卷积模型,王鑫[7]等人提出了一种七层CNN的高分辨率遥感图像分类算法,王彦翔[8]等人在农作物害虫检测领域使用深度学习技术结合高光谱成像技术提出算法等。
以上文献当中的种种研究成果促进了深度学习在图像识别领域的发展与图像识别在众多领域的应用,也为本文的研究指明了方向。
图1 系统运行流程图
2.1 模型的选择
卷积神经网络(Convolutional Neural Networks,CNN)在图像分类、目标检测和特征提领域取得了惊人的成就,其凭借着局部连接、权值共享以及池化操作等特性,不但使CNN算法的网络复杂性得到了有效降低,同时也对于产生了变形、扭曲和局部缩放的图像有着出色的鲁棒性和容错性[9]。CNN网络的特性能够有效降低模型的复杂度,同时有利于模型后续的优化与改进。基于CNN模型的这些优越的特征,本系统选取CNN网络模型作为面包食品的特征值提取模型。
为了进一步选定特征值提取模型,本文对于Dense Net121、DenseNet169、DenseNet201、inceptionV3、VGG16、VGG19、ResNet50等预训练的卷积神经网络模型的准确性进行了一系列的对比。结果见表1。
表1 各神经网络模型结构的预测准确率
经过对比实验发现ResNet50、VGG16、VGG19在烘焙类产品的特征提取上获得了较高的准确率能够满足本系统的开发需求。在Dong Su[10]等人的研究中,其系统地测试了被学术界与工业界广泛接受的18 个ImangeNet 深度神经模型如AlexNet、VGG Nets、MobileNets、ResNets、DenseNets 的鲁棒性,结果显示VGG16和VGG19模型比其他的模型有更强的可迁移性,虽然ResNet 也表现出了较好的识别精度,但是其迁移学习的鲁棒性不如VGG 系列模型。同时VGG16 模型的卷积层相较于VGG19 精简了三层,其特性有利于在训练的过程中加快训练过程,简化模型的复杂度。
2.2 迁移学习
神经网络的迁移学习是指将已经训练好的源领域的神经网络模型通过微调其中参数相关层参数后继续训练,直至训练出的模型在与源模型领域相关的目标模型领域仍具有高度的可用性,将训练过的模型输出为新模型。本系统为了避免反复繁杂的人工特征值调整工作,运用迁移学习的思想[11,12],充分利用模型在源数据集训练得到的大量知识。
迁移学习首先找到源领域与目标领域在神经网络上相似的、共享的参数信息[13],在源模型上进行训练之后进行迁移学习得到新的模型。由于目标领域的训练可能缺乏数据抑或是训练的过程复杂,而源领域的训练数据充足、训练简单,因此在使用大量的源领域的数据对于模型进行训练,之后对于模型的卷积层进行冻结和微调,使用少量的目标领域的数据对模型再次训练,即可得到新的模型。
在迁移学习当中,模型的选择、顶层的解冻层数、解冻层的激活函数等的选择对于模型的迁移学习的效果都具有很大的影响,所以本文通过如下步骤进行迁移学习并得出相应的结论:
Step1:对比分析不同模型的迁移学习能力和准确度,发现VGG16模型表现最佳;
Step2:对不同的神经网络的顶层解冻层数进行分别实验,得到不同的特征值;
Step3:将特征值使用余弦相似度算法进行比较,得到最高置信区间的解冻层数为2层;
Step4:使用不同的激活函数对模型进行激活,对比其损失函数,得到结果为relu激活函数效果最好。
3 特征值匹配算法
同一产品由厂家拍照上传数据库的照片与用户拍摄的照片必定存在差异,因此特征值提取模型计算出的特征值也存在不同,在查询产品价格的时候不能简单做相等比较,而是要选取适当的匹配算法对于特征值进行匹配选取出对应的产品。
本文采用余弦相似度算法[14]计算出两个产品的相似度,通过记录和对比目标产品与数据库产品的相似度来选取数据库中相似度最高的产品作为目标产品,从而利用特征值的相似度实现了目标产品和数据库中的产品的匹配算法。下面将介绍本系统中使用的匹配产品特征值的余弦相似度算法。
余弦相似度,本意表示两个空间向量的夹角的大小,当两个向量的夹角小时其余弦值越接近1,可以认为两个向量的相似度度量高;当两个向量的夹角大,甚至反向的时候其相似度越小。
使用上文所使用的方法训练出的VGG16 模型,对于图片的特征值进行提取,将图片的fc7 层特征值提取结果转为Base64 文本信息。对于Base64 文本信息我们将其映射到向量空间,使用两段文本当中出现的所有词语的词频作为向量的多个维度的值,使用如下公式便可计算出两段文本的余弦相似度:
图2 迁移学习训练过程
其中:A、B分别表示目特征值与原始特征值在向量空间的绘制,Ai与Bi表示目特征值与原始特征值在向量空间的第i维的数值。
由于使用特征值提取模型计算出的产品的特征值为一段数字字母文本,将目标特征值与原始特征值作为A和B,进行余弦相似度的计算,余弦相似度作为置信度,表示匹配程度。
4 系统模块介绍
本系统可以分为两个模块:用户模块和管理员模块。用户模块负责提供面包识别的功能,以及查看常见问题、面包定价规则。管理员模块负责提供面包图片管理、神经网络模型更新、常见问题管理、面包定价管理。系统端口划分如图3所示。
图3 系统接口模块划分
4.1 用户端
用户端的前端使用端采用uni-app 技术,uni-app 是一个使用vue.js 开发所有前端应用的框架,开发者编写一套代码,可以直接发布到微信小程序端。用户直接使用微信小程序即可打开系统的用户端界面,上传产品的图片进行识别。
后端代码采用基于Python 的Flask 后端框架。Flask 是一个使用Python 编写的轻量级Web 应用程序框架。Arimin Ronacher带领一个名为Pocco的国际Python爱好者团队开发了Flask。Flask能够非常快速、稳定地响应Web请求,作为轻量级的代码,由于Web 极简的设计理念,会更加专注于服务请求的响应,能够很好地满足高频且单一的服务请求,所以选取Flask作为后端框架。
图4 系统用户端部分界面
4.2 管理员端
管理员端的前端,采用Vue-cli 技术,其由Vue.js 和Webpack组成。Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue完全有能力驱动采用单文件组件和Vue 生态系统支持的库开发的复杂单页应用。Webpack 是代码编译工具,有入口、出口、loader 和插件,具有代码分割、模块化功能,Webpack2.0 中加入tree shaking,用来提取公共代码,去掉死亡代码。Webpack 作为前端模块化开发的标配,是目前流行的模块化打包工具,所以选用Vue-cli作为后台管理系统的前端框架。
本系统将用户模块和管理员模块划分两个Web服务,目的就是减少相互之间的系统影响,借鉴了微服务[5]的思想。用户模块查询神经网络,计算量较大,容易导致该服务宕机。管理员模块主要是系统资源管理,负责面包图片文件的上传、神经网络H5 模型文件的上传。本系统将两个服务器划分开,就能够让两个服务独立运行,即使有一个服务宕机,另一个服务也能够正常运行。
图5 系统管理员端部分界面
5 结语
随着硬件的发展和深度学习理论在图像识别技术中的推广,让从上世纪40年代就开启的图像识别技术达到了前所未有的热度与技术高度;同时人们对于智能化、高端化的面包食品供应也表现出全新的需求。本文利用深度学习VGG16 神经迁移网络为核心,开发了一套包含前后端的面包类食品的溯源、溯鲜系统,意在满足面包市场需求、扩宽面包市场蓝海。
图6 系统交互示意图