基于深度学习的食品安全检测

摘要:See Food 是一款通过拍照具有识别功能的机器,对于我们平时可看到的食物,只要用See Food拍下来,就可以分析出食物中所含有的营养成分以及所含比例。从而对正在健身或者减肥的群体可以更好地进行每天卡路里摄入的参考,帮助使用的人更好地进行身材管理以及身体的健康管理。本项目应用卷积神经网络的一种改进的残差网络模型进行食物图像识别,不仅能够减少训练时间,而且在不降低准确率的前提下缩小模型大小。实验数据表明,相对于普通神经网络以及普通残差网络,使用ResNet18残差神经网络模型能够很好地满足食物图像识别的要求。本文构建一个包含、食品类别、营养成分、营养价值和卡路里的中西餐食品数据集,并增加了对菜品的腐烂和新鲜度检测,对用户的饮食安全进一步做出了贡献。

 关键词:STM32;深度学习;图像识别;卷积神经网络;ResNet18;树莓派

 1绪论

 1.1研究的背景

当下,随着人类社会的发展,人们的追求也在不断的发生变化,目光越来越聚焦于健康和饮食方面,但影响因素却在发生着变化,在这其中,技术手段脱颖而出。不少人利用各种社交软件晒出种类各异的美食,从某社交平台搜索“美食”关键词,关于美食的分享内容高达上亿条。深入挖掘美食图像的多种资讯和信息价值,能够有效提升饮食在人们提升人们日常生活品质的作用和价值。

在日常生活中,人们需要多样食材的摄入,单一的食材不利于健康。随着保存的时间越来越长,食物在空气中也会发变质,如果不小心食用则会带来难以预料的后果,危害也是不可预知的。因此,判断食材是否处于可食用状态成为目前的一道难题。针对食品新鲜程度的检测合理性与精确性对于现代生活起到不可忽视的关键意义。

因此,拍照识图在食品方面找到了适合它的市场,通过手机简单拍下一张照片,智能系统从图中即可完成相关的检验工作。与此同时也面临着一个问题,信息提取现在可以较为高效做到,但如何从众多信息中提取到所需要的则是一个艰难的跨越。在识图中,目前市场上也存在着一些相关的项目,但绝大多数都是采用的以手工为基础,没有相关创新点,然后再利用输入程序的方法来进行归类[3]。

技术不会止步不前,永远处于前进阶段,因此各种新的方法也被提出,包括网络分析、计算机视觉、机械学系和深度挖掘。在人工智能领域,随着科学家的不断探索,在此方面也有了重大发现,如通过体验式学习,能够有效提升人们对各类食品相关的课题研究积极性和针对性。从食品图像的特征来看,其本身自带聚焦关注度的功能,能够延展至其他领域,如果能够准确识别食物种类,就能我后续的健康研究提供支持,比如减肥爱好者可根据图片计算卡路里、分析营养成本等。而且该项技术并不止步于食物,它在现实生活中覆盖深度和广度不断延伸,如在日常的自助餐中,有效识别食品不但能够准确把控食物消耗的结果,也能提升对消费者用餐计费的准确率。不少人采用照片的记录他们曾经尝试过或想要尝试的食物,并对其制作方法、口味调整、营养结构、适合人群进行深入研究和分析,由此看来,针对食品图像识别的研究具有极为关键的实践意义[4]。本项目使用ResNet18残差卷积神经网络,来实现食物识别,识别其营养价值,重量检测,营养成分,卡路里等。

1.2国内外研究现状

由于人工智能的不断兴起,对菜品识别以及附带属性的相关研究在国内外非常火热,目前根据文献和期刊总结,国内外在此领域的重要成果和研究现状大致分为如下几项:

菜品识别系列食品识别课题作为当前受到学术领域广泛关注的重要课题,大部分研究方向侧重于日式和西餐方向,本次研究从中餐的角度出发,对食物识别技术展开深入研究和分析。

(2)识别菜品成分

目前食品图像识别的研究普遍缺乏关键数据和信息的对比与分析。即便一些食品数据本身已经涵盖了制作方法、食材构成等内容,不过涉及到食物本身的营养成分,营养价值和卡路里介绍的数据集却很少。

(3)菜品数据集

当前大多数研究涉及到的数据内容仅限于独立的菜系上,如某种西餐或中餐食品的图像识别研究。此外,针对食品营养价值和卡路里摄入量往往通过食材进行简单计算而来,目前市面上缺少同时包含食品卡路里和营养价值的食品数据集。

菜品安全度检测目前大部分基于深度学习食品识别的相关研究都侧重于对食品成分和种类的分析,而对食品的安全系数,食品对人类健康影响角度的研究较少。

菜品识别研究成果截至现在,最通常使用是ResNet系列,此系列的应用范围很广。经典的深度卷积分类网络有LeNet-5、AlexNet、 ZFNet、 VGGNet、 GoogLeNet、 ResNet[5]。L eNet 对于复杂问题的处理结果并不理想。本文介绍一种基于深度学习的多核机器视觉框架,AlexNet利用GPU加速使得训练在可接受的范围内得到结果。ZFNet并没有提出太多实际上有助于提高分类准确度方法。ResNet利用残差块模型解决了网络纵深过程中的梯度弥散和梯度爆炸问题[6]。

1.3研究的主要内容

模块安装

在树莓派中安装图像识别模块,控制拍摄模块,报警模块,使图像拍摄后可以自动进行分析检测菜品和其新鲜度,完成STM32的压力测试模块,完成对菜品的重量测试。STM32的语音模块,语音模块识别后把16进制数据传给STM32,STM32把压力测试后的值,以及语音功能反馈的值,打包一起反馈给树莓派中的识别程序,识别到相关数据后,开启和完成相关功能。建立数据库,根据检测到的菜品名称,反馈给用户其百科信息。

(2)环境搭建和软件配置

本设计首先需要对Windows进行深度学习环境搭建,包括CUDA,pytorch,torch vision以及若干python深度学习有关的库函数及GPU环境。以及对树莓派linux进行深度学习环境搭建,包括pytorch,torchvision,PIL等,完成树莓派与stm32之间的串口通信,包括serial方法和使用minicom调试通信配置。以及完成树莓派的GUI人机交互界面。

(3)数据集的搭建和预处理

构建包含1.8万张左右的菜品和食品的See Food数据集,以及包括6千余张食品图片数据,并对数据集做预处理,包含标准化处理,标注各个菜品类别,各张菜品图像名称,后送入模型开始训练。用事先调整好参数的训练模型加以训练的到模型文件。以及训练结束后把模型文件移植到树莓派,在树莓派中完成了相关环境的搭建和调试,使树莓派可以完成菜品新鲜度检测功能。

(4)模型搭建及其优化

用pytorch架构的resnet18网络模型完成对深度学习图像识别模型的搭建。模型训练过程中对所需要的模型函数做有选择性的优化及调整,以及对损失函数loss,优化器optimizer实验中卷积层数量,随机梯度下降epoch,实验样本batch_size,等的选择及其优化调整,及其他细致入微的参数调整。

1.4论文的组织安排

本论文的内容与组织安排如下:

第一章:绪论。对本次研究的背景、意义、目的进行简要概述,梳理国内外关于该课题的研究情况。

第二章:本次研究设计的系统进行介绍,对本次设计的各项功能进行简要概述,并论述模块选择的思路和逻辑,以及硬件模块选取的目标和功能诉求。

第三章:对本次设计的硬件设计展开说明和分析,并对其控制原理进行简要概述。主要的模块内容包含语音、按键、报警模块、压力传感器、树莓派CSI摄像头,液晶显示器等。

第四章:主要介绍系统程序设计和相关配置。从多维度研究和分析系统针对不同硬件模块展开图形化界面模块,配置及调试等。

第五章:软件设计。介绍了本设计中的数据集搭建和模型训练等工作以及对用到的相关算法和训练模型做了详细说明。

第六章:对本次设计系统进行调试。涉及本次设计的各类食物图片,根据实际需求分布测试和调试,有效提升功能展示效果。

第七章:针对本次研究进行总结,对本次研究工作进行全面梳理和拓展,依旧对后续研究和学习的展望。

 2系统的总体设计及硬件选型

2.1系统的总体功能设计

图2-1菜品安全检测总体功能框图

基于深度学习的食品安全检测

本次设计针对食品安全监测功能模块的框架如图2-1所示,充分结合硬件设备和软件的特点,可得出校园智能储物系统的主要功能:

(1)菜品识别功能。用户通过GUI图像用户界面,把拍摄好的图片反馈给下位机,系统经过算法计算后,反馈给用户正确的菜品名称。

(2)菜品安全系数检测。菜品识别后,系统会自动检测菜品的新鲜和腐烂程度,通过几秒钟的计算,下位机会反馈给用户菜品的食品安全系数供用户参考。

(3)菜品其他属性分析。用户通过语音交互功能,下位机收到命令后,系统会反馈给用户菜品的卡路里,重量,菜品介绍,菜品营养价值,营养成分等相关数据。

(4)菜品变质报警功能,待用户完成食品安全检查后,下位机会根据预先设置后的阈值,来确定是否反馈给用户警示功能,若菜品为“此新鲜”或“腐烂”报警灯会闪烁,提示用户此菜品已不新鲜,误食可能会导致健康问题。

(5)健康饮食管理功能,待用户若菜品的卡路里检测后,若菜品的热量千卡值超过预定阈值,下位机会反馈给用户高热量提示,用户根据热量提示,帮助用户完成日常的健康饮食管理。

2.2系统的硬件选型

2.2.1开发板选型(STM32)

本次设计选取F103指南者开发板进行开发,其隶属于野火STM32系列,作为一家深耕嵌入式开发领域多年的的企业,野火研制的开发板为国内研究开发提供丰富的功能开发载体,并为开发者提供各类教材,便于前期开发和后期使用。

F103VET6是开开发板的主要芯片,该芯片共有100脚,具体引脚走向如图2-2所示。和STM32F103C8T6相比,本次设计采用的开发板具有功能丰富、使用便捷的特点。该开发板装载了LED显示、蜂鸣器等功能模块,根据实际使用需求,装载USB转接口,便于调试过程中不同转接口的串接,此外该串口能够提供程序下载功能服务,因此只需通过数据线就能下载,该开发板的多大100个引脚为本次设计提供充分的外设接口,具备极强的适配性和实用性。

图2-2 STM32F103VET6引脚图

基于深度学习的食品安全检测

2.2.2开发板选型(树莓派)

本设计使用到了两个开发板,树莓派 3B具有简洁易操作的特性,大小方面属于较小一类,是一个单板计算机,树莓派的应用领域较宽,如图2-3所示,在实际生活中,可用于实时图像/视频。它还可以变成迷你电脑,通过设备连接RaspberryPi达到这种效果。除此之外,树莓派基金会还会供给特定的操作系统,通过此种系统,它的运用速度将会发生改变,处理器SoC和GPU都会得到一个较大的提升。

树莓派具有自身独特的特性,它是一种主控芯片,在实际操作过程中,自身运行的性质超过其他同类型的,并且它的延展性也十分可观,覆盖领域很广,能够接通多个板块。在进行操作时,它可以被当作是一块主板,在此主板上分布着各种各样的接口,每一个接口都有它独特的作用,接口有USB等,连接网线等,在此基础上,应用者与平时相比,在进行使用时可以更为的便捷,节省了时间。树莓派3B拥有其他开发板所没有的优点,这也是它从众多开发板中脱颖而出的原因所在,例如价格低廉等等。

图2-3Raspberry pie 3引脚图

基于深度学习的食品安全检测

2.2.3Raspberry Pi液晶显示器

显示器使用的分辨率为1024×600,高清无触摸功能的Raspberry Pi专用显示器如图2-4所示,ips是显示屏中的一种超广角技术,可以达到178°防反光,使用时更实用。

图2-4 Raspberry pie 3液晶显示器

基于深度学习的食品安全检测

2.2.4Raspberry pie CSI摄像头

拍照设备没有采用单一接口,而是选用多种设备进行配合,传统和新型摄像头配合使用。在本研究中,主要使用专用摄像头作为拍照模块,改进后的专用摄像头具有独特的优点,选用的是500W像素,该拍照模块由OmniVision公司生产(基于0V5647图像处理传感模块),是专门为该开发板所提供的,配合使用时可以更加的灵活,实物图如2-5所示。

树莓派开发板上有不同的接口,不同的接口可以对应不同的摄像头,在使用过程中需要配套使用。在市场上,比较常见的就是USB和CSI接口。根据市场行情进行分析,价格和像素是最常考虑的因素,因此,从这两方面出发,最终选用CSI摄像头。

图2-5 Raspberry pie 3 Risym摄像头

基于深度学习的食品安全检测

拍照模块都具有一个独特的传感器,通过传感器得出最终的成片,此研究使用的是CMOS传感器,它所能接受的分辨率和帧数都很优秀,保持着较高的水平,在市场上难求。拍照模块与主控模块通过一条15 芯的排线(CSI接口)与之相接。

在应用的过程中,相关程序会采用不同的组件。在应用程序中,不同功能搭配不同的使用,摄像组件都是必备的,在使用的过程中都具有一定的适配性,输出方式多采用的是直接输出,所以不需要编码组件。使用OpenMAX的mmal API进行相关编写,在调控的过程中完成需求,以此来达到不同的指令,达到目的。

2.2.5语音模块硬件选型

UNV-LD3322 是由全球鹰电子开发的音频模块,该模块具有低能耗、低成本、高品质的特点,并集成麦克风、功率放大器等模块。能够实现便捷高效的线下语音识别需求,该模块的运作原理如图2-6和表2-1所示。该模块能够兼容多种中英文文本,并对日期、数值、号码有较高的识别准确率。该模块的通信功能以UART串口异步运作,通过语言文本合成就能完成相应的转接,在此过程中可增加外界语音功能,即可达到语音识别的需求,该模块有多级音量调整,适用于不同环境下的语音播报需求。

 基于深度学习的食品安全检测

  2.2.6报警模块硬件选型

本文设计的是一套完整的菜品识别系统,菜品新鲜度警示模块必不可少。本文设计的报警模块由IO发光灯泡组成,具体操作流程如下:在程序运行时,每当用户检测菜品安全系数时,若检测出菜品的安全系数为“腐烂”,则指示灯同时伴随着闪烁,方便用户及时得到危险信号。实物图如图2-7所示。

图2-7报警指示灯实物图

基于深度学习的食品安全检测

2.2.7压力传感器模块硬件选型

设计所选用的是来自海芯科技公司的HX711 压力传感器模块,HX711是高精度电子秤而设计的 24 位 A/D 转 换器芯片,本设计在使用的过程中,主要适配的是精确度比较高的器材,HX711很好的实现了这一设计。将该芯片与市场中处于同一级别的进行比较,会发现它拥有着诸多的优势,其中最明显的特点是其芯片与稳压电源、内部时钟振荡器等多种芯片运行所需的几层,响应速度快,且具备极强的抗干扰能力。这也为该芯片的整体性能提供保障,不但有效控制电子秤的整体使用成本,更能全面提升设备的运行功效。

另外,较快的反应速度也是该种芯片脱颖而出的重要原因,市场需要具有优势的产品。在电子称发展的过程中,使用此类芯片时,需靠考虑的问题相对较少,连接处和配套程序相对来说较为简易,MCU芯片的接口和编程也相对简单,控制信号由引脚驱动,信号处于单一调控阶段,保持着自身的稳定性,无需寄存器编程。在开关选择方面也保持着一定的独立性,不同的通道会有不同的搭配,系统监测中,通道A有128或64的可编程增益,通道B有32位的固定增益,满额度差分输入信号的幅值分别为±20mV和±40mV,无需额外的模拟电源和任何外接器件即可通过芯片内转换器转换器提供稳定的稳压电源。为本设计的菜品重量检测带来了方便。具体应用原理如下2-8图所示。

图2-8压力传感器模块原理图

基于深度学习的食品安全检测

通过学习和实践来看,这款安信可的海芯科技公司的HX711 压力传感器模块不仅体积小,重量测试的精确度也很高,只需5V的电压就能支持开发板的正常运行,并不需要外部供电,其低廉的售价体现了超越同级水平的性价比。

 3系统硬件设计及控制原理

  3.1系统总体设计流程图

由UNV-LD3322语音合成模块、按键模块、报警模块、压力传感器模块、以及CSI摄像头,HDMI液晶显示器等部分组成。SYN6288语音合成模块根据操作中不同用户需求实现对应的功能,及语音播报功能,压力传感器负责检测菜品的重量,CSI摄像头负责拍摄菜品实物图,报警模块实现操作中的必要警告提示,按键实现进入拍照功能、确认拍照功能,HDMI液晶显示器负责将检测结果呈现给用户。

综上所述,以下图3-1为食品安全检测系统设计结构框图。

图3-1系统设计结构图

基于深度学习的食品安全检测

3.2模块硬件设计

该系统具体资源分配的结果如下表3-1所示。除语音模块分别使用串口1以外,树莓派中摄像头与显示器有单独的引脚接口,其他模块均使用通用GPIO接口。以及基于Raspberry Pi的相关模块资源分配,具体会在下文详细说明。

表3-1硬件资源配置方案

STM32F103 RXD TXD Raspberry Pi RXD TXD
压力传感器 PB5,PB6
UNV-LD3322语音模块 USART1(PA9,PA10)
按键模块 GPIO24/GPIO22/GPIO18
Raspberry Pi CSI摄像头 PB0/PB5
Raspberry Pi HDMI液晶显示器 SCART
报警模块 PB12/PB13/PB14/PB15

本次设计选用的开发板为STM32F103指南者开发板,不刻意追求最小系统板,生产过程自带功能模块,因此本次设计只需展示相关的模块即可。本次设计针对开发板设计的电路设计图如3-2所示。

图3-2系统模块电路设计图

基于深度学习的食品安全检测

3.3按键模块

在本设计中,若想实现拍照功能,可通过按键模块实现。在设备准备的对菜品进行拍照识别之前,使用者只需点选拍照按键即可实现该拍照识别功能。使用阶段通常需要对拍照功能设置消除抖动的技术优化。按键抖动可以理解为受到按键本身触点反弹的影响产生一定程度的波纹,从而形成特定信号。此类信号可利用软件自带的功能消除。本次设计为此专门设置消抖功能。具体如图3-3所示,该功能合理运用电容放电的延迟效果达到减缓和消除波纹的作用,软件仅负责对引脚产生的电平数值。

图3-3按键硬件消抖功能

基于深度学习的食品安全检测

按钮模块 树莓派开发板
序号 引脚名称 引脚说明 引脚名称
1 GND 地线 GPIO22
2 VCC 电源 GPIO18
2 OUT 串行数据输出 GPIO24

表3-2按钮模块连接说明

通过上图KEY1举例,在KEY1处于静止状态时,电路没有被接通,这一阶段的引脚接地,GPIO引脚属于低电平输入状态。在KEY1启动之后,该电路被接通,引脚与电源相连接,此时GPIO属于高电平输入。

从上文论述来看,研究中只需对引脚区域的输入电平进行检测,就能得知按键的启动状态,下表3-3显示出树莓派和按键模块的具体情况。

 3.4压力传感器

本设计中,压力传感器负责对菜品的重量进行检测,当下位机接收到来语音模块请求检测菜品重量的指示后,压力传感器开始工作,即把传感器检测值传给STM32,经由STM32的TXD,传送串口数据给树莓派,最后经系统软件操作,反馈给前端显示器,表3-3为压力传感器与STM32的连接说明。

压力传感器 树莓派开发板
序号 引脚名称 引脚说明 引脚名称
1 GND 地线 GND
2 VCC 电源 PB5
2 OUT 串行数据输出 PB6

表3-3压力传感器连接说明

4系统程序设计与环境配置

  4.1系统总体设计流程图

图4-1为本次设计的See Food菜品系统识别的设计框架,在系统中各个模块处于正常运作状态时,用户可以通过语音交互,体验菜品识别程序的各个功能,STM32负责接收语音模块的识别数据,反馈给树莓派,树莓派听到相关指令后控制启动识别程序的GUI图像用户界面,待界面启动后(大约5秒钟),点击启动程序,开启摄像头拍摄功能。待捕捉到食品画面后(大约3秒钟),通过语音模块,反馈给机器,可以开始识别功能(大约2秒钟)。语音模块通过STM32传递食品重量的值给树莓派,树莓派完成菜品种类的识别功能,并给出相关的介绍(大约10秒钟),系统自动对食品新鲜度的测试,这里算法运算偏慢,大约需20S时间,完成检测后反馈回结果,用户还可以通过语音交互,根据需求,有选择的进行对其他菜品相关信息的获取,比如“卡路里”“重量”“营养能量表”“营养价值”(各个功能大约3秒钟),反馈并呈现到UI界面上,供用户参考。

图4-1系统总体设计流程图

基于深度学习的食品安全检测

4.2语音模块程序设计

本次设计涉及的语音模块针对相应的应用需求,利用外界喇叭设备传输预先设定的语音文本,其中应用场景和文本设计对应的情况如表4-1所示。

语音文本 操作应用场景
已进入图形用户界面 打开菜品识别程序
正在为您检测 开始检测食品
食品安全系数检测成功 检测食品安全系数
菜品重量检测成功 检测菜品重量
营养价值分析成功 分析菜品营养价值
能量表分析成功 分析菜品能量表

在设计程序过程中,将所有文本播报音量设置为16级,并静音设置为默认背景音,播报速度控制在5级,真实还原人声的语音播报效果。

4.3图形化界面模块

本文提出一种基于python语言的交互式图形交互界面的开发模式和实现技术。最流行的算机桌面应用程序是图形化用户界面GraphicUserInterface,简称GUI,通过图形化元素,如鼠标到菜单和按钮,会触发命令,并从标签和对话框等图型化显示容器中捕捉人机对话信息。本质上,TK的Python编程接口是一个受欢迎的面向对象的GUI工具包,它提供了创建GUI应用程序的快速和简单的方法以及创建GUI应用程序的简单方法。

图4-2GUI 图像用户界面设计图

基于深度学习的食品安全检测

本设计通过导入tkinter库,tkinter是一个从Python到tk的图像界面接口,可用于图形界面的设计和交互操作编程。tkinter的优点是它易于使用,并且易于与Python组合以创建一个简单的UI界面。并且将训练模型各部分代码与UI界面组合起来。counter_label1函数控制动态获取每100ms内的数据变化,定时器会自动进行定时复位,根据用户的语音反馈内容,对“卡路里”,“菜品重量”,“菜品名称”“菜品营养成分”“菜品营养价值”的数据做动态处理,将需要的识别和测试结果呈现到显示器的前端界面。如图4-2所示。

4.4Linux与STM32串口通信配置

(1)系统串口配置

在树莓派与STM32通信过程中,通过Linux下的串口调试助手minicom,设置调整波特率校验位等与STM32在PC上的串口调试助手设置一致,为115200,防止传输混乱,引脚树莓派ttySO通信接口,硬件流控制为NO,如图4-3所示。

图4-3Linux系统minicom通信调试图

基于深度学习的食品安全检测

(2)关闭蓝牙

由于树莓派3的蓝牙与串口冲突,只能选择其中的一个。系统默认设置是选择蓝牙。需要关闭蓝牙,打开sudonano/boot/配置.txt文件,加上dtoverlay=pi3-禁用-bt来关闭蓝牙

(3)通信代码

在python程序中使用serial,并设置波特率为115200.完成与STM32的串口通信,如图4-3所示。

图4-4 Liunx中python程序与STM32完成串口通信

基于深度学习的食品安全检测

 4.5人机交互(UI界面)

人机交互:本设计通过RPI.GPI0库,将GPI017(按钮)设置为控制位,当按键按下时,GPIO口至1,此时调用rapistill指令,按键控制CSI摄像头,将拍摄到的图片存入home文件夹内,并且通过各阶段代码,对传入数据进行处理,同时使用训练好的网络模型去识别image.jpg,最终识别结果以text文档形式反馈给下位机,下位机根据用户需求显示到UI界面中。最后等待下一次输入的到来,人机交互页面如图4-5所示。

图4-5人机交互界面(Windows视图)

基于深度学习的食品安全检测

    4.6树莓派CSI摄像头

基于深度学习的食品安全检测

本设计在对CSI摄像头安装过程中,首先完成对摄像头排线CSI接口的插入,硬件插好后,在Linux命令窗口中首先使用”ls/dev”指令来查看是否存在vchiq设备节点,确保硬件不存在问题,运行运行”vcgencmd get_camera”查看当前摄像头是否可用,完成前期的工作步骤后,运行”sudo raspi-config”命令使能树莓派CSI摄像头如图4-6和图4-7。

该拍照模块内部提供三个应用程序,本文采用了raspistill来捕捉图像,摄像头主要用于拍摄菜品画面,待系统内摄像头相关设置调试好,可通过控制拍摄按钮模块,获取菜品的实物图,拍摄流程图见图4-8所示。

图4-8拍摄流程图

基于深度学习的食品安全检测

4.7树莓派VNC远程配置

为了对树莓派的软件系统进行配置和调节,本设计采用Windows远程登陆进行操作。常用的方法有两种,一种是通过SSH协议,一种是使用VNC工具。这两种方法在比较的区别在于:SSH从终端的命令行操作,而VNC有一个图形界面.但在实际应用中,VNC需要与其他设备通信才能实现对终端设备的控制。这给系统带来了不便。而VNC的串口只能通过外设连接到PC机上。因此,本文采用了VNCViewerRaspberryPie远程配置软件。

树莓派的Raspbian系统,集成了VNC Server,默认却是不开启的,需要在输入raspi-config启动Raspbian配置系统,进而进入raspi-config界面,如上图3-4和3-5所示,紧接着使树莓派链接无线局域网后,即可在ifconfig指令的帮忙下查取到树莓派所在的局域网IP地址,通过CNV Viewer根据用户名及密码间接操控树莓派Linux操作系统,如图4-9所示。

图4-9 VNC Viewer远程Linux登陆界面

基于深度学习的食品安全检测

4.8Windows开发环境配置

PyTorch、Keras、Caffe、torchsion、torch 是目前受到多方认可且应用广泛的库函数。本次设计采用pytorch作为建模的基础函数,结合win10系统,Intel(R)Xeon(R) Silver 4210 CPU @2.20GHz,NVIDIA GeForce RTX 1050Ti,并通过GPU运行,操作系统型号如下表4-2所示。

配置名称 配置型号
操作系统
显卡
处理器
内存 16G
CUDA版本 10.1
开发环境

表4-2 Windows实验平台配置参数图

4.9Linux开发环境配置

本实验在树莓派中安装pytorch,torhchvision,及用于通信的serial模块,用于设置UI界面的tkinter模块等。Linux中不需要单独安装对应版本的GPU,识别图像使用自带的GPU版本pytorch即可,Windows完成模型训练后将识别菜品的pth权重文件移植到Linux中,具体配置型号如表4-3所示。

配置名称 配置型号
操作系统 Linux
显卡 BCM2835 @ 4x 1. 2GHz
处理器 Cortex-A53
内存 874M
模型识别Model环境 CPU
开发环境 Python3.7,torch1.7

表4-3 Linux实验平台配置参数图

 5软件设计

  5.1数据集制作

图像采集:本设计所采用的数据集为Food-11数据集,并在此基础上构建自身的See Food数据集,原始数据集共有11类,有Pizza hamburger,Cheese,Cake,Egg Cake,French,Fries,Steak,Spaghetti, Fried Rice, Braised Eggplant, Breakfast Porridge, Vegetable Salad等,如图5-1所示。

Pizza hamburger CheeseCake Egg Cake

French Fries SteakSpaghetti Fried Rice

Braised EggplantBreakfast PorridgeVegetable Salad

图5-1数据集类别图

基于深度学习的食品安全检测

原始数据共18632 张图像,本文根据实验这11钟菜品和3大类“新鲜”、“此新鲜”、“腐烂”菜品作为实验研究对象,图5-2为本地存放的数据展示。

图5-2菜品数据集节选图

基于深度学习的食品安全检测

本设计自制数据集命名为See Food菜品数据集,其中包括以下11类菜品和食品图像:其中Pizza hamburger病害有1041张、 Cheese有 1780张、Cake有1650张、Egg Cake有2410 张、French Fries有1184 张、Steak有1875张Spaghetti有1860张Fried Rice有1970张Braised Eggplant有1200张Breakfast Porridge有1150张Vegetable Salad有1686 张如表5-1所示

菜品名称 数据集容量
Pizza hamburger 1041张
Cheese 1780张
Cake 1650张
Egg Cake 2410张
French Fries 1184 张
Steak 1875张
Spaghetti 1860张
Fried Rice 1970张
Braised Eggplant 1200张
Breakfast Porridge 1150张
Vegetable Salad 1686 张

表5-1菜品数据集

以及三类用于检测食品安全系数的数据集,Fresh Dishes 1405张、Second Fresh Dishes53510张和Rotten Dishes 2752张这些图片存各放在-一个文件夹内,并分类。如表5-2所示。

菜品新鲜度 数据集容量
Fresh Dishes 1405张
Second Fresh Dishes 5351张
Rotten Dishes 2752张

表5-2菜品新鲜度数据集

5.2图像数据预处理

由于原始数据已经提前做了分类,已经将数据集文件放入了到0到n命名的文件夹中,在图像送入网络训练之前,利用Python的data_utils操作文件,将导入的18632张图像进行标准化处理,转换图像大小,并为每一类别菜品,每一张菜品图片进行标签标注,为数据的网络训练做准备。关于数据集的处理大致可以分为四个步骤,如图5-3所示。

图5-3数据集处理基本流程框架

基于深度学习的食品安全检测

图像预处理和测试集,包括图像大小调整、与ResNet模型架构所需尺寸相匹配的统一图像尺寸(224×224);图像增加功能,比如横移、90°翻转、大小缩放、调整、降噪等。能够使用AI模型多种处理需求,并通过使用Pytorch的系列数据增强功能扩大数据集;将图像归一化和规范化为[0.0、1.0]值,将图像转换为模型可接受的数据类型和格式,且通常只针对训练集采取归一化处理;其平均数值为=[0.485,0.456,0.406],标准差STD=[0.229,0.224,0.225],先减去均值再除以标准差进行标准化运算,通过对均值的减法和标准差的除法,可以使数据更加符合数据中心化分布规律,提高模型的泛化能力。

(1)本实验使用了Normalize算法。其作用是将图片在每个通道上做标准化处理,即将每个通道上的特征减去均值,再除以方差如图5-4所示。也就是将需要处理的数据,经过一定的处理方法,将其数值限制在一定范围内。在深度学习图像处理中,归一化处理之后,可以使数据更好响应激活函数,提高数据的表现力,梯度在处理过程中一直备受关注,解决此类需要需要技术的支持,因此,需要展开相关分析。在通常进行处置的过程中,常用的办法是将数值看作是一个定值,也就是在数值整理过程中采用赋值的方法,赋值高斯分布和均值,也就是将数据按通道进行计算,将每一个通道是数据计算出其方差与均值,然后,在现有处理的基础上,数值要进行统一的处理,得到数据与均值的差值,这就相当于完成了一个处理周期。在之后,使用该数据与方差进行相比,最后得出一个相对应的结论,在系统命名时,将其称为归一处理,以凸显个体之前的差异和特征。

图5-4数据集预处理程序图

基于深度学习的食品安全检测

(2)从图像中心开始裁剪图像,裁剪大小为224,并Resize图像大小为256,最后利用pytorch的transforms算法对RGB数据进行处理,将其变成Tensor数据。

(3)利用_geitieme_方法进行数据预处理的,运用在整个训练迭代过程中,每读取一张图片,调用一次预处理组合,进行一次预处理。

(4)将数据集分成训练集(80%)和测试集(20%),名字命名为train、test两个文件夹。

图片通过相应的库函数对训练集进行加载,并在此基础上通过预处理和加载路径的方式进行输入,根据上述操作后进行参数输入。通过Loader方法转测试和培训数据,为后续的计算提供参数支持。最后将加载的数据送入模型中训练。

 5.3算法框架

    5.3.1 Res Net残差神经网络

(1)Res Net

ResNet全名ResidualNetwork残差网络。它的范围涉及非常广,并且该网络拥有者独特的性质,相较于其他残差网络,他所能达到的深度可以说是远远超出其他,可以达到数百层,甚至是上千层,在此过程中,它也能保证它的准确度保持在一个相对高的水平。结果通常都需要实验来进行证明,在该项结论的验证过程中,可以发现,如果纯靠叠加对于相关结论并不会起到较强的加强作用,所产生的最终结构还会低于与之相适配的,这是一个令人意想不到的结论,但是在实际应用中,将会具有很大的实际作用效果。

(2)算法优点

本设计之所以选用ResNet残差神经网络,是因为CNN卷积神经网络的层级也有一定的限制,它并不是可以无限增加的,当达到一定的数量时,识别的能力将不会再发生变化,并且准确度也有会一定程度的降低,这是与人们的预测所相反的。因此,为了解决这一问题,研究者们提出了新的概念—残差学习,梯度问题一直备受关注,ResNet能很好的解决这一问题。

 5.3.2基本残差块Basic Block

图5-5 Resnet中的残差块结构

基于深度学习的食品安全检测

(1)残差块介绍

网络输入为x,一般来说,CNN网络有它自身的一个表达方式,它不是先天就具有的,而是经过了不断地练习最终完成相关函数的拟制,在最终结果中表现出学习效果。残差学习并不是指单一的学习,而是在学习的过程中,输入输出所产生的距离,在此基础上,帮助利用者或者执行者达到一个更好的学习效果。

(2)残差块的代码实现

在pytorch的resnet模块在torchvision的models中,BasicBlock相关代码如图所示。BasicBlock虽然是经过两个3×3的卷积如图5-6所示,其中conv1和conv2所示,但是前一个是设置了步长的,stride设置为2。在BasicBlock类里两个3*3的卷积为主要部分,用了batchnorm和relu激活函数。

图5-6 Basic Block代码(pytorch)

基于深度学习的食品安全检测

需要强调的是,BasicBlock的分支x要与output相加时,若x和output的通道数不一样,则要做一个downsample,也就是俗称“下采样”,是用一个1×1的卷积核处理,变成想要的通道数。跟downsample有关的还有expansion,他的意思是扩张,因为残差层里输入输出需要保持一致,不一致时需用到downsample。

(3)各类别残差块区别

ResNet18都是由BasicBlock组成的,如5-5图所示,50层(包括50层)以上的resnet使用的是Bottleneck组成。上述全部类型的ResNet卷积操作均以64倍通道数运行,在实际运行中均已1×1和3×3的方式开展,这其中除了(conv1)之外,任何一种resnet均由四个模块构成,它们分别是:512。

5.3.3算法类别选用(ResNet18)

(1)算法选用

ResNet网络模型大致可分为18/34/50/101/152等五类,由于本文所用的See Food食物数据集目前为止的存储容量并不大,也不需要太苛刻的硬件要求,因此在通常情况下,采用18层的版本就能满足储存需求,也能够有效缩短运行时间。

(2)各类别函数区别

1.Resnet101、152和resnet18、34的函数区别在于构建网络结构的时候block的参数不一样,例如本设计所用的resnet18选用的是[2, 2, 2, 2],代表按次序每层生成2个BasicBlock块。

2.其次是BasicBlock类和Bottleneck类的选择有所不同,两个类的区别主要是在residual结果中卷积层的数量不同。

(3)框架介绍

总的模型结构主要分为五大部分,框架结构如图5-7所示,第一层是输入层,第 2 到 7 层属于层的叠加,在每个循环环中有一个buildingblock,第8-13层的第一层是strides=2,因此可将输出张量和输入张量设置为16*16*32和32*32*16,也可以视为全新的卷积操作,并与shape保持一致,以确保顺利add操作,14-19层的操作也是如此。

图5-7Res Net18模型结构

基于深度学习的食品安全检测

(4)模型算法的代码实现

ResNet18代码实现主要包括动态层和静态层,静态层包括conv1(),bn,relu和maxpool()等主要BasicBlock组成函数,如图5-8所示,图中给出了动态层中layer1~4的定义,其中的layer1,2,3,4可以理解为通过存在差异的参数获取而来,这里layer每一级别的不同代表了上文所提到的block的参数。

图5-8 Res Net18模型算法涉及函数

基于深度学习的食品安全检测

5.3.4模型微调

(1)模型调整范围

为了减小本次设计的模型训练时间和提升收敛速率,在设计过程中,可基于ResNet网络模型卷积层的基础上增设BN层,该阶段操作可以理解为处理不同层级的神经网络输入,确保其达到平均值的要求。

本设计进展过程中,使用torchvision.models模块中包含的很多常用的网络结构,并对其中的模型统一的调配后,再利用模型进行运转的过程中,让内部结构得到相应的提取,在预先的基础上也达到了一个比较好的效果。调整后,算法搭建和模型识别中如图5-9所示。

图5-9模型搭建和识别结构图

基于深度学习的食品安全检测

(2)调整过程

本设计在模型构建好以后,没有立即得到实际应用,而是通过相关的实验步骤,比如定义损失函数及优化器,将训练数据带入模型得到预测值,梯度清零,损失和精准度都需要位置在一个固定的波动范围,在经过相关区域之后进行拟制。针对BN层中的相关数据输入至非线性激活函数之后的具体情况,其对相关数值变化产生变化更为敏感,可适当降低过拟合的操作,有效规避由于模型产生梯度爆炸的风险隐患。

BN操作之后并不需随机地将神经元逐出,该层能够实现代替Dropout层的作用,在执行过程中进行二次过拟合操作。此外,增加BN层,精准度也会变得更好,在经过适当的层级之后,时间在原有的基础上将会降低,但是聚拢的速度却会朝着相反的方向进行。

模型训练卷积神经网络训练过程可分为两个阶段.第一阶段是数据从低层次到高层次的传输阶段,即前向传播阶段。第二个阶段则是从低层到高层进行逐层学习,从而得到最终输出的阶段,这就是正向迁移阶段。另一个阶段是在当前传输结果不符合预期的情况下,从高到底层次的通信训练阶段,即反向传播阶段,如图5-10所示。

程序实施环节具体为:为了得到图像标签和数据,加载训练数据集;确保梯队属于归零状态;向前方传导,推导模拟计算;得出损失率;根据从高到低的方式反向推导,明确相应参数对误差影响的情况并更新参数;保存每个周期的损失值。

图5-10 卷积神经网络训练过程

基于深度学习的食品安全检测

训练函数train把数据集的内容导入到模型函数中来并开始train_loss_record训练损失记录,train_acc_record训练准确度记录,test_lose_record测试损失记录,test_acc_record测试准确记录,如图5-11所示。

图5-11 模型训练参数记录

基于深度学习的食品安全检测

代码实现步骤如图5-12所示。

图5-11 模型训练的函数算法流程

基于深度学习的食品安全检测

(1)tranin_iter表示提取的训练集数据,text_iter表示提取的测试集数据,train函数是把训练集的数据加载到训练模型中去训练,首先根据test_iter,模型model对象net,对每一个像素点x,y进行相应的处理,得出每一个epoch中测试集的训练损失和准确度数据。

(2)判断断点文件ckpt_file是否为空,如果不空则提取权重文件中的训练记录,优化器,epoch等。

(3)开始训练并记录epoch,将所有的数据送入网络中,完成了一次前向计算 + 反向传播的过程。从start到sum,并且对每一个像素点x,y进行相应的处理,得出每一个epoch中训练集的训练损失和准确度的总和train_l_sum,train_acc_sum。测试集的每个epoch相关准确和损失值需要调用evaluate_accuracy函数。

(4)训练集和测试集得到的这四种数据,再和训练次数batch_count一起进行运算,得到train_loss_record,train_acc_record,test_acc_record,test_loss_record4.最后,把得到的这四项指标数据通过save_moddel函数进行保存,并用plot函数进行可视化描述,如果判断为空,则证明训练结束,进行最后的一次的save_moddel函数以保持参数和数据到权重文件,并完成可视化。

(5)通过save_model完成权重文件的保存,也就是训练的模型文件,可以供用户完成硬件相关识别,也可以作为下次训练过程中的基础文件(缩短训练时间)保存的模型文件包括如下表5-3所示。

参数量 模型训练记录
param net 模型module对象
param optimizer 优化器对象
param train_loss_record 模型训练loss记录
param verif_loss_record 模型验证loss记录
param train_acc_record 模型训练精度记录
param val_acc_record 模型验证精度记录
param model_save_fp 文件保存位置
param epoch 训练的轮数

表5-3 模型保存权重文件

 6系统软硬件综合调试

  6.1模型参数调节

本次设计中的模型训练通常分为两个步骤。向前传播阶段,该数据始于输入阶段,其层次分布遵循从低到高的计算原理;在此阶段,处理图形数据,遵循从低到高的排序进行输入层计算,基于损失函数得出输出结果与真实值之间的损失值值,并在此基础上,对分类器参数和权值分别做了优化。反向传播阶段,通过反向传播算法得到最终的分类结果,如果输出结果和预期结果存在较大误差应当采用方向传播的方式。

需要注意的是,这种设计并没有对所有模型参数全局进行全局finetune,但是要更改的层的学习速率与其他层不同,因此这种设计在优化器中分别为其他层和新的层分配了不同的学习速率,如图6-1所示,其中feature_params使用lr学习率的值来训练,model.fc.parameters使用lr*10倍的学习率的值来训练,weight_decay是lr*0.1倍学习率的值来训练。

以及本设计最后对的batch_siaze一次训练所选取的样本数设置为16,以及完成一次num_epoch正反向传播值设置为了20,这是结果反复检测模型acc和loss后得到的最佳参数值

图6-1模型中涉及部分参数图

基于深度学习的食品安全检测

模型测试与识别神经网络在进行完训练和测试后,加载模型用于预测菜品图片数据。模型识别总共需要两大部分:定义神经网络、预测函数(新图片的加载,传入模型、得出结果,识别结果)生成的模型Model参数来测试样本,模型的训练和菜品识别的流程图如图6-2所示。

图6-2 模型训练和识别菜品流程

基于深度学习的食品安全检测

生成模型Model参数以测试样本。由于该算法是一种基于深度学习和人工神经网络相结合的算法,具有较强的泛化能力,因此能够较好地处理非线性问题,提高了分类精度。最后通过实验验证了此模型及算法的可行性。测试工作前期,应当对Model.eval()方法进行调用处理,在此过程中网络参数的权值不发生变动,同时梯度状态不变,采用向前传播的方式可以得出预期损耗值和输出损耗值,针对两项数值的对比和分析,对该模式的有效性进行验证,从中得出测试结果的准确率。

识别结果如图6-3所示,图中张量tensor代表了各种“概率”中最大的一个,然后根据最大“概率”的位置找到list对应的类别index,“_,predicted = torch.max(outputs.data,dim)”函数负责返回最大值所在索引,根据据索引所在菜品数据集的位置判断菜品名称。

图6-3 模型识别结果反馈图

基于深度学习的食品安全检测

模型评估对训练数据集进行训练,在完成测试之后,对训练损失率和测试损失率之间的数据曲线对比对训练成效进行深入研究和分析,在此基础上对模型的有效性与合理性进行验证。

将训练周期的数值设定为20,从中计算出不同损失率曲线上产生的变化,从中发现,在训练周期不断加大之后,测试损失率、训练损失率都开始逐渐减小,没有出现拟合现象。3.对不同参数下的EPOCHS进行了比较研究发现:随时间增大,EPOCHS减小;而随样本数量增多,EPOCHS也随之变大。当EPOCHS=5时,两者的损失值没有显著变化,但当EPOCHS=5时,试验EPOCHS准确率明显高于20。

图6-4Loss和Accuracy可视化

基于深度学习的食品安全检测

图6-5训练日志记录的text文档

基于深度学习的食品安全检测

图6-5为训练集与测试集的loss和准确度的可视化反馈,经过测试集测试,从训练日志中计算得,训练准确率平均可达97.3%。

图6-6中给出了训练反馈的text文档呈现,当实验进行到第二个epoch时Accuracy就已经达到了93%。

 

6.4实验结果分析

基于深度学习的食品安全检测

图6-6菜品及其新鲜度识别准确率

图6-6中给出了十一种不同的菜品的识别准确率,及菜品新鲜、此新鲜、腐烂等食品安全系数的识别准确率。

在具体实施阶段,可通过网络爬取的方式获取各类食物的原始图像数据,针对数据进行预处理和数据增强之后,形成三通道矩阵数据集;在此基础上根据ResNet模型的实际需求合理提升BN层收敛效率,对上述几个通道中的样本集展开残差神经网络模型训练,并将数据集引入模型对食物识别网络的准确率进行验证。

系统整体实物图如图6-7、6-8所示为系统实物图。系统由STM32开发板、树莓派开发板、语音模块、压力传感器模块、按钮按键、报警模块、树莓派摄像头、液晶显示器共同组成。

6.5暂时未添加

图6-7系统各引脚接线图

暂时未添加

基于深度学习的食品安全检测

基于深度学习的食品安全检测

基于深度学习的食品安全检测

基于深度学习的食品安全检测

基于深度学习的食品安全检测

基于深度学习的食品安全检测

 7总结与展望

      7.1总结

本项目基于深度学习,将ResNet18应用于食物识别,并进一步设计实现了SeeFood食物成分分析。测试结果表明,该系统能够准确识别多种食物并给出食物成分分析结果。在项目实施过程中,建立了See Food食物图像数据集,可用于今后该方向的进一步研究;ResNet 模型在应用的过程中随着相关步骤的增加,它的过程也会变得相应的复杂,这主要是由于它需要与其他的模型进行配合,在使用的过程中最好不单独存在,而是需要网络之间的相互配合。使用时,对相关配置的要求比较高,不是简单的随机应用,例如为了最大限度规避模拟训练阶段存在过拟合风险而造成的影响,针对不同卷积层上的训练样本特性的算法函数做调整处理。

 7.2展望

本项目虽然基本达到预期目标,但仍存在不足和改进之处,未来的工作将从以下几个方面展开:

(1)进行更好的人机交互设计,使用者可以将自己的体重、身高等等身体数据输入机器中,便可分析出身体的健康指数,从而分析出某一种食物对自己身体的影响等等。

(2)增大数据集的容量及食物识别应用的范围,比如可以通过图片相似度等算法,对于简单的食物分析出其烹饪方法。

(3)由于实践阶段对食物图像采集难度较大,本次设计主要选取网络数据和标签存在一定程度的偏差,对模型适应性造成影响;其次本文所采用的ResNet18网络模型相对计算量和运行难度都只达到了深度学习的基础标准,造成和深度学习在其他领域的应用上,本次设计中涉及到的训练模型存在一定的进步空间。

(4)该项目通过一系列的联系活动来增加它的作用效果,时间和层级都得到了相应的降低,在配合方面数值也降低到了平均值以下,短时间内想要达到此种效果是比较难的。

(5)随着ResNet模型深化CNN网络结构,需要多次验证和确定模型的培训周期和权重,无形中造成计算难度上升,存在一定的资源浪费,同时对训练设备的要求普遍较高,整体训练成效不显著。

致谢

大学之前,对事物都没有一个清晰的判别标准,不知道何为对何为错,带着对大学生活的憧憬和向外,来到了上海第二工业大学,四年时间如白驹过隙,转瞬即逝,转眼间,这四年的大学生活即将结束,短短几年,遇到和经历了很多人和事,有老师的照顾,有同学的呵护,有校领导的殷勤指导,清晰的感受到了自己的大学成长,此番最需要感谢的,莫过于老师,家人,朋友,这所学校。这四年,我收获颇丰,受益匪浅,回首过往,历历在目。

首先需要感谢我的指导老师老师,从开题报告前两个月时间,老师就安排我们定期举行线下会议,积极主动的与我们沟通项目的选题和毕业设计前期的准备工作,为我们每个人单独的分析指导项目选题中存在的各种问题,他不止是我们指导老师,也是任课老师,在他的帮助下,我们收获了很多的专业技能和知识,除此之外,在面临考研和工作的压力时,老师也为我们做了相应的心理辅导,提供了建议和解答,整个大学期间,深受老师的指导和帮助,由衷的感谢老师这些年对我们无私的付出。

大学四年,因为老师和学校的信赖,有幸参加了几次校级和市级项目竞赛,从中也培养了深厚的实践开发能力,这要感谢项目团队中来自各个专业的队友,以及指导老师,因为有他们的沟通和帮助,我得到了实实在在的经验提升,感受到了学习的乐趣,充实了我的大学生活。

另外我要感谢的是上海第二工业大学的各位授课老师们,无论是第一堂课的老师,还是最后一节课的授课老师,无不让我受益良多,是你们让我学到了本来难以触及的知识,除了这些专业知识之外,还让我学会了许多思考方法和逻辑思维,这会是我人生中最深刻的记忆。

父母之爱子,则为之计深远。感谢父母亲二十余载对我无微不至的照顾与支持,给我无限的爱与温暖,让我站在他们的肩膀上,见识到更广阔的世界。养育之恩,无以为报。只有不断努力,成为他们值得骄傲的儿子。愿我的父母永远健康,平安顺遂!

山河不足重,重在遇知己。感谢我的全体室友,与我朝夕相处,相互包容,祝我的男孩们前程似锦,平安喜乐!感谢一路支持我、安慰我的朋友们,希望我们都能无愧自己的努力,于更高处再见。祝大家平步青云,万事胜意!

路漫漫其修远兮,吾将上下而求索。感谢虽然不是最努力但始终尽最大努力保持自信乐观的自己,前路漫漫,酸甜未知,所幸总能从过程中寻找所得。我已亭亭,无谓亦无惧!

行文至此,落笔为终。虽是拙笔,聊以表情,念师情,恩父母,同窗谊……山川异域,风月同天,毕业快乐,再起征程!

参考文献

[1]He, K., Zhang, X., Ren, S., & Sun, J. (2016).Deep Residual Learning for Image Recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).doi:10.1109/cvpr.2016.90.

[2]林云森,范文强,姜佳良.基于深度学习的水果识别技术研究[J].光电技术应用,2019,34(6):45-48,58.

[3]王酉祥.监控视频中基于深度学习的人脸检测与识别算法研究[D].成都:电子科技大学,2018.

[4]斋藤康毅,陆宇杰. 深度学习入门 基于Python的理论与实现[M].上海:人民邮电出版社,2018.

[5]Wang H, Sahoo D, LiuC,et al.Learning cross-modal embeddings with adversarialnetworks for cooking recipes and food images[J].IEEE Conference on ComputerVision and Pattern Recognit ion, 2019(1): 11572-11581.

[6]林云森,范文强,姜佳良.基于深度学习的水果识别技术研究[J].光电技术应用,2019,34(6):45-48,58.

[7]王酉祥.监控视频中基于深度学习的人脸检测与识别算法研究[D].成都:电子科技大学,2018.

[8]李辉,闵巍庆,王致岭,等.基于图卷积网络的多标签食品原材料识别[J].南京信息工程大学学报(自然科学版),2019,11(6): 743-750.

[9]边竞,王艺璇,代宇晖,等.基于卷积神经网络的中餐菜品名称成分识别J].智能计算机与应用,2020,10(6): 55-58.

[10]陈丽.科学的烹饪方式在保护食物营养价值中的作用[J].食品安全导刊,2020,268(09): 100-100.

[11]Farinella G M,Allegra D, Moltisanti M, et al. Retrieval and classification of foodim ages[J]. Computers in Biology and Medicine,2017,77(1):23-39.

[12]段雪梅,朱明,鲍天龙.双线性模型在中国菜分类中的应用[J.小型微型计算机系统,2019,40(05): 1050-1053.

[13]Salvador A, Drozdzal M, Giro-i-Nieto X,et al. Inverse cooking: Recipe generationfrom food images[CV/IEEE Conference on Computer Vision and PatternRecognition, 2019: 10445-10454.

[14]吕永强,闵巍庆,段华,等.融合三元卷积神经网络与关系网络的小样本食

品图像识别[J].计算机科学,2020,47(1): 136-143.

[15]韩冲,王俊丽,吴雨茜,等.基于神经进化的深度学习模型研究综述叮.电子学报,2023,49(02): 372-379.

[16]张钰,刘建伟,左信.多任务学习[叮].计算机学报,2020,43(7): 1340-1378.

[17]Chen J J, Ngo c w, Chua T S. cross-modal recipe retrieval with rich foodattributes[Cy/Proceedings of the 25th ACM International Conference onMultimedia, 2017:1771-1779.

[18]朱张莉,饶元,吴渊,等.注意力机制在深度学习中的研究进展J.中文信息学报,2019,33(6): 1-11.

:STM32;深度学习;图像识别;卷积神经网络;ResNet18;树莓派

基于深度学习的食品安全检测

基于深度学习的食品安全检测

价格 ¥9.90 发布时间 2022年11月4日
已付费?登录刷新
下载提示:

1、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“文章版权申述”(推荐),也可以打举报电话:18735597641(电话支持时间:9:00-18:30)。

2、网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。

3、本站所有内容均由合作方或网友投稿,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务。

原创文章,作者:打字小能手,如若转载,请注明出处:https://www.447766.cn/chachong/67011.html,

Like (0)
打字小能手的头像打字小能手游客
Previous 2022年11月4日
Next 2022年11月4日

相关推荐

My title page contents