《嵌入式人工智能技术应用》课件 5.1-稻麦成熟度监测系统模型训练_第1页
《嵌入式人工智能技术应用》课件 5.1-稻麦成熟度监测系统模型训练_第2页
《嵌入式人工智能技术应用》课件 5.1-稻麦成熟度监测系统模型训练_第3页
《嵌入式人工智能技术应用》课件 5.1-稻麦成熟度监测系统模型训练_第4页
《嵌入式人工智能技术应用》课件 5.1-稻麦成熟度监测系统模型训练_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目五基于计算机视觉技术实现稻麦监测系统嵌入式人工智能技术应用项目引导案例

农业既是人类所从事的最古老行业,也是人类文明的基础。工业革命之后,由于机械在农业领域的应用,使得收获的粮食大大增加。但是,较高的生产成本、农业生态环境遭到破坏、农作物病虫害等问题,仍然是制约农业发展的瓶颈。要解决以上问题,根本出路在于依靠科技发展,人工智能就是解决的方法之一。思考一下,大家见过哪些智慧农业?项目引导案例稻麦成熟度监测系统模型训练任务一职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一稻麦成熟度监测系统模型训练了解智慧农业应用发展;了解水稻生长周期;了解深度学习。能够根据需求完成模型搭建;能够完成图像数据集的预处理及数据增强;能够配置模型微调训练所需参数;能使根据需求完成模型的微调训练;能够实现训练结果的可视化。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一稻麦成熟度监测系统模型训练

本实验将实现基于预训练的稻麦监测模型用新数据对模型进行微调训练,训练出新的检测模型用于任务二的系统部署。任务描述任务要求能使用Sequential模块检定义序贯模型;能使用add方法构建神经网络层;能使用Adam优化算法函数创建优化器;能使用compile方法配置训练方法;能使用ModelCheckpoint模块设置函数保存方式;能使用fit_generator方法训练模型;能使用pyplot模块对训练结果进行可视化展示。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一稻麦成熟度监测系统模型训练任务分析模型训练可能会涉及到哪些步骤?根据自己的了解说说人工智能在农业上有哪些应用?任务分析与计划03任务计划表项目名称基于计算机视觉技术实现稻麦监测系统任务名称稻麦成熟度监测系统模型训练计划方式自主设计计划要求请用5个计划步骤来完整描述出如何完成本次任务序号任务计划1

2

3

4

5

通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一稻麦成熟度监测系统模型训练深度学习和卷积神经网络204知识储备智慧农业133数据增强智慧农业04含有人工智能技术的农业,我们称为智慧农业。它是指现代科学技术与农业种植相结合,从而实现无人化、自动化、智能化管理。智慧农业是人工智能、物联网技术在现代农业领域的应用,主要具有监控功能系统、监测功能系统、实时图像与视频监控功能等等。人工智能在农业中的作用041、种子检测

种子是农业生产中最重要的生产资料之一,种子质量直接关系到作物产量。种子的纯度和安全性检测,是提升农产品质量的重要手段。人工智能在农业中的作用042、智能种植

在传统农业中,需要耗费大量的人力、物力。搭载人工智能技术的机器人将有助于缓解农民的负担,大大降低土地对劳动力的需求量。人工智能在农业中的作用043、作物监控

人工智能技术可在农作物检测中提供强大的技术的支持,通过机器人视觉技术,模拟人类的视觉功能,判断农作物的生长状态、病虫害监测以及杂草辨别。人工智能在农业中的作用044、土壤灌溉

人工神经网络具备机器学习能力,能够根据检测得到的气候指数和当地的水文气象观测数据,选择最佳灌溉规划策略。04水稻生长周期从水稻种子发芽至幼苗拔节期,大约需要90天。这个时期又分4个时期:a.幼苗期,是从水稻种子萌芽到移栽插秧前,一共大约需要35天时间。b.插秧期,是从开始插秧到定植开始生长的这段时间,大约需要7-10天。c.分蘖期,是从插秧开始生长拔节前这段时间,大约需要30天。d.拔节期是从开始拔节到孕穗前这段时间,大约需要15天。(1)营养生长阶段水稻的一生要经历营养生长和生殖生长两个时期,水稻生长期最短三到四个月。04水稻生长周期从孕穗到成熟这段时间称为生殖生长阶段,大约需要经过70天时间,共分四个时期:a.孕穗期。是从开始孕穗到抽穗始时,这段时间大约15天。b.抽穗期。从开始破口抽穗起到开始破壳扬花止,大约需要15天。c.扬花授粉期。从开始扬花到开始籽粒灌浆时止,大约15-20天。d.灌浆期。从开始灌浆到成熟收获止,大约需要20天时间。(2)生殖生长阶段204知识储备133深度学习和卷积神经网络智慧农业数据增强

04

深度学习(DL,DeepLearning)是机器学习(ML,MachineLearning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI,ArtificialIntelligence)。

深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。

深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

深度学习深度学习的概念04深度学习的训练过程

(1)自下上升的非监督学习

从底层开始,一层一层地往顶层训练。采用无标定数据分层训练各层参数,这一步可以看作是一个无监督训练过程,这也是和传统神经网络区别最大的部分,可以看作是特征学习过程。(2)自顶向下的监督学习

通过带标签的数据去训练,误差自顶向下传输,对网络进行微调。基于第一步得到的各层参数进一步优调整个多层模型的参数,这一步是一个有监督训练过程。卷积神经网络04

卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetworks),是深度学习(deeplearning)的代表算法之一。卷积神经网络结构04(1)输入层卷积神经网络的输入层可以处理多维数据。

(2)隐含层卷积神经网络的隐含层包含卷积层、池化层和全连接层3类常见构筑,在一些更为现代的算法中可能有Inception模块、残差块(residualblock)等复杂构筑。(3)输出层卷积神经网络中输出层的上游通常是全连接层,因此其结构和工作原理与传统前馈神经网络中的输出层相同。03010204①重用分类器权重(对最后的分类层进行的处理)源数据可能也有目标数据中的部分标号可以使用预训练好的模型分类器中对应标号对应的向量作初始化值②固定一些层神经网络通常学习有层次的特征表示(底层描述的特征更加通用,而高层的特征和数据集相关性更强)可以固定相对底部的层,不参与参数更新(应用了更强的正则化)微调训练常见的微调技术04用训练集的数据来训练模型,然后用测试集的数据来测试模型。应对新场景的误差率称为泛化误差(或者样例外误差),通过测试集来评估你的模型,就可以得到对这个误差的评估。这个估值可以告诉你,你的模型在处理新场景时的能力如何。(通常使用80%的数据进行训练,保留另外的20%来做测试)训练集:训练集的数据来训练模型测试集:用测试集的数据来测试模型,通过测试集来评估你的模型,就可以得到对这个误差的评估训练集和测试集04损失函数损失函数

损失函数用来评价模型的预测值和真实值不一样的程度,给模型的优化指引方向。损失函数选择的越好,通常模型的性能越好。不同的模型用的损失函数一般也不一样。优化神经网络的基准,就是缩小损失函数的输出值。04交叉熵损失(CrossEntropy):均方差损失与评价绝对误差损失

均方差(MSE)损失是机器学习、深度学习回归任务中最常用的一种损失函数,也称为L2Loss。

平均绝对误差(MAE)是另一类常用的损失函数,也称为L1Loss。MSE比MAE能够更快收敛,MAE对异常点更加鲁棒。MSE与MAE区别损失函数04

合页损失函数是一种将MSE与MAE结合起来,取两者优点的损失函数。从图中可以看到:1)0-1损失:当样本被正确分类时,损失为0;当样本被错误分类时,损失为1。2)感知机损失函数:当样本被正确分类时,损失为0;当样本被错误分类时,损失为-y(wx+b)。3)合页损失函数:当样本被正确分类且函数间隔大于1时,合页损失才是0,否则损失是1-y(wx+b)。也就是说,合页损失函数对学习有更高的要求。缺点:合页损失函数是对错误越大的样本施以更严重的惩罚。可这样会导致损失函数对噪音敏感。损失函数04

softmax函数,又称归一化指数函数。

我们知道概率有两个性质:预测的概率为非负数;各种预测结果概率之和等于1。softmax就是将在负无穷到正无穷上的预测结果按照这两步转换为概率的。softmax第一步就是将模型的预测结果转化到指数函数上。为了确保各个预测结果的概率之和等于1,只需要将转换后的结果进行归一化处理。损失函数04

交叉熵损失函数,也称为对数损失或者logistic损失。交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。

损失函数204知识储备133深度学习和卷积神经网络智慧农业数据增强04数据增强

数据增强也叫数据扩增,意思是在不实质性的增加数据的情况下,让有限的数据产生等价于更多数据的价值。

比如右图,第1列是原图,后面3列是对第1列作一些随机的裁剪、旋转操作得来。04数据增强1.有监督的数据增强

有监督数据增强,即采用预设的数据变换规则,在已有数据的基础上进行数据的扩增,包含单样本数据增强和多样本数据增强,其中单样本又包括几何操作类,颜色变换类。数据增强可以分为:有监督的数据增强和无监督的数据增强方法04数据增强2.无监督的数据增强无监督的数据增强方法包括两类:①通过模型学习数据的分布,随机生成与训练数据集分布一致的图片,代表方法GAN。②通过模型,学习出适合当前任务的数据增强方法,代表方法AutoAugment。ImageDataGenerator将图片转化成数组。转换前元素类型是整型,转换后元素类型是浮点型(和keras等机器学习框架相适应的图像类型)load_imgImageDataGenerator04ImageDataGenerator:i.图片生成器,负责生成一个批次一个批次的图片,以生成器的形式给模型训练;ii.对每一个批次的训练图片,适时地进行数据增强处理。加载了一个图片文件,没有形成numpy数组img_to_array04fromPILimportImageimg_data=np.random.random(size=(100,100,3))img=tf.keras.preprocessing.image.array_to_img(img_data)array=tf.keras.preprocessing.image.img_to_array(img)img_to_array功能img:输入PILImage实例。data_format:图像数据格式,可选“channels_first”或“channels_last”。默认为没有一个,在这种情况下为全局设置tf.keras.backend.image_data_format()使用(除非你改变它,它默认为“channels_last”)。dtype:要使用的d类型。默认为没有一个,在这种情况下为全局设置tf.keras.backend.floatx()使用(除非你改变它,它的默认值为“float32”)用法:04image=tf.keras.preprocessing.image.load_img(image_path)input_arr=tf.keras.preprocessing.image.img_to_array(image)input_arr=np.array([input_arr])#Convertsingleimagetoabatch.predictions=model.predict(input_arr)load_img功能path:镜像文件路径。grayscale:不赞成使用color_mode=“灰度”.color_mode:"grayscale","rgb","rgba"中的一个。默认值:“rgb”。所需的图像格式。target_size:要么没有一个(默认为原始大小)或整型元组(img_heightimg_width).interpolation:如果目标大小与加载的图像大小不同,用于对图像重新采样的插值方法。支持的方法有“nearest”、“bilinear”和“bicubic”。用法:职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务一稻麦成熟度监测系统模型训练05任务实施训练环境配置2了解稻麦监测系统1稻麦模型训练实验3模型微调训练4了解稻麦监测系统05稻麦监测系统是人工智能应用于农业生产的一个典型案例,能够在较低成本,轻量化的系统下做到农田稻麦状态的精确识别与环境参数的采集和监测。该实验以训练深度学习模型来对稻麦生长阶段进行识别为案例,通过实现环境配置、模型搭建、训练、测试到边缘端部署,深入体验深度学习的应用开发全流程。此次实验的数据集由稻麦生长的三个不同阶段的图片集所组成,分别为稻麦的生长期,孕穗期和成熟期。分别对应标签seeding,green,golden。深度学习应用从模型开发到应用部署的全流程,其中包括:(1)数据采集与数据处理:数据采集、开源数据集的使用、数据筛选与处理;(2)模型搭建:模型设计,使用TensorFlow框架实现神经网络模型构建;(3)模型训练:超参数调整,使用TensorFlow框架实现训练图像分类模型;(4)模型评估:模型训练结果数据可视化,模型泛化能力评估,以及模型优化策略;(6)边缘端应用设计与开发:ui设计与实施,模型推理与调用,应用功能的实现;(7)边缘端部署:环境调试,边缘端开发板的实战部署。05任务实施训练环境配置2了解稻麦监测系统1稻麦模型训练实验3模型微调训练4训练环境配置05!pipinstall-rrequirements.txt-i/simple(边缘网关环境已安装,跳过)pip是python包管理工具,使用pip能够快速搭建所需要的实验环境。-i/simple是国内下载源,安装其他python包也可以使用该下载源。05任务实施训练环境配置2了解稻麦监测系统1稻麦模型训练实验3模型微调训练442定义优化器1模型结构搭建与查看3数据集预处理训练数据集设置5设置模型保存稻麦模型训练实验05稻麦模型训练实验稻麦模型训练实验051.模型结构搭建与查看使用Sequential()方法可以自定义网络结构,通过使用.add()添加自定义网络层。Conv2D(filters,kernel_size,padding='valid',activation=None):二维卷积层,提取局部特征。参数说明:当使用该层作为模型第一层时,需要提供input_shape参数。在keras中,数据是以张量的形式表示的,张量的形状称之为shape,表示从最外层向量逐步到达最底层向量的降维解包过程。例如:一个三阶的张量[[[1],[2],[3]],[[4],[5],[6]]]的shape是(2,3,1);filters:整数,卷积输出滤波器的数量;kernel_size:指定卷积窗口的高度和宽度;padding:有valid或same。(注:卷积会导致输出图像越来越小,图像边界信息丢失,若想保持卷积后的图像大小不变,需要设置padding参数为same);activation:如relu、sigmoid等。使用激活函数。如果不特别指定,将不会使用任何的激活函数。MaxPool2D(pool_size=(2,2),strides=None):可以加快计算速度和防止过拟合的作用。参数说明:pool_size:指定池窗口的大小;strides:指定池操作的步幅。keras.layers.Permute(dims):更改维度的顺序,维度索引从1开始。参数说明:dims:整数元组,是置换模式,不包含样本维度,索引从1开始,例如(2,1)即置换输入的第1和第2个维度。keras.layers.Reshape(target_shape):实现不同维度任意层之间的对接。参数说明:target_shape:目标shape,为整数的tuple,不包含样本数目的维度(batch大小)。Dense(units,activation):全连接层。参数说明:units:该层的神经单元结点数;activation:激活函数。Dropout(keep_prob):丢弃层。参数说明:keep_prob:保留一个神经元为激活状态的概率。在测试的时候keep_prob=1.0,即不进行dropout。稻麦模型训练实验05model=Sequential()#第一个卷积部分model.add(Conv2D(input_shape=(224,224,3),filters=32,kernel_size=3,padding='same',activation='relu'))model.add(Conv2D(filters=32,kernel_size=3,padding='same',activation='relu'))model.add(MaxPool2D(pool_size=2,strides=2))#第二个卷积部分model.add(Conv2D(filters=64,kernel_size=3,padding='same',activation='relu'))model.add(Conv2D(filters=64,kernel_size=3,padding='same',activation='relu'))model.add(MaxPool2D(pool_size=2,strides=2))#第三个卷积部分model.add(Conv2D(filters=128,kernel_size=3,padding='same',activation='relu'))model.add(Conv2D(filters=128,kernel_size=3,padding='same',activation='relu'))model.add(MaxPool2D(pool_size=2,strides=2))#替换平坦层a,b,c,d=model.output_shapea=b*c*dmodel.add(keras.layers.Permute([1,2,3]))#IndicateNHWCdatalayoutmodel.add(keras.layers.Reshape((a,)))model.add(Dense(64,activation='relu'))model.add(Dropout(0.5))model.add(Dense(3,activation='softmax'))1.模型结构搭建与查看使用model.summary()可以快速打印模型结构。model.summary()稻麦模型训练实验05adam=Adam(learning_rate=1e-5)pile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy'])2.定义优化器Adam(learning_rate):优化算法。参数说明:learning_rate:学习率。将输出误差反向传播给网络参数,以此来拟合样本的输出。本质上是最优化的一个过程,逐步趋向于最优解。pile(optimizer,loss,metrics):用于在配置训练方法时,告知训练时用的优化器、损失函数和准确率评测标准。参数说明:optimizer:优化器;loss:损失函数;多分类损失函数有:二分类交叉熵损失函数binary_crossentropy、多类别交叉熵损失函数categorical_crossentropy;metrics:评价指标;提供了六种准确率accuracy、二分类准确率binary_accuracy、分类准确率categorical_accuracy、稀疏分类准确率;sparse_categorical_accuracy、多分类TopK准确率top_k_categorical_accuracy和稀疏多分类TopK准确率parse_top_k_categorical_accuracy。稻麦模型训练实验053.数据集预处理ImageDataGenerator(rotation_range=0.0,width_shift_range=0.0,height_shift_range=0.0,shear_range=0.0,zoom_range=0.0,fill_mode='nearest',horizontal_flip=False,rescale=None):keras.preprocessing.image模块中的图片生成器,同时也可以在batch中对数据进行增强,扩充数据集大小,增强模型的泛化能力。比如进行旋转,变形,归一化等等。参数说明:rotation_range:旋转范围;width_shift_range:水平平移范围;height_shift_range:垂直平移范围;rescale:系数值将在执行其他处理前乘到整个图像上,实现归一化;shear_range:float,透视变换的范围;zoom_range:缩放范围;horizontal_flip:水平反转;fill_mode:填充模式,constant、nearest(默认)、reflect、wrap。稻麦模型训练实验05train_datagen=ImageDataGenerator(rotation_range=40,width_shift_range=0.2,height_shift_range=0.2,rescale=1/255,shear_range=20,zoom_range=0.2,horizontal_flip=True,fill_mode='nearest')test_datagen=ImageDataGenerator(rescale=1/255)3.数据集预处理稻麦模型训练实验05batch_size=2train_generator=train_datagen.flow_from_directory(directory='./datasets/train',target_size=(224,224),batch_size=batch_size)test_generator=test_datagen.flow_from_directory(directory='./datasets/test',target_size=(224,224),batch_size=batch_size)4.训练数据集设置flow_from_directory(directory,target_size,batch_size):以文件夹路径为参数,生成经过数据提升/归一化后的数据,在一个无限循环中无限产生batch数据。参数解释directory:目标文件夹路径,对于每一个类,该文件夹都要包含一个子文件夹。子文件夹中任何JPG、PNG、BNP、PPM的图片都会被生成器使用。target_size:整数tuple,默认为(256,256)。图像将被resize成该尺寸。batch_size:batch数据的大小。稻麦模型训练实验05fromtensorflow.keras.callbacksimportModelCheckpoint#保存最好模型checkpoint=ModelCheckpoint(filepath='./models/val_accuracy={val_accuracy:.4f}.h5',monitor='val_accuracy',verbose=1,save_best_only=True,mode='auto')callback_lists=[checkpoint]5.设置模型保存ModelCheckpoint(filepath,monitor,verbose,save_best_only,mode):将在每个epoch后保存模型到指定路径中参数说明:filepath:模型保存的位置,可以只指定到文件夹,也可以指定到具体的文件名。monitor:需要监视的值,通常为:val_accuracy或val_loss或accuracy或loss。verbose:信息展示模式,0或1。为1表示输出epoch模型保存信息,默认为0表示不输出该信息。save_best_only:设为True或False,为True就是保存在验证集上性能最好的模型,如果用像val_accuracy={val_accuracy:.4f}.h5这样的格式化名,因为每个文件名字不同,就不会覆盖;mode:可以设为auto,min或max,在save_best_only=True时决定性能最佳模型的评判准则,例如,当监测值为val_accuracy时,模式应为max,当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。05任务实施训练环境配置2了解稻麦监测系统1稻麦模型训练实验3模型微调训练42进行模型微调训练1载入预训练模型3训练结果可视化模型微调训练05模型微调训练模型微调训练是指将新数据集加入预训练过的模型进行训练,并使参数适应新数据集的过程。模型微调适用场景:数据集和预训练模型的数据集相似,但数据量小;个人搭建或者使用的CNN模型正确率低;模型训练计算资源不足。模型微调训练05fromtensorflow.keras.modelsimportload_modelmodel=load_model('./models/pre_trained_model.h5')1.载入预训练模型load_model(filepath):载入预训练模型.参数说明:filepath:需要载入模型的路径。history=model.fit_generator(generator=train_generator,steps_per_epoch=round(len(train_generator)),epochs=3,validation_data=test_generator,validation_steps=len(test_generator),callbacks=callback_lists)2.进行模型微调训练fit_generator(self,generator,steps_per_epoch,epochs=1,verbose=1,callbacks=None,validation_data=None,validation_steps=None,class_weight=None,max_q_size=10,workers=1,pickle_safe=False,initial_epoch=0):利用Python的生成器,逐个生成数据的batch并进行训练。生成器与模型将并行执行以提高效率。参数说明:generator:生成器函数,所有的返回值都应该包含相同数目的样本。每个epoch以经过模型的样本数达到steps_per_epoch时,记一个epoch结束steps_per_epoch:整数,表示一个epoch中迭代的次数;当生成器返回steps_per_epoch次数据时计一个epoch结束,执行下一个epochepochs:整数,数据迭代的轮数validation_data:验证集数据validation_steps:当validation_data为生成器时,本参数指定验证集的生成器返回次数callbacks:在训练期间应用的回调函数。可以使用回调函数来查看训练模型的内在状态和统计。函数返回一个History对象。模型微调训练05plt.plot(history.history['accuracy'])#绘制训练精度曲线plt.plot(history.history['val_acc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论