版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
III基于卷积网络的食品图像识别系统设计摘要如今人们在日常生活中经常会面临食物选择的问题,他们往往会倾向于更加健康、营养更丰富的食物,如果能够设计一个食品图像识别应用就可以帮助人们很方便地获取食物相关信息,从而做出合理的选择。同时,该应用也为一些糖尿病、高血压患者提供了帮助,他们可以更方便地来记录自己的饮食,进而管理自身健康,减少疾病。因此,本文对食品图像的识别分类的方法进行了研究,主要工作如下:(1)构建食品图像数据集。因为涉及食品分类,所以首先采用了该领域数据集中最为著名的food-101数据集,并在此基础上手动添加了数据集FIDS30组成了所需的数据集,并对部分图片进行标注处理。(2)关键特征的提取。所选择的数据集中往往会有一些影响识别精度的复杂背景因素,所以需要对关键区域进行提取,本文提出了一种有效的的提取方法。(3)模型训练。读取新的数据集,并对VGG16、ResNet50、InceptionV3这三个卷积神经网络模型进行对比实验,研究分析了不同实验参数条件下对食品图像识别效果的影响。(4)设计并实现了食品图像识别APP。用户通过手机的客户端获取图片,通过部署好的API进行图像识别,根据识别出的结果,获取食物相关信息和简易膳食建议。关键词:食品图像识别,卷积神经网络,特征提取,深度学习目录1绪论 11.1课题背景 11.2研究意义 11.3研究现状 11.3.1深度学习技术的研究现状 11.3.2卷积神经网络在图像领域的研究现状 21.4研究内容 21.5本文组织结构 22相关技术及理论 42.1图像分类关键技术研究 42.1.1图像特征提取 42.1.2反向传播算法 42.1.3图像分类方法 42.2卷积神经网络图像识别方法 52.2.1VGG16模型 52.2.2ResNet模型 52.2.3Inception模型 62.3目标检测网络Yolov3 73基于Yolov3的图像关键区域生成方法 93.1数据采集 93.2数据清洗 93.3图像关键区域提取 104基于卷积神经网络的食品图像识别方法研究 134.1数据预处理 134.2神经网络训练框架 134.3模型训练 144.4实验结果与分析 154.5对模型进行微调 164.6对模型进行部署 175食品图像识别APP的设计与实现 205.1系统概述 205.2系统需求分析 205.2.1用例说明 205.2.1系统非功能性需求 225.3系统设计 235.3.1系统架构设计 235.3.2类设计 235.3.3接口设计 255.3系统实现 256总结与展望 296.1总结 296.2展望 29参考文献 30共SECTIONPAGES\*Arabic31页第14页1绪论1.1课题背景民以食为天,如今人们的物质生活水平越来越高,但是有些人往往没能养成良好的饮食习惯,这样就容易导致某些疾病,诸如高血压、胃癌等。当去医院就诊时,患者往往并不能清晰点回忆起自己吃了些什么以及详细的摄入量,这就为医生的治疗带来了困扰。随着手机和相机的普及,我们可以很方便地借助它们来记录自身的饮食,进而调整饮食结构,保持饮食的健康。图像识别技术现如今发展迅速,足够成熟,在各行各业中得到了越来越广泛的应用:在遥感图像方面可以对卫星遥感图像进行加工来提取有用的信息,用于资源勘测、环境监测等;在军事刑侦领域主要用于对指纹、手迹、人像、现场照片等的处理和辨识;在互联网领域,如淘宝推出的“淘宝拍照”功能就是一个典型的例子;在生物医学方面,临床诊断和病理研究也广泛借助图像识别技术,具有直观、无创伤、安全方便等特点;由此可见图像识别技术与我们的日常生活息息相关。本文基于这项技术对食物的识别和分类做了深入的对比研究,发现基于卷积神经网络的图像识别方法与那些传统的方法相比具有优异的表现。因此,本文基于卷积神经网络模型构建了一个食品图像识别APP,旨在帮助人们更方便地获取食物相关信息,从而合理地选择所需食物,均衡饮食生活。1.2研究意义人们在日常生活中经常会面临食物选择的问题,他们往往会倾向于更加健康、营养更丰富的食物,因此本文设计的食品图像识别应用旨在帮助人们更方便地获取食物相关信息,从而合理地选择所需食物,均衡饮食生活。同时,该应用也为一些糖尿病、高血压患者提供了帮助,他们可以很方便地来记录自己的饮食,为今后的诊治和自身恢复提供依据。对于传统的图像分割算法,往往会产生大量与目标主体体无关的图像切片,什么耗费人力物力。本文提出了一种基于Yolov3目标检测模型来提取图像关键区域的方法,在复杂的图像背景下提取关键区域,保证了模型更加关注目标主体,从而提高了图像分类的精度。1.3研究现状1.3.1深度学习技术的研究现状首先简单介绍一下机器学习,机器学习主要分为两个层次,浅层次和深层次的机器学习,浅层次的机器学习不适合处理复杂的问题,如图像处理、自然语言处理等,而深度学习的出现大大推动了这些方面的研究。2011年,谷歌将深度学习技术应用于语言识别,使得识别准确率从70%提高到80%。2012年11月,微软开发的一套全自动声译系统,能够实现英文和中文的同步翻译。近些年来,新的网络设计结构不断被提出,深度学习技术得到了广泛的应用并取得了显著的成果,它的出现给人工智能、互联网和脑科学交叉研究领域带来了突破性的发展。1.3.2卷积神经网络在图像领域的研究现状近年来,卷积神经网络在图像分割、识别、分类等方面取得了迅速地发展,已经被广泛地应用到我们的日常生活中,如以图搜图、人脸识别等等。卷积神经网络很早就开始发展起来,Simonyan提出了VGG16网络,该模型因其灵活的特点得到广泛应用,但是在图像分类中识别效果比较好的是由微软研究院的何恺明等四名华人于2015年提出的ResNet。本文就选取了Inception、VGG16和ResNet50这三种当前识别效果较好的模型,并进行实验分析对比,然后选出更合适的模型用于图像识别和系统的底层实现。1.4研究内容本文利用作者大学学到的知识,综合项目实践的经验,主要做了下面几个方面的研究:(1)构建食品图像数据集。因为涉及食品分类,所以首先采用了该领域仅有的几个数据集中最为著名的food-101数据集,里面包含101种食物的图像数据,主要用于图像分类,共有101000张图像,每个类别的测试图像和训练图像分别有250张和750张,其中训练图像未经数据清洗(包含了一些噪音数据,有一些标签是错误的),但所有图像均以重新进行尺寸缩放,最大边长在512像素。由于food-101中只包含了各种常见的西餐图片,暂且不提对中餐的覆盖,连一些基本的水果蔬菜都没有包含,所以只有这个数据集是难以满足我们的需求的,于是我手动加入了百度上的一个数据集FIDS30,里面包含30种水果、蔬菜的图片,但每个种类的图片数量不多。受限于固态硬盘的容量,没有进行进一步的扩展。(2)关键特征的提取。所选择的数据集中往往会有一些影响识别精度的复杂背景因素,所以需要对关键区域进行提取,本文提出了一种有效的的提取方法。(3)模型训练。读取新的数据集,并对VGG16、ResNet50、InceptionV3这三个卷积神经网络模型进行对比实验,研究分析了不同实验参数条件下对食品图像识别效果的影响。(3)设计并实现了一个食品图像识别APP。用户通过手机的客户端获取图片,通过部署好的API进行图像识别,根据识别出的结果,获取食物相应的营养数据和食用建议。1.5本文组织结构第一章绪论。在本章首先介绍了本文研究的背景、国内外研究现状及其意义,并总结了研究内容。第二章相关技术及理论。主要介绍了图像分类领域的一些关键技术和几种模型的优化方法。第三章基于Yolov3的图像关键区域生成方法。首先对采集到地图像数据进行清洗和人工标注,然后利用标注好的图像数据集对Yolov3模型进行训练,得到实验结果,并与其它的研究方法进行了比较分析。第四章基于卷积神经网络的食品图像识别方法研究。在这一章中,对选取的三种卷积神经网络模型进行了相关实验,在不同实验参数下各个模型的表现。第五章食品图像识别APP的设计与实现。本章从需求分析,系统设计,系统实现这三个方面对整个开发过程进行了详细地描述。第六章总结与展望。这部分总结了本文的工作内容,并对于本文所实现系统可以优化的方向做了展望。
2相关技术及理论2.1图像分类关键技术研究图像分类技术是人工智能领域地一个重要研究方向,本章将从特征提取、分类方法以及反向传播算法这三个方面来进行研究。2.1.1图像特征提取
特征提取方法主要分为线性和非线性特征提取,前者主要采用线性映射,几种主要的方法包括:主成分分析法、投影寻踪和基于Fisher准则的线性鉴别分析法;而提取非线性特征地方法主要有两种:核主成分分析、SVM支持向量机,主要是利用非线性映射将输出空间映射到高维度特征空间。特征提取是图像分类方法中最为重要的一部分,所提取的特征直接影响到图像分类的精度,如何提取更有效、更显著的特征已成为图像分类的一个重要研究方向。2.1.2反向传播算法反向传播算法是在更新神经网络参数上表现优异,其本身就是一个不断迭代更新参数的过程,直到实际输出值接近预期结果,才停止更新并得到最终的参数。图2.1一个简单的网络神经结构2.1.3图像分类方法图像分类方法主要有两类:1)传统的图像分类方法,主要是从图像变换域或者空间域中对图像进行分类;2)基于深度学习的图像分类方法,主要是利用训练好地卷积神经网络模型从图像数据中提取特征进行分类。后者是本文重点研究的图像分类方法。然而目前图像分类还存在着许多问题:特征提取时总是会造成一定的信息缺失;图像背景中存在噪声等因素的干扰;在一些实际应用场景中,部分分类算法还不够成熟,不能有效地对图像进行分类。作为近年来在互联网领域异军突起的深度学习算法,它不仅能够更好地提取图像各个层次的特征,开展自主学习,而且还具有迁移学习的能力,可以将之前学习到的一些特征参数应用到新的模型训练中,大大节省了模型的训练时间并且也能够提高图像分类的精度。因此与其他的图像分类方法相比,日趋成熟的基于深度学习的图像分类方法具有更加优异的表现。但是仍有一些问题有待解决,例如,在加深神经网络层数时,还要考虑到过拟合、梯度消失等问题。但总的来说深度学习在图像分类方面还是具有出色的表现,未来的发展应侧重于扩展数据集、优化网络结构以及更好地模拟人脑神经网络传输和处理信息的机制等方面。2.2卷积神经网络图像识别方法在考虑了传统的图像识别方法的缺陷后,本文选择了基于卷积神经网络的图像识别方法,并选取了三种性能较好的卷积神经网络模型,这里将详细介绍这三种模型。2.2.1VGG16模型图2.2VGG16卷积网络架构从图2.2中可以看出,前五组均由卷积层和最大池化层而成,其中还掺杂着ReLU激活函数;其次是三个全连接层,在全连接层处添加了Dropout层以及L2正则化使模型泛化;最后一层是softmax层,即把属于每一类的概率进行归一化处理,当损失函数的值减小到趋于稳定时,训练就结束了。VGG16模型在网络深度以及模型性能之间进行了非常平衡的考虑,该模型网络层数不是很深但也能保证模型的良好性能,是一个表现优异的模型。2.2.2ResNet模型ResNet是由微软研究院的何恺明等四名华人在2015年提出的,旨在为了解决模型识别精度在达到饱和之后进一步加深网络而导致精度下降的问题。ResNet的提出在一定程度上解决了这个问题,其在网络结构中设计了直连通道,允许输入层可以将信息跳过下一层而传到后面的层当中,保护信息的完整性,如图2.3所示。这样,每一层不需要学习上层的整个部分,而只需要学习其输出的一部分,即残差。图2.3ResNet的残差学习模块2.2.3Inception模型在GoogleNet出现之前,对卷积神经网络的研究一般认为模型性能的好坏与网络层次的深浅有着密切关系,但随着层次的加深,模型就会出现过拟合、梯度消失等问题。Inception模块可以使网络具有更好的局部拓扑结构,有助于极大地减小运算量,并能兼顾网络的结构稀疏性高效运算性能。图2.4展示了Inceptionv1的基本网络结构。图2.4Inception网络结构图2.5采取降维措施后的Inception网络结构从图2.5中可以看出,改进后的网络结构其实是采用了大量的1*1卷积核来进行对维度的降低。实际上,v1以后的几个版本就是不断地进行优化和改进,与v1相比,v2增加了了BatchNormalization层,减少了参数量,加快了成型速度;v3是通过对卷积层进行分解来增加网络深度;v4是Inception模块与ResNet的网络结构进行结合和改进,设计了一个网络层次更深、性能更好的训练模型。2.3目标检测网络Yolov3Yolo(YouOnlyLookOnce)是JosephRedmon等人在2015年提出的一种目标检测算法,2017年在CVPR上又提出了Yolo2算法,进一步地提高了目标检测的准确性和训练速度。在早期的目标检测算法大多都是提取图像的robust特征,并利用滑动窗口来预测分数比较高的边界框,但是这种方法非常繁琐,目标检测的精度也不高。Yolo是一种一次性预测多目标的目标检测算法,是端到端的目标检测,与其他的目标检测方法相比,它最大的优点就是检测速度更快,它并没有采用滑动窗口方法分析图像的局部特征,而是对整个图像进行模型训练,这样就很好的区分了检测的目标和背景。如图2.6所示:Yolo网络主要由两部分组成,一部分是特征提取,另一部分是后处理网络,用于识别目标的位置及类别。图2.6Yolo网络结构3基于Yolov3的图像关键区域生成方法3.1数据采集因为涉及食品分类,所以首先采用了该领域仅有的几个数据集中最为著名的food-101数据集,里面包含101种食物的图像数据,主要用于图像分类,共有101000张图像,每个类别的测试图像和训练图像分别有250张和750张,其中训练图像未经数据清洗(包含了一些噪音数据,有一些标签是错误的),但所有图像均以重新进行尺寸缩放,最大边长在512像素。由于food-101中只包含了各种常见的西餐图片,暂且不提对中餐的覆盖,连一些基本的水果蔬菜都没有包含,由于本项目需要有一定的实用性,所以只有这个数据集是难以满足我们的需求的。于是我们手动加入了百度上的一个数据集FIDS30,里面包含30种水果、蔬菜的图片,但每个种类的图片数量不多。受限于固态硬盘的容量,没有进行进一步的扩展。图3.1采集食品数据中的一些样本图片3.2数据清洗在3.1中,本文完成了数据采集,采集后的下一步就是要处理收集好的数据,即数据清洗,数据清洗的处理对象主要是以下两种:1)不是本文研究对象的食品图片;2)拍摄效果不理想,即画面模糊不清的图片。处理方式为人工筛选。运用人工筛选的方式的其中一个目的是确保实验中所使用的数据集的真实可靠,使实验过程更为顺利。另一个目的则是,在筛选过程中,可以同时为所采集的食品图片进行标注,再按照规定好的数据集格式把图片制作成数据集,方便用于之后的图像信息的提取和分类。在本文中,数据集格式采用VOC2012的标准参照的是VOC2012的数据集格式,如图3.2所示。图3.2VOC2012数据集格式标准值得一提的是,在数据集的制作过程中,为了方便之后的模型训练,本文做了两个操作:1)将图像的大小进行了设定,统一为224*224;2)将筛选后图片进行随机的旋转处理,并调整图片的对比度等信息,其目的是在图片有限的情况下,扩充训练所用的数据集。此操作可有效提升模型训练的准确率,简单来说,更多的数据集意味着更少错误的识别。3.3图像关键区域提取本文主要实验对象是单个物体,但数据集中的图像所包含的信息往往是多样的,对于模型训练的干扰信息也有很多,可能是图像的背景,也可能是误入的其他物体,如何解决这个问题就成了实验是否顺利的关键。通过对相关技术的分析比对,本文就使用了Yolov3目标检测网络的方法,把所收集到的食品图像进行了关键区域的信息提取操作,在有效的排除背景所带来的影响,使模型更加注重目标主体的同时,又可以将图像中存在的其他物体制作成新的数据集,用于模型训练中,对于实验产生很大的帮助。算法的选择过程并不那么简单,由于本文的目的是对图片的关键区域进行信息的提取,用于之后的模型训练,提取的精度就尤为重要,精度越高就意味着图像分类的准确率越高。在目前的相关技术中,本文选用了应用相对较多的几种算进行了简单的实验,主要方法是对于图像的多个区域进行划分,生成候选区域,选取其中得分高的作为图像的关键区域,在实验中发现相较于其他的关键区域提取算法,Yolov3具有检测精度更高、提取速度更快的特点,可以很好为之后的实验提供技术支持。在上文中,本文已经实现了拥有大量已标注的图片的数据集,可用于Yolov3的模型训练。实验中,本文首先将所用到的数据集分为了两类,一类用于训练,一类用于训练后的验证。完成了数据集的选取和分类后,就需要对模型所用参数进行设置,通过迭代的方法进行学习训练,这里的batch_size为每批处理的数据量,基础设为10,最大的迭代次数设定为60。对于实验结果我们设定了两个指标来衡量算法的可用性,分别为Loss(损失值)和AP(平均精准度)。对于损失值,主要是从日志文件中提取该值,并绘制成曲线图,直观地展现该值的变化;AP则是在训练过程中,对每一类图像识别的正确率取平均值,绘制成表的格式展现出来。图3.3为模型训练中的损失(Loss)变化图,可以很直观的观察到,随着迭代的进行,损失值是处于逐步下降的趋势,最初的下降趋势极为明显,这种明显的下降趋势一直持续到了第150次迭代,并在400次迭代后该曲线趋于平稳状态,大致在0.7左右起伏。batches图3.3模型训练loss变化曲线图有了损失值这一指标后,接下来就是对平均精准度的分析,在解释表格之前,首先介绍一下精度P,如公式3.1所示。P该公式中,TP表示为能正确区分的个数,这里可以理解为正确的识别样本的次数;FP则表示为错误区分的个数,理解为本身为错误却被划分为正确的样本数;P则是Precesion的缩写,代表精准度。根据不同种类的P值的不同,本文定义了AP和AP50的概念。AP即为所有类别的P值平均值,AP50与AP的差别在于,AP50在系统预测与实际图像的重合程度大于0.5,即判定其为TP,反之,则判定为FP。根据这一公式,本文制作了Yolov3的训练效果表,如表3.1所示:表3.1Yolov3模型的训练效果stepAPAP505024.249.210025.749.815026.348.420026.850.625027.250.930026.851.235027.451.540028.651.945030.552.8根据表中数据可以得知,随着迭代的进行,AP与AP50的值都处于稳步提升的状态,同时,识别的重合率要求越低,成功概率越高。但由于前期的人工标注图片有限,所以暂时看到的效果并不是很理想,本文在实验过程中也采用了一些有效的方法来提高准确率,例如增大图像尺寸等,尽可能地展现试验效果。本文可以预见的是,当训练的数据集的量达到一定限度后,模型训练的准确率可以达到本文的要求。
4基于卷积神经网络的食品图像识别方法研究4.1数据预处理在上文中,本文完成了相关图像的采集工作,并利用Yolovs3算法对采集到的图像进行了预处理,对图像的关键区域做好了提取与划分,形成了实验所需要的图像数据集。在实验前,本文同样对这部分数据集进行了预处理,目的是方便模型训练,提高训练效果,防止杂项干扰。这里主要用的是三种方法:1)统一图像大小,在输入时把数据集中的所有图像设定为224*224,减少输入时因为图片大小的不同造成的计算和转化所造成的偏差;2)把数据集分成两部分,其中一部分用于模型训练所用,另一部分用于训练后的验证所用,由于两部分出于同一数据集,可以更好地反应训练效果;3)图像归一化处理,这一预处理主要是考虑到这些图像有不同的背景,特性也各异,把数据集中的数据都映射在0-1间,可以有效地提升数据的处理速度。4.2神经网络训练框架由于Keras中对于本文所需要用到的训练模型都有直接的调用方法,所以本文的研究过程还是相对顺利的。这里需要说明的是,本文利用的主要是Fastai框架,该框架是基于PyTorch,主要用于神经网络的相关研究,旨在便于神经网络与使用者的交互,能让使用者简洁快速地将所需技术用于研究之中,例如在本文中,对于模型的训练正是基于该框架对Jupyter的支持,所以可以用ipython直接进行命令行式交互。在该框架中,ImageDataBunch是最重要的数据集加载类,它包含的很多方法都是用于处理数据集的存储模式(如csv+train+test),DatasetBase是底层类。对于本文来讲,Fastai最大的特点在于相较于其他框架,其在数据预处理上有很大的优势,最直观的表现就是对数据增强的优化效果图4.1Fastai官方demo图4.1就是一个例子,使用者利用fastai框架,可以将神经网络训练的复杂操作简单化,例如常用的下载数据集,构建模型等,只需用简单的命令行即可实现。同时,本文所需用到的InceptionV3、Vgg16、Resnet50网络模型,在Fastai中都可以直接应用,这一点可以说能很好地帮助本文完成预设目标,做好相关的实验研究。4.3 模型训练在本文的实验中,选取了三种不同的神经网络模型,针对它们结构上的不同,需要采用不同的训练参数,这也是本文工作量中较为重要的部分,对于不同的训练参数,最后展现出来的训练效果会不同,对比起来自然也不一样,为了实现实验目标,本文做了详细的参数设置如下:表4.1训练参数设置参数名Vggl6Resnet50InceptionV3批处理容量322432初始学习率0.010.010.01权值衰减0.00050.00050.0002动量学习率下降比率6学习率下降迭代次数100020002000确定了模型训练参数,下一步就是引入所需的包,加载之前预处理过的数据集,这里需要注意的是,需要将数据集的加载路径先设定成本地路径(在这里,数据集的分类可以直接由from_folder接口从子文件夹的不同文件名完成),之后,将类别参数(nb_classes)设定成20,完成这些准备工作后,即可开始模型训练,寻找最佳学习率。图4.2Resnet50模型的学习率以上图为例,得到学习率曲线后,即可选取所需的点进行训练,本文针对负斜率最大的点所在的学习率,即1e-02,进行了训练,并得到相应的结果:图4.3Resnet50模型的学习率处理方法确定后,就只需要解冻网络的卷积层,反复实验,使用几种不同的学习率,相互对比以达到最佳的效果。在反复尝试了五轮训练后,即可观察到训练的准确率趋于平稳状态,此时即可终止训练,对训练后的模型进行验证分析。4.4实验结果与分析对于实验结果,总结来说,在经过数据清洗、提取关键区域等处理后,本文的方法有效地消除了图像的复杂性对于卷积神经网络模型特征提取的干扰,很明显地提高了识别的精确度。不同训练模型的实验结果都以准确率曲线图和损失值曲线图直观展现出来,图中的蓝线部分是训练所用数据集的效果,红线则是验证所用数据集的效果。分析本文得到的六个曲线图,可以观察到:迭代次数的增加能有效地提高精准度,并降低损失值,但也是有限度的,Vggl6、Resnet50这两个模型大致在15-20次迭代后,精准度变化开始处于缓慢上升并趋于平稳的状态,该精准度大约在0.86左右,同时在性能方面也有不错的表现。但对于InceptionV3模型,训练中很明显的出现了过拟合现象,当迭代此数在25左右时,测试集中的精度下降迅速,并伴随损失的增加,说明这一模型的训练效果并不是很理想,同时,由于表现较为良好的两种模型也未达到预期的效果,所以对三种模型的微调也就成了本文的重要部分。对于实验结果,值得一提的是,Vgg16模型的训练速度更快,分析原因可能是该模型网络结构比较简单,所以训练参数设定就比较少,这一点或许可以用于之后的相关学习之中。图4.4Vgg16模型训练曲线图图4.5InceptionV3模型曲线图图4.6Resnet50模型曲线图4.5对模型进行微调在模型微调的处理方法,主要考虑采用对模型的网络结构冻结层数的方法,对于不同的冻结层数,对应有不同的效果,实验后选取其中效果最好的冻结层数,完成微调;对于InceptionV3模型,为了解决其在之前实验中出现的过拟合现象,结合现有技术,决定为其增加Dropout层,实验后观察是否能解决该问题。在本次实验中,实验结果的指标主要为三种:训练集精准度、验证集精准度和可训练的参数比。表4.2冻结层数对InceptionV3模型的影响冻结层数训练集精准度验证集精准度可训练的参数比093.2%80.1%100%594.7%82.5%85%1095.3%88.6%75%1593.5%86.1%67%表4.3冻结层数对Resnet50模型的影响冻结层数训练集精准度验证集精准度可训练的参数比094.6%89.6%100%595.8%92.8%90%1095..6%97.7%80%1594.9%92.4%70%表4.4冻结层数对Vggl6模型的影响冻结层数训练集精准度验证集精准度可训练的参数比096.9%84.8%100%397.7%89.3%92%698.2%92.4%86%997.4%90.8%78%对以上表格进行分析,在冻结了部分层数后,确实可以有效的提高模型的精准度,其原因应该是由于模型网络结构的层数减少,模型的训练过程更加集中化。但带来的负面结果是,可训练的数据集减少,即模型所表现出来的利用率、性能呈下降趋势。同时,增加了Dropout层后,InceptionV3模型存在的过拟合现象也得到了解决,这是本文的亮点之一,也影响到了后续的模型选择。通过模型微调,本文针对采用何种模型用于食品图像识别这个问题进行了详细的分析与对比,综合考量下,最终选取的是Resnet50神经网络模型来完成本文的最终设计。4.6对模型进行部署本文中使用flask+docker对训练好的模型进行部署,需要首先分别安装heroku和docker的CLI。Flask是一个python的web框架,我们的主要目的是把模型当作一个web项目部署到云平台上,再通过APP客户端去调用该web项目的接口,以实现在移动端进行图像识别。在app.py文件(相当于一个普通web项目的后端)中定义了一系列的接口与方法,包括通过POST请求或url地址获取图片,对图片进行处理,以及加载模型、进行识别并返回结果。如:@app.route('/api/classify',methods=['POST','GET'])defupload_file():ifflask.request.method=='GET':url=flask.request.args.get("url")img=load_image_url(url)else:bytes=flask.request.files['file'].read()img=load_image_bytes(bytes)res=predict(img)returnflask.jsonify(res)之后编写dockerfile和requirements,指定部署项目需要的环境和要部署的文件(包括app.py和pkl模型等),最后通过heroku云平台的container镜像服务将整个项目直接部署到heroku平台上,如图4.5所示:herokuloginherokucontainer:loginherokucreatefoodclsherokucontainer:pushweb--appfoodclsherokucontainer:releaseweb--appfoodcls图4.7DockerHub方式构建容器镜像本文附带了一个复用他人的简单前端网页用于测试模型的识别。此外,heroku上部署的项目超过15分钟不访问会被平台自动临时关闭,下一次访问时又会自动启动,但启动速度会很慢,所以在对app进行测试前尽量先访问项目网址将其启动。图4.8部署的项目网址项目部署完成后,用于远程识别图像的接口也就可以使用了,只需要在客户端向其POST一个装有图片数据的表单即可获得返回的识别数据,返回的数据包括分类名以及相似度,以json形式进行封装后返回。5食品图像识别APP的设计与实现5.1系统概述从前面的实验中,我们可以看到将卷积神经网络模型在食品图像识别方面的可行性,本文旨在为用户提供一个功能较为完整的食品图像识别应用。系统提供给用户的功能大致分为两类,基础功能和进阶功能。基础功能主要包括用户的注册和登录,用户通过拍照或者相册上传的方式输入图片等;进阶功能是系统在基础功能实现的前提下,实现用户间的交互,系统对一些常见的西餐和水果蔬菜进行识别分类,系统为用户提供食物相关信息和简单的膳食建议等功能。5.2系统需求分析5.2.1用例说明表5-1登录用例说明标识符Login用例名称登录参与者用户描述对象说明此用例为用户提供进入自己的账户的活动频度一般一周一次状态进行中前置条件用户拥有自己的账户后置条件无被扩展用例无被包含用例无基本操作流程1、系统检查是否有用户登录的cookie,如果有,则直接登录,没有则展示登录界面2、用户在登录界面输入用户名和密码,选择是否记住我3、系统检查输入是否合法4、系统连接数据库,检查用户名和密码是否正确5、系统检查该用户是否已通过邮箱激活账号6、若未激活账号,则重新发送邮件让用户激活7、如果账户正确且已激活则成功登录,跳转到主页,否则提示用户错误信息可选操作流程1、用户可通过邮箱账号进行登录2、用户若忘记密码,能够根据注册的邮箱找回密码3、数据库连接失败,则登录失败,需要用户重试表5-2注册用例说明标识符Register用例名称注册参与者用户描述对象说明此用例为用户提供创建自己的账户的活动频度一般第一次进入系统时进行状态进行中前置条件用户拥有一个合法的邮箱地址后置条件注册完成后,系统跳转到主页,并设置用户为登录状态被扩展用例无被包含用例无基本操作流程系统要求用户输入用户名、密码和邮箱用户在注册界面输入用户名、密码和邮箱系统检查输入是否合法系统连接数据库,检查用户名、邮箱是否已存在用户名、邮箱不存在,系统发送激活邮件用户进入邮箱,激活账户系统检查激活是否正确,若正确,则成功注册若不正确,重新发送激活邮件,提示错误信息可选操作流程数据库连接失败,则注册失败,系统提示用户重试表5-3上传图片用例说明标识符UploadPictures用例名称上传图片参与者用户描述对象说明此用例为用户提供上传图片的活动频度最高一天100次状态进行中前置条件用户已经登录后置条件系统调用API来对上传的图片进行识别被扩展用例无被包含用例无基本操作流程用户上传图片系统检查用户上传的图片格式是否合法,大小是否超出限制,若文件不合法,系统提示错误信息系统检查用户输入是否合法图片格式、大小合法,系统调用API接口来进行预测预测完成,与数据库进行比对得出识别结果系统返回结果给用户可选操作流程用户可为图片添加名字、描述、标签、文件夹,标识是否原创数据库连接失败,则上传失败,系统提示用户重试阿里云存储对象失败,则将中断后续流程,系统提示用户重试表5-4修改个人信息用例说明标识符UpdateProfile用例名称修改个人信息参与者用户描述对象说明此用例为用户提供修改个人信息活动频度未知,不限状态进行中前置条件用户已经登录,用户进入个人信息界面后置条件系统更新用户个人信息界面被扩展用例无被包含用例无基本操作流程用户在个人信息界面输入要修改的个人信息,提交用户上传新头像(可选),系统核定文件格式与大小,若失败则退回1浏览器检查用户输入是否合法浏览器将数据传给fuwuqi1系统连接数据库,更新数据库数据库更新用户个人信息并返回回复浏览器提示更新成功并刷新界面可选操作流程用户可选择修改密码,身高,体重,性别等,用户名和邮箱不可修改数据库连接失败则修改失败,系统提示用户重试5.2.1系统非功能性需求(1)安全性:一定程度上控制用户的访问权限,在用户在未登录前,需要限定其访问权限;同时,需要根据用户身份的不同,提供可提供范围内的授权服务,以此保护数据不被非法/越权访问或篡改。(2)可靠性:系统对用户的输入形式有提示,输入数据需要进行检查。(3)准确性:本文从数据集的收集、图像关键区域的提取、训练模型的调整与优化等多方面着手,使得最终的模型具有较高的识别精度。(4)界面需求:系统界面简洁、清晰但不失美观,配色清新柔和,各页面主题风格一致。(5)灵活性需求:系统考虑到用户使用的灵活性,在用户忘记密码时能通过邮箱找回密码;(6)易使用性:系统的整体逻辑不是复杂,操作简单,用户只需通过相册或拍照上传需要进行识别的图片,点击按钮进行识别就可以获取到相关信息。(7)可维护性:从接到修改请求后,普通修改应在1~2天内完成;对于评估后为重大修改应在7~10天内完成;80%出现的BUG修复时间不超过2天;任何修改需要保证数据库的完整性及稳定性。(8)性能需求:系统在任何给定时间能支持数个用户的操作,系统对用户请求的响应时间最长不超过5秒。5.3系统设计5.3.1系统架构设计本文采用Model-View-Controller(MVC)的架构设计,分离前后端不同功能,具体分为数据层、网络层和UI层。数据层用来完成对食品相关数据信息的存储。网络层主要是完成与后端的数据通信,调用图片识别接口对用户上传的图片进行解析,然后将识别出的结果作为参数去数据库中进行查询,调用营养元素接口来获取相关的信息。UI层是控制前端界面,用户通过拍照或者相册上传的方式来输入想要识别的食品图片,然后系统进行识别并从后端返回数据,在前端展示给用户。5.3.2类设计图5.1登录相关类设计登录相关类说明:(1)LoginUI是边界类,控制展示给用户的界面。其方法设计为获取用户输入的用户名、密码,获取用户设置记住我,发送邮件;(2)LoginController是控制类,处理用户的请求,其方法设计为获取前端传来的数据,登录检查,发送邮件;(3)LoginService是业务接口,处理实体类的数据,其方法设计为检查用户名和密码是否正确,检查账户是否激活;(4)UserInfo是实体类,存储用户的信息:用户名、密码、邮箱、激活状态。图5.2注册相关类设计注册相关类说明:(1)RegisterUI是边界类,控制展示给用户的界面。其方法设计为获取用户输入的用户名、密码,获取用户输入的邮箱,发送邮件;(2)RegisterController是控制类,处理用户的请求,其方法设计为获取前端传来的数据,注册检查,发送邮件,邮件激活;(3)RegisterService是业务接口,处理实体类的数据,其方法设计为检查用户名和邮箱是否存在,创建用户,邮件激活;(4)UserInfo是实体类,存储用户的信息:用户名、密码、邮箱、激活状态。图5.3上传图片相关类设计上传图片相关类说明:(1)UploadPicUI是边界类,控制展示给用户的界面。其方法设计为获取用户上传的图片,获取用户输入的图片详情,然后将数据传给controller;(2)UploadPicController是控制类,处理用户的请求,其方法设计为获取前端传来图片及数据,检查图片是否符合格式与大小,调用接口识别图片,然后将结果返回给边界类;(3)UploadPicService是业务接口,处理实体类的数据,其方法设计为上传图片;(4)Pictures是实体类,存储图片的信息:名称、食品种类、成分、营养价值等。5.3.3接口设计(1)类之间的接口:1)LoginService:其方法设计为检查用户名和密码是否正确,检查账户是否激活;2)RegisterService:其方法设计为检查用户名和邮箱是否存在,创建用户,邮件激活;3)UploadPicService:其方法设计为上传图片;(2)调用接口:营养元素查询接口:/txapi/nutrient/图片识别接口:/api/classify5.3系统实现功能简介:用户使用APP通过相册或拍摄上传图片,在对图片进行识别之后返回食物名称。每识别一种新食物,就将该食物的原料以及营养素含量加入到列表中。通过原料的营养素量,给出简易的膳食分析和建议。另外,食物原料的营养素列表可以通过删除按钮删除。App主要分为三个界面:图片上传界面、原料及营养素展示界面、简易膳食建议界面。功能点如下:拍照上传和相册上传支持用户通过拍照或者相册选取的方式上传待识别的图片。在图5.2中通过单机相机按钮和相册按钮完成操作。图5.2图片上传界面图片识别结果在上传图片之后,通过训练好的模型识别图片中的食物并且返回食物的名称。如图5.3所示:图5.3图片识别界面食物原料及其营养元素含量通过识别的食物名称,展示该食物的原料组成以及对应原料的营养素含量。单击消除按钮可以清空当前原料列表。如图5.4所示:图5.4原料及营养素展示界面给出简易膳食建议根据食物原料的营养素含量给出简单的饮食建议。图5.4简易膳食建议界面6总结与展望6.1总结总结来说,本文工作重点在于两方面,一是对卷积神经网络模型进行选取、训练、部署的研究,二是根据研究结果设计并实现了一个基于卷积神经网络的食品图像识别APP。首先对研究的背景和意义做了阐述,接着对系统实施所需的各种技术做了研究,然后对图像识别技术中的各类方法进行了详细介绍,接下来对三个卷积神经网络模型VGG16、ResNet50、InceptionV3分别进行了介绍、训练和优化,也指出了这些模型的缺点。在上述准备工作的基础上,本文接下来完成了以下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年10月高三物理机械振动专项训练卷及答案
- 2026年酒类鉴赏模拟试卷带答案
- 2026年金融分析师职业认定考试模拟试卷及答案
- 2026年钻井工考试模拟试卷带答案
- 2026年行业生产性服务业商业模式创新报告
- 2026年绿色建筑行业项目立项与环评可研报告
- 2026年防疫证模拟试卷目(含答案)
- 2026年陕西科目一常模拟试卷及答案
- 2026年静止运动模拟试卷及参考答案
- 2026年网络剧产业链价值报告:内容制作到变现的全过程分析001
- 江苏省南京市玄武区2025-2026学年九年级上学期期中历史试卷(含答案)
- 上海交易集团秋招面笔试题及答案
- 两融风险测评题库及答案
- 2025-2026学年人教大同版(2024)小学英语四年级上册(全册)教学设计(附目录)
- 2025至2030年中国银耳市场全面调研及行业投资潜力预测报告
- 临床医学专业教学标准(高等职业教育专科)2025修订
- T/CAR 10-2022食品速冻装置隧道式速冻装置
- 景区团建合同协议书范本
- GB/T 45602-2025船舶与海洋技术可调式滚轮闸刀掣链器
- 动物营养与饲料学 课件 第四篇 饲料配方设计
- 露天矿山安全生产标准化管理制度汇编
评论
0/150
提交评论