版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于深度学习的花生病害识别系统设计案例分析目录TOC\o"1-3"\h\u6316基于深度学习的花生病害识别系统设计案例分析 17442第1章系统硬件方案及电路设计 2318961.1总体硬件方案设计 266071.2处理器及其电路设计 2186881.2.1处理器选型 2144301.2.2处理器主要性能指标 4325491.3电源模块设计 423291.4图像采集模块设计 5147401.5显示电路设计 616782第2章系统软件设计 841062.1软件总体设计 864742.2迁移学习模型的建立及训练 10265262.2.1数据集的建立以及标签标定 1096902.2.2数据集加载及预处理程序 11310262.2.3迁移学习模型构建 13307082.2.4模型编译及训练验证 14267472.3模型微调 1528032.1.1解冻卷积层及二次训练 15225502.1.2训练数据可视化程序 17248282.1.3模型验证及轻量化模型转化 1729552.1.4部署文件验证程序 18147312.4模型部署及下位机软件程序 19282082.2.1模型环境搭建 19320642.2.2模型部署 19200342.5树莓派终端程序设计 2043762.5.1界面程序 20219392.6图像获取程序 20第1章系统硬件方案及电路设计1.1总体硬件方案设计针对本系统的设计目的以及实际应用场合,所设计的花生病害识别装置使用场合大多在田间地头,在野外无法提供插排式电源供电,因此要考虑到装置的能耗等一系列问题。基于树莓派的花生叶部病害识别装置硬件主要包括:电源模块,显示模块、桌面处理器(树莓派)、摄像头模块。系统硬件结构图3-1所示。图3-1系统硬件结构示意图1.2处理器及其电路设计1.2.1处理器选型系统的响应速度与处理器的运算能力有直接关系,在进行深度数据运算时,处理器的运算能力更是成为制约仪器仪表处理速度的关键性指标。因此,必须要在满足仪器处理能力的基础上留有一定的富裕度,以备处理复杂事务时应急使用。本文中设计需要运用高性能的处理器来进行深度运算和图像处理,这对处理器的运算能力提出了较高要求。方案一:采用PC机,桌面级PC机拥有超强的数字运算能力和图形处理能力,以ASUSGL552VW型笔记本电脑为例,处理器Intelcorei56300HQ,处理器频率2.30GHz,内存8GB,NVIDIAGTX960M2GB显卡,能够应付相当一部分的数据运算和图形处理的任务要求,但的确存在着携带不便、不防尘的缺点,无法在田地间进行现场作业,维护费用也相当高昂,不适宜于大面积普遍推广使用,具有相当大使用弊端。方案二:采用STM32H743单片机作为主控制器。作为STM32家族的领头羊,H7系列单片机是意法半导体公司推向市场的首款成熟双核微型控制器,其在采用了ArmCortex-M系列内核中性能最为强悍的Cortex-M7内核的基础上的增加一颗Cortex-M4内核,双核频率分别达到了480MHz和240MHz,可实现双核分时独立任务处理,可在其核心部署轻量化的神经网络架构如keras等来进行深度学习的延伸,性能强悍的H7在某些方面甚至可以取代一些低端Cortex-R处理器。然而虽然H7微控制器具有便携高抗干扰的特点,运算速度也有了较大提升,但其在图形处理方面仍有欠缺,不能很好的满足本设计在快速性方面的要求,核心板如图3-2所示。图3-2STM32H743核心板方案三:采用卡片式电脑--RaspberryPi。由英国剑桥大学正式发售,外形只有信用卡大小,是一款以ARM为核心的微型电脑主板,具有丰富的USB和网卡接口,具备了PC机的基本功能。最新推出的树莓派4B,其CPU升级为1.5GHz,与桌面级处理器几乎相差无几,具备高强度的数据运算处理能力和图形运算处理能力,几乎可以与桌面级处理器相媲美,具备十分强大的应用处理能力。通过三种方案的比较,最后根据设计任务和程序负载要求,最后敲定控制器选型方案,选择基于ARM内核的RaspberryPi4B。相较于其他两种控制器选型方案,树莓派可以通过C++或Python语言进行开发,更具有灵活性和操作性。在考虑到系统需要运行深度学习神经网络时,基于Python的开源库可以提供更加方便的开发方案,因此选择树莓派作为本次设计的控制器为最佳选型方案。RaspberryPi4B实物如图3-3所示。图3-2树莓派实物图1.2.2处理器主要性能指标距首款树莓派发布已经有了近十年的时间,Raspberry至今已经发布了多款市售产品,通过与上代机型的对比,最终选择了4B作为花生病虫害识别装置的控制器。由表可知,RaspberryPi4B在引脚数量和其他外设等方面能够很好的满足本设计的需求。RsapberryPi4B部分规格如下表所示。表3-1RaspberryPi4B规格明细表配置性能指标处理器64位1.5GHz运行内存4GB无线WiFi2.4G/5GHz双频GPIO40输入功率5V3A工作环境温度0-50℃1.3电源模块设计电源是整个装置能量来源,电源的稳定与否决定了装置的工作稳定性和使用寿限。因此电源电路的稳定与否是整个仪器装置能够正常工作的先决条件。方案一:选用可重复式充电蓄电池模组在作为装置的能量来源,利用电源转接板承载蓄电池,由蓄电池模组向树莓派供电,并由树莓派引脚向显示屏幕供电,而摄像头模组电源由树莓派板载CSI接口供应,由此构成整个装置的电源电路。方案二:由电源变压器供电,电源变压器接入电网,通过内部降压实现5V/2A输出,将输入高电压转换成USB式供电输出,再将USB供电口转接成Type-C向树莓派提供电源,提供装置的主体电源动力,摄像头模组通过树莓派板载CSI接口供电,LCD屏幕由树莓派板载引脚供应。采取这种电源供应方式,可获得很稳定的电源输入,但不能满足便携式的要求,在实际生产环境中无法随身携带电源插排等器件,不能适应移动性工作。方案三:搭建电源降压稳压电路。采用变压器结合三端稳压器LM7805的方式设计电源供给电路,将变压器输入的高电压转换为低电压,再经过三端稳压器实现整流,实现将220V的交流电转换成5V直流输出为装置供电,采取这种方式风电时装置电源电路较为复杂,且输出电源中会夹杂杂波,致使树莓派供电不稳,造成装置死机等故障影响正常工作。经过对比三种设计方案,分析其设计应用成本,综合考虑选用方案一,即利用蓄电池模组作为装置的能量来源,在保证树莓派输出电压的稳定流畅的基础上,避免由于电源的问题而影响装置的正常工作,电源模块如图3-3所示。图3-3电源模块实物图1.4图像采集模块设计在本装置中需要对图像进行分析处理,故所获取图像的质量将直接影响装置的识别效率,因此图像电路的好坏至关重要。方案一;采用USB接口的高清摄像头。USB摄像头自身集成了USB接口,可以很方便的安装于树莓派的USB接口,无需驱动即可对其进行控制和其他操作,较为方便。方案二:采用CSI接口的广角摄像头。由于树莓派自带CSI接口,且CSI接口线较为细薄,连接牢固,无需其他连接线,几乎无重量,在保证照片质量的同时不会增加使用者的手部承重负担。方案三:采用网络摄像头。借助于网络连接,在树莓派上输入指定的IP地址,在网页端查看相机画面,这种方式需要随时根据接入网络的类型,动态修改网络IP,操作复杂,无法简化操作流程,使用较为不便。综合考虑,选取CSI接口的摄像模组更适应于便携式装置的设计要求,更能够适应于复杂的农业生产环境条件,摄像头接口电路如图3-4所示。图3-4CSI接口的电路图1.5显示电路设计作为一款仪器,相应的显示交互界面是必不可少的。良好的交互界面设计是使用者愿意接受仪器的前提条件,在进行仪器设计时,我们选取了一下几种方案设计:方案一:选取1.5寸MHS树莓派电阻触摸屏,该屏幕能够在驱动软件的驱动下,以较高质量显示图像信息,在接入摄像头等外部流媒体硬件时,视频帧率可达到50fps,运转流畅,且能用手指完成触摸输入,方便进行现场操作。方案二:采用树莓派7寸HDMI接口屏幕,在HDMI信号的驱动下实现图像的高分辨率显示,也可用于PC机的外接扩展,适合于所有型号树莓派的外接扩展。方案三:采用网络远程桌面的方式,在远程设备上访问树莓派,查看显示内容,该方法需要借助于网络通信,但在实际生产环境中。网络问题是一大限制,实施起来就有一定的难度。综合考虑装置的设计成本以及后期维护的方便性,在装置设计时选用了1.5寸LCD屏幕作为装饰的交互输出,1.5寸屏幕尺寸大小适中,能够在满足便携性的基础上显示植株图片的细节特征,成本低易于维护,因此选定方案二。屏幕的连接电路图如图3-5所示图3-5屏幕接口电路
第2章系统软件设计硬件电路是装置的骨架,那么程序设计部分可以说是装置的筋络与血脉,作为一款深度学习终端部署装置,程序设计是本文设计的核心部分。优良的程序设计可以大大缩短运行时间,可提高仪器的运行效率。2.1软件总体设计本文中设计的花生病虫害识别装置,在软件设计上主要分为了两大部分,其一为模型迁移和构建部分,程序编辑器使用TensorFlow官方网站实验室Colaboratory的Jupyter笔记本,可在网页上执行TensorFlow代码。另一部分是在树莓派端进行应用开发,开发相应的APP实现图像采集、处理、识别、输出推荐指导用药的一系列功能,此部分主要分为图像采集、图像识别、人机交互三小部分构成。模型训练流程图如下图4-1所示。树莓派软件流程图如图4-2所示。主要操作流程:当按下电源键后,装置启动,进入系统桌面,在桌面选择桌面快捷方式运行花生病虫害识别装置的软件程序。进入软件后,在桌面主面板上有按键,当按下拍照按钮后会弹出相机实时画面框,按下快门后,会自动拍下当前画面,并存放于指定的路径文件下,拍完照后,自动回到软件主界面,后台进行图像处理、模型匹配、结果处理,输出花生疾病诊断类型和推荐用药,并给出准确度以备用户自行参考,若模型判断失败,超出模型匹配范围,系统会自动给出错误提醒,请求用户再次输入信息。图4-1模型训练流程图图4-2树莓派软件流程图2.2迁移学习模型的建立及训练2.2.1数据集的建立以及标签标定数据集是训练神经网络的关键数据,神经网络的准确度一定程度上依赖于数据集的大小,通常情况下一个新型神经网络的训练需要上万张图片数据来进行多次训练,才能拥有一定的准确度和均衡的权重。但在实际生产过程中可能短时间内无法收集上万张样本照片,因此必须要通过图像增强器来进行图片的数据增强,以此来扩充数据集,保证训练的准确性。本文中用于训练模型的原始图片数据大部分来源于烟台某农业植保站所拍摄的花生植株图片,剩余部分来源于百度图库以及Google图库。图片数据保存在本地,在本地对所有图片数据按照疾病代码+序号的命名方式进行重命名。并分别按照疾病种类单独文件夹存放。数据集本地存放文件结构示例如如4-3所示。图4-3数据集存放结构示例模型训练时使用TensorFlow框架,直接编辑脚本文件。平台可以通过直接上传文件夹的方式来实现标签的自动生成,无需人工进行标注,很大程度上节省人工标注数据集的时间成本。在树莓派端要人工导入.txt文档格式的标签文件。树莓派文件结构示例如图4-4所示。图4-4树莓派端标签文件示例2.2.2数据集加载及预处理程序使用TensorFlow框架进行训练时,必修先将数据集上传至工程路径文件夹内,本文中上传的是.rar压缩文件,可以大幅缩短上传时间,且使用在线解压命令,更为方便。数据集解压程序代码:drive.mount('/content/drive')#同步Google云盘!unrarx/content/…/Data/sample.rar/content/…/Picture#解压数据集解压完数据集后,即可在指定文件路径下看到解压出来的数据集文件夹。预处理是针对小数据集数据不够充分时进行的数据增强等措施,是扩大数据集容量的一种有效方法。数据集在本地加入高斯模糊、镜像等初步处理后,由图像增强器对图像进行指定偏移、加入双线性插值算法等操作来实现数据增强。数据增强部分程序流程图如图4-5所示。图4-5预处理程序流程图程序输出如图4-6所示:图4-6图像增强及数据集划分原始数据集有1435张图片,分为健康(1240)、黑斑病(1192)、褐斑病(940)、网斑病(1224)、花叶病(960)五大类,在增强之后数据集扩大到5196张图片,基本实现对小数据集的扩充。由程序输出可见,数据集被划分成4:1的比例,训练集占大部分,有1/5的数据集作为验证集在训练过程中起验证作用。2.2.3迁移学习模型构建由于自建花生疾病数据集存在样本数目过少的弊端,无法准确训练一个全新的深度神经网络,因此,必须采取其他方法来弥补由于数据集太小而导致的训练过拟合问题。近年来随着深度学习的推广和普及,迁移学习概念也被提出和应用。在迁移大型赵凯琳,靳小龙,王元卓.小样本学习研究综述[J].软件学报,2021,32(02):349-369.神经网络模型的同时,利用自建数据集来进行权重更新和分类器的重训练,在原始模型的基础上进行权重微调,使经过超大数据集训练的神经网络能够适应自己的项目需求。赵凯琳,靳小龙,王元卓.小样本学习研究综述[J].软件学报,2021,32(02):349-369.1)加载预训练模型由于部署端的内存要求,模型尺寸不能太大,且模型必须可以通过转换器生成嵌入式设备的可部署文件。故本文在设计时采用了轻量化的神经网络模型MobileNetV2,其大小仅有14MB,能够满足绝大多数嵌入式系统设备的部署要求。模型迁移关键代码如下:base_model=tf.keras.applications.MobileNetV2(input_shape=IMG_SHAPE,#输入尺寸include_top=False,#False不包含全链接层weights='imagenet')#使用预训练模型的原始权重2)序贯型网络结构搭建通过层堆叠的方式进行网络构建,以去掉全连接层的MobileNetV2模型为新模型的基础模型,在其的基础上又添加单层全局平均池化、双层Dropout和单层全连接层。以原始MobileNetV2模型作为特征提取器提取图像特征。MobileNetV2的最后一层是BN层(BN:BatchNorrmalization),该层的向量输出尺寸为(32,5,5,1280),图像特征由提取器输出后由全局平均池化层来进行全局池化,输出尺寸(32,1280),缩减分类器结构复杂度。模型最后则是全连接层,将卷积层所训练得到的“特征”映射到样本空间中。通俗来讲则是将输入图片,将整个图片特征向量浓缩成一个数字,从而对应标签中的数据标签,达到判断分类的作用。模型构建部分关键代码:model=tf.keras.Sequential([base_model,#引入MoblieNetV2tf.keras.layers.GlobalAveragePooling2D(),#添加全局平均池化tf.keras.layers.Dropout(0.3)])#防止过拟合tf.keras.layers.Dense(5,activation='softmax'),#全连接层整个序贯型网络结构含有大量的训练参数,简单卷积神经网络如下图4-6所示。构建的花生病虫害识别模型结构示意图如图4-7所示。图4-6简单卷积网络示意图图4-7模型结构示意图2.2.4模型编译及训练验证模型编译主要起到保存新定义模型、启动网络优化器以及启动交叉熵损失计算函数的作用。模型编译函数:pile(optimizer=tf.keras.optimizers.Adam(lr=base_learning_rate),#引用自适应矩阵估计算法loss=tf.keras.losses.CategoricalCrossentropy(#交叉熵损失函数,#计算模型预测的值与真实值之间的差距from_logits=True,#softmax转换函数label_smoothing=0.1),#标签平滑率metrics=['accuracy'])#定义参考指标模型训练函数:hist=model.fit(train_generator,#训练数据集epochs=10,steps_per_epoch=steps_per_epoch,#训练次数validation_data=valid_generator,#validation-验证比例validation_steps=validation_steps)通过fit()函数进行模型的自动训练,根据指定的epochs参数来进行训练轮数,从而提升模型的准确度。但训练次数过多会严重拉长训练时间,因此训练层数应在一定的合适范围之内。程序输出每轮的训练准确度以及验证准确度。2.3模型微调以上是在原有MobileNetV2模型卷积层的基础上进行了分类器的重训练,是仅针对后续添加的全局平均池化层和全连接层的训练,使之能够适应本次的5分类任务。模型的卷积层加载了原由ImageNet训练得来的权重,这种权重并不能完全切合新的分类任务,因此要在全新训练全连接层的基础上加以模型权重微调,以适应新的分类任务。2.1.1解冻卷积层及二次训练关键代码:base_model.trainable=True#解冻所有卷积层print("Numberoflayersinthebasemodel:",len(base_model.layers))#总层数fine_tune_at=-4#倒数4层是添加的分类器,第二轮冻住forlayersinbase_model.layers[:fine_tune_at]:tf.keras.layers.trainable=False#倒数4层被冻住,其余全部解冻二次训练关键代码:pile(optimizer=tf.keras.optimizers.Adam(lr=base_learning_rate/10),loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True,label_smoothing=0.1),#计算标签和预测之间的交叉熵metrics=['accuracy'])model.summary()#查看网络结构解冻后的可训练网络参数如表4-1所示。表4-1解冻后参数表LayerOutshapeParamMobilenetv2_1.00_160(None,5,5,1280)2257984Gloable_average_pooling2d(None,1280)0Dropout2(None,1280)0Dense1(None,5)6405Dropout3(None,5)0Totalparams2264389Trainableparams2230277Non-trainableparams34112由图中的参数可见Trainable_params=2230277,说明基础模型MobileNetV2的各层参数已经全部解冻,可以对其进行微调和修改。第二次训练的训练的关键代码:history_fine=model.fit(train_generator,epochs=total_epochs,#总共需要训练的次数initial_epoch=hist.epoch[-1],#初始化时已经训练过多少次validation_steps=validation_steps/2,validation_data=valid_generator)#BATCH_SIZE)开启第二次训练。2.1.2训练数据可视化程序在训练过程中自动记录每次训练时的训练集准确度、loss以及验证集的准确度和loss,因此在两轮训练结束后,可以利用可视化程序来绘制在训练过程中准确度和丢失度的变化曲线,能够更加直观的观察训练数据。在编辑本编辑器的输出终端内绘出精确度折线图及loss折线图。2.1.3模型验证及轻量化模型转化为了确保训练的准确性,必须要对训练后的模型进行验证。在设定验证方案时,首选在网页端进行样本抽检测试,另外可以部署到终端后进行验证,为节省开发时间,在此次方案选定时选择了网页端验证。在事先划分好的验证集中抽取一张植株样张,使用训练后的模型进行识别,输出结果,并与样张所对应的标签进行比对,判断是否正确。验证程序如下:loss,accuracy=model.evaluate(train_generator)#评估丢失度和准确率print('Testaccuracy:',accuracy)#参数输出在TensorFlow编辑器CoLab中训练得到的模型文件尺寸较大,而且解释环境复杂,不能直接用于移动端部署,因此必须要对TensorFlow框架下生成的模型文件进行优化和量化转换,使其能够直接部署到树莓派等移动终端中。模型转换图如图4-10所示:图4-10模型转换过程图程序执行完毕,会站在指定路径的文件夹内生成保存的.tflite文件,将.tflie文件下载至本地即可直接部署到树莓派等终端设备之上。2.1.4部署文件验证程序加载模型:interpreter=tf.lite.Interpreter(model_path=model_path_local)deflite_model(images):#定义函数interpreter.allocate_tensors()interpreter.set_tensor(interpreter.get_input_det
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年代理合同条款调整商洽函(6篇)
- 石油化工行业生产安全与工艺流程优化绩效考评表
- T/HBSL 02-2023生产建设项目水土保持设施验收指南
- 电商用户增长方法全流程指南
- 青岛公路项目可行性研究报告论文
- 橡胶混炼工艺优化分析方案
- 2026自主驾驶传感器行业市场识别分析及智能交通规划分析研究报告
- 2026自动化设备产业市场现状供需调研及投资评估规划分析报告
- 2026醉酒检测设备研发技术跟踪及交通执法与公共安全应用建议方案
- 2026周密撰写中国市场糖精生产技术路线图与替代品开发演进分析
- 2026年四川省高考思想政治试卷(含答案及解析)
- 综合管理竞聘测试题及答案
- 混凝土结构设计原理中国建筑工业出版社
- 化工企业常压储罐区检维修安全作业规范
- (正式版)T∕CCASC 0057.2-2025 离子膜法烧碱生产安全操作规程 第2部分:电解
- 基于生成式AI的初中生物互动教学模式创新与实践教学研究课题报告
- 煤矿职业病危害培训课件
- 城市污水处理厂日常运行管理规范
- 标准航海用语
- 幼儿园安全《小井盖大危险》课件
- FZ/T 81013-2016宠物狗服装
评论
0/150
提交评论