人工智能边缘设备应用 (微课视频版) 课件 模块7:智能边缘设备基础应用_第1页
人工智能边缘设备应用 (微课视频版) 课件 模块7:智能边缘设备基础应用_第2页
人工智能边缘设备应用 (微课视频版) 课件 模块7:智能边缘设备基础应用_第3页
人工智能边缘设备应用 (微课视频版) 课件 模块7:智能边缘设备基础应用_第4页
人工智能边缘设备应用 (微课视频版) 课件 模块7:智能边缘设备基础应用_第5页
已阅读5页,还剩38页未读, 继续免费阅读

下载本文档

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

文档简介

模块7:智能边缘设备基础应用库的类别常用的人工智能模型库迁移学习算法PARTONEPARTTWOPARTTHREE库的类别人工智能边缘设备应用01在人工智能应用中,通常使用函数库避免复杂的底层代码程序的编写,使用模型库节省模型搭建和训练的工序。1库的类别函数库模型库函数库指的是由系统建立的具有一定功能的函数的集合,在库中存放函数的名称和对应的能实现某一功能的代码。函数库的最终目的是让用户调取使用,但是在调取过程中也需要遵守三个必要条件,否则会出现调用失败或者调用了之后功能实现不了的情况。1.1函数库函数的功能如果错误调用函数库的话,可能会导致函数之间功能出现冲突,最后导致各个函数都无法实现其功能。函数库里的函数及其参数的意义和类型如果传入函数的参数出现错误,会导致这个函数无法识别输入的参数,同样导致函数无法实现功能。调用函数后的返回值返回值决定接下来对函数的操作和衔接,传输的返回值如果出现错误的话,会导致功能实现不了。模型库通常指的是人工智能模型库,主要是将多个已经编写好的人工智能模型集中放在一个文件里并放上对应的名称和信息。除此之外,模型库也可以由用户自己根据需要去建立。人工智能模型库中存放的模型多种多样,包括可以解决目标检测、语音识别和动作识别等需求的人工智能模型。1.2模型库模型库目标检测模型动作识别模型语音识别模型图像分割模型……常用的人工智能模型库人工智能边缘设备应用02人工智能边缘设备的应用多种多样,但都离不开人工智能模型的帮助。由于人工智能边缘设备的计算资源和计算能力不尽相同,在部署模型时,需要从模型库中根据模型的大小、性能等参数选择合适的人工智能模型,开发所需要的功能,边缘设备才能实现智能化。接下来针对图像分类、目标检测、图像分割、文字识别和语音识别5项常见人工智能任务,介绍其中常用的模型库。2常用的人工智能模型库图像分类目标检测图像分割语音识别文字识别图像分类是人工智能边缘设备的一个重要用途,其功能的实现少不了模型库的帮助。常用的图像分类模型库有两个,分别是PaddleClas和TensorFlow-Slim。2.1图像分类常用模型库PaddleClas模型库是百度公司为工业界和学术界所准备的一个图像分类任务的工具集,目的是帮助开发者开发出更好的人工智能模型并且应用落地。目前PaddleClas支持23种系列分类网络结构以及对应的117个图像分类预训练模型。PaddleClas拥有4个优点,第一个是具有丰富的模型;第二个是能提供高阶的优化支持;第三个是支持特色拓展应用;第四个是拥有工业级的部署工具。PaddleClas模型库TensorFlow-Slim是由Tensorflow推出的一个轻量级的图像分类模型库,用于定义、训练和评估复杂的人工智能模型。TensorFlow-Slim模型库允许用户通过消除样板代码来紧凑地定义模型。通过提供常用的正则化器使开发模型变得简单。几种广泛使用的计算机视觉模型,例如VGG、AlexNet等,已经被开发成更小型的模型供用户使用。TensorFlow-slim模型库人工智能边缘设备中的人脸识别功能就依托目标检测功能的实现,而目标检测也有其相应的模型库,常用的目标检测模型库有PaddleDetection和Detectron2。2.2目标检测常用模型库PaddleDetection模型库PaddleDetection是由Paddlepaddle推出的目标检测套件,由百度大脑经过多年来的项目沉淀和实验模型的研究以及部署模型的经验总结得出。其目的是便于开发者对模型进行复用和高效搭建新模型。PaddleDetection具有两个特点,分别是丰富性和易用性,因为其拥有丰富的目标检测基础模型并且拥有合理的组织架构。Detectron2模型库Detectron2是由Facebook人工智能研究院发布的计算机视觉库,目的是为目标检测研究提供高质量、高性能的模型代码。其中集成了大量的目标检测的研究成果可供开发者使用。除此之外,Detectron2还具有可扩展性强的特点,因为其中引入了自定义设置,方便了开发者定制适合自己任务的目标检测功能。图像分割是将一个图像分割成若干个特定的、具有独特性质的区域并提取出需要分析的区域的过程。常用于图像分割任务的模型库有PaddleSeg和Semseg。2.3图像分割常用模型库PaddleSeg模型库可以进行模块化设计,可以支持多个图像分割经典模型;拥有丰富的数据增强,因为其内置多种数据增强方法,可结合实际场景进行定制相关模型;具有高性能,其支持多种运行和加速方法,可以大幅缩短模型训练的时间;能进行工业级部署,因为Paddlepaddle拥有高性能推理引擎和高性能图像处理能力,轻松完成模型部署。Semseg模型库semseg用PyTorch实现的语义分割/场景解析开源库。可以方便帮助开发者用于各种语义分割数据集的训练和测试。该库主要使用ResNet50/101/152作为主干网,也可以很容易地改成其他分类网络结构。Semseg模型库同时支持多线程训练与多进程训练,并且后者非常快。支持重新实现的算法取得更好的结果,而且代码结构清晰,且所有初始化模型、训练得到的模型和预测的结果都能够下载,便于开发者使用。文字识别指的是将一个图像中的文字部分识别并提取出来。常用于文字识别的模型库有PaddleOCR和PytorchOCR。2.4文字识别常用模型库PaddleOCR模型库PaddleOCR是百度Paddlepaddle打造的一套丰富、领先且实用的文字识别模型库。PaddleOCR模型具有三个特点:第一个特点是模型库超轻量级,总模型仅8.6M;第二个特点是拥有多种文字识别训练算法,可以方便开发者调取使用;第三个特点是可运行在多种系统上。PytorchOCR模型库PytorchOCR是基于Pytorch的一个文字识别模型库。PytorchOCR模型具有两个特点:第一个特点是拥有丰富的高准确率的模型可供开发者选择;第二个特点是可以在移动端部署,支持开发者在不同设备上开发。语音识别指的是将输入的语音信号转变成文字输出。常用于社交软件中发消息时,对我们的日常生活有很大的帮助。常用的语音识别模型库包括PaddleSpeech模型库和ModelScope语音模型库两种。2.5语音识别常用模型库PaddleSpeech模型库PaddleSpeech是PaddlePaddle平台上的一个开源工具包,用于语音和音频中的各种关键任务,包括:(1)关键音频任务的实现:该工具包包含自动语音识别、文本到语音合成、说话人验证、关键字识别、音频分类和语音翻译等音频功能;(2)主流模型和数据集的集成:该工具包实现了参与整个语音任务管道的模块,并使用主流数据集,如LibriSpeech、LJSpeech、AIShell、CSMSC等;(3)支持级联模型应用:作为典型传统音频任务的扩展,我们将上述任务的工作流程与自然语言处理(NLP)和计算机视觉(CV)等其他领域相结合。ModelScope语音模型库ModelScope的模型库是共享机器学习模型、demo演示、数据集和数据指标的地方。可以轻松地创建和管理自己的模型库,利用界面或开发环境来便捷地上传、下载相关模型文件,并从ModelHub中获取有用的模型和数据集元数据。支持直接推理的使用方式,即可以直接对输入音频进行解码,输出目标文字。支持微调的方式,即加载训练好的模型,采用私有或者开源数据进行模型训练。迁移学习算法人工智能边缘设备应用03目前云端模型库中已有大量开源的图像分类、目标检测和图像分割等人工智能模型;在开发过程中已经消耗了巨大的时间资源和计算资源,在云端拥有良好的性能,但由于其模型较为复杂且体积较大,无法在性能受限的边缘计算设备中运行;因此可以通过深度模型压缩的方法,压缩简化具备良好性能的大型模型,以部署到边缘计算设备中进行使用。3迁移学习算法</>迁移学习使得计算机能够将在解决一个问题的过程中所获得的知识,应用于相同技术任务下目标对象相似的工作中,迁移学习可以利用数据和领域之间存在的相似性关系,把学习到的知识,应用于新的未知领域。教师模型通常是一个复杂的大模型,具备大量参数,拥有良好的性能和泛化能力。教师模型通过部分参数共享的方式,指导学生模型进行训练,并将教师模型具备的部分知识迁移到学生模型中。迁移学习算法的核心是找到已有知识与需要的新知识之间的相似性。3.1迁移学习算法的概念在生活中,迁移学习算法常结合计算机视觉、自然语言处理、语音识别等技术进行使用。3.2迁移学习算法的应用计算机视觉计算机视觉任务通常需要大量数据来训练模型,才能保证模型在对应场景中的识别精确度。使用迁移学习算法处理计算机视觉任务中的适应性问题,可以有效减少新模型的训练数据量,降低模型的开发成本。自然语言处理情感分类在不同的领域中,例如不同类型的产品或在线网站,用户都可能使用不同的词语表达他们具有相同情感的观点,使得模型无法跨领域准确识别分类用户的情感倾向。在这种情况下,可以通过迁移学习算法,调整已训练完成的情感分类模型,以适应不同的任务领域。语音识别语音识别需要采集大量目标语音数据进行处理和分析。对于少数人说的语言,有效数据就不够庞大。因此为了针对方言进行语音识别,可以通过迁移学习算法,将从普通话识别算法中得到的知识进行迁移,应用于方言识别中。迁移学习算法得到的预训练模型,可以通过使用一个新的数据集进行再次训练的方法,来继承那些预训练模型中已经获得的基本知识,然后将其延伸到新的任务。因此迁移学习算法相比于其他人工智能算法,具备以下3个特点。3.3迁移学习算法的特点训练数据量更小少量数据也能进行模型训练;降低模型的大小和训练计算量。模型泛化能力更强增强模型在非训练集的数据上仍然具备较高准确率的能力。有目的性地让模型可以学习到对相关任务都有用的通用特征。降低深度学习的入门门槛开发者不需要具备专家级别的深度学习知识,就能获得专家级的结果。可以重复使用复杂的结构以及优化过的权重。模块7:智能边缘设备基础应用案例实现模块小结知识拓展PARTONEPARTTWOPARTTHREE案例实现:基于迁移学习的电子产品分类人工智能边缘设备应用01基于迁移学习的电子产品分类基于模块描述与知识准备的内容,基本了解了目前人工智能边缘设备常用的函数库和模型库,在接下来的案例实现中,将通过训练一个能够有效分类生活中常见的键盘和鼠标两类物体的模型,学习使用迁移学习算法,将开源大型模型转化为高性能小模型,并在人工智能边缘设备中进行推理应用。(1)模型训练环境准备(2)分类目标数据采集(3)迁移学习模型训练(4)测试模型训练结果任务1:模型训练环境准备(1)创建交换空间模型训练过程中会占用大量计算资源,为保证模型在训练过程中不会因为计算资源不足导致中途停止,需要在模型训练前准备足够的计算资源。通过代码创建模型训练空间。接着在终端中输入以下代码,将交换空间挂在到人工智能边缘设备中。接下来在该文件的最后一行中添加代码,保证设备每次启动后都能挂载到该空间。sudofallocate-l4G/mnt/4GB.swap#创建一个大小为4G的文件sudomkswap/mnt/4GB.swap#在创建好的文件上建立交换分区sudoswapon/mnt/4GB.swap#启用这个交换分区sudogedit/etc/fstab/mnt/4GB.swapnoneswapsw00任务1:模型训练环境准备(2)创建模型训练标签接下来创建模型训练过程中不可或缺的训练标签文件。首先通过以下命令进入到具体路径下。通过以下命令创建本次任务对应文件夹并进入文件夹中。在该文件路径下,通过以下代码创建模型训练标签文件。在文件中输入需要分类的标签,不同标签以enter换行间隔并保存文件。具体效果如下。cdDesktop/projects/char7mkdirkeyboard_mouse#创建文件夹cdkeyboard_mousegeditlabels.txt任务2:分类目标数据采集(1)启动图像采集工具准备好模型训练环境后,接下来准备分类模型训练过程中需要的图像数据。在人工智能边缘设备中预置了图像采集工具,通过代码启动图像采集工具。打开图像采集工具后,右上角会弹出图像采集工具界面,右下角会出现相机实时视频流界面。图像采集工具界面如图所示。cd/jetson-inference/tools#进入工具所在文件夹camera-capture--width=800--height=600--camera=/dev/video0#设定相机相关参数,相机显示界面宽为800像素,高为600像素,使用端口为video0的相机设备任务2:分类目标数据采集(1)启动图像采集工具该工具中的参数及介绍如下表所示。参数介绍DatasetType数据集类型。该工具支持采集图像分类和目标检测两类数据集。默认值为Classification,表示图像分类。DatasetPath存放模型数据集的路径。ClassLabels存放模型标签的路径。CurrentSet训练类别选择,是模型训练需要的三种数据集采集的类别,下拉框有三个选项:train(训练集)、test(测试集)、val(验证集)CurrentClass当前采集的图像类别JPEGQuality图像质量Capture(space)点击该按钮或按下空格键键即可完成采集一张图像数据任务2:分类目标数据采集(1)启动图像采集工具首先点击DatasetPath后方按钮,选择图像数据集路径。此时在keyboard_mouse文件夹中会自动新增train、test和val三个文件夹。接着点击DatasetPath后方按钮,选择任务1中准备的模型训练标签文件。任务2:分类目标数据采集(2)采集图像数据接下来选定一种数据类别和一种标签进行图像数据采集。本次任务中将采集keyboard(键盘)和mouse(鼠标)两个目标的图像数据。每个目标采集大约50张图像数据作为train训练集图片、10张图像数据作为val验证集、5张图像数据作为test测试集。首先采集键盘数据。如图设置所示,表示将采集train(训练)数据集中,keyboard(键盘)目标数据,采集效果如图所示。任务2:分类目标数据采集(2)采集图像数据采集到的图像数据将自动存储到设定的数据集文件夹中,如下图所示。采集完keyboard目标的训练集数据后,可以修改“CurrentSet”的参数,继续采集keyboard目标的test测试集、val验证集数据。任务2:分类目标数据采集(2)采集图像数据keyboard目标的训练集、测试集和验证集数据采集完成后,可通过将“CurrentClass”切换为mouse,采集mouse目标的训练集、测试集和验证集数据。本次任务采集的mouse目标图像数据效果如图所示。keyboard(键盘)和mouse(鼠标)两个目标的图像数据采集完成后,点击图像采集工具左上角的“×”按钮即可退出图像采集工具。任务3:迁移学习模型训练人工智能边缘设备中已经预置了基于迁移学习的图像分类模型训练程序,通过以下命令进入到该程序所在的文件路径中。通过以下命令启动模型训练程序。训练过程可在后台中查看。如下图所示,“Epoch”表示训练的轮次,“Test”表示该轮次训练中使用测试集对模型进行测试的结果,其中“Acc”表示该次测试得到的模型准确率。本次任务中将对模型进行34轮训练,训练总时长将在10分钟左右。cdjetson-inference/python/training/classificationpython3train.py--model-dir=/home/tringai/Desktop/projects/char7/keyboard_mouse~/Desktop/projects/char7/keyboard_mouse任务3:迁移学习模型训练模型训练完成后,将在keyboard_mouse文件夹中生成checkpoint.pth.tar和model_best.pth.tar两个文件,如图所示。接下来需要将模型结合参数文件进行导出。人工智能边缘设备中预置了导出程序,通过命令进入到该程序所在的文件路径中并启动模型导出程序。其中onnx_export.py为模型导出程序,model-dir为模型导出存放的路径。导出的结果如下所示,其中新增的resnet18.onnx为导出的模型文件。cdjetson-inference/python/training/classificationpython3onnx_export.py--model-dir=/home/tringai/Desktop/projects/char7/keyboard_mouse/任务4:测试模型训练结果得到模型文件后,需要编写模型推理代码进行模型测试。(1)创建模型推理程序进入keyboard_mouse文件夹中,通过以下命令进入具体文件夹中。通过以下命令创建模型推理程序。运行后将弹出文本框,效果如下图所示。cdDesktop/projects/char7/keyboard_mouse/geditpredict.py任务4:测试模型训练结果(2)导入模型所需库首先导入模型推理过程中需要使用的库。接着设置模型推理过程中,摄像头运行相关参数。importcv2importjetson.inferenceimportjetson.utilsimportnumpyasnpimporttimewidth=800height=600dispW=widthdispH=heightflip=30(3)调用相机与模型通过以下代码调用人工智能边缘设备中的摄像头。接下来在程序中添加训练得到的模型文件。模型推理结果在视频流界面进行实时显示。通过以下代码设置视频流参数。net=jetson.inference.imageNet('alexnet',['--model=/home/tringai/Desktop/projects/char7/keyboard_mouse/resnet18.onnx','--input_blob=input_0','--output_blob=output_0','--labels=/home/tringai/Desktop/projects/char7/keyboard_mouse/labels.txt'])font=cv2.FONT_HERSHEY_SIMPLEXtimeMark=time.time()fpsFilter=0cam1=cv2.VideoCapture('/dev/video0')任务4:测试模型训练结果(4)分类检测接下来编写程序对视频流结果进行分类。whileTrue:#获取帧

_,frame=cam1.read()#颜色空间转换

img=cv2.cvtColor(frame,cv2.COLOR_BGR2RGBA).astype(np.float32)#转换为Numpy数组类型

img=jetson.utils.cudaFromNumpy(img)#获取分类ID及置信度

classID,confidence=net.Classify(img,width,height)item=''item=net.GetClassDesc(classID)dt=time.time()-timeMark#设置帧率

fps=1/dtfpsFilter=.95*fpsFilter+.05*fpstimeMark=time.time()接下来将识别结果写入到图像。在程序设计时可以添加以下代码,释放程序计算资源。cv2.putText(frame,str(round(fpsFilter,1))+'fps'+item,(0,30),font,1,(0,0,255),2)#显示图像

cv2.imshow('recCam',frame)cv2.moveWindow('recCam',0,0)#设置程序退出

ifcv2.waitKey(1)==ord('q'):break#资源释放cam.releast()cv2.destroyAllWindows()任务4:测试模型训练结果完整代码如下:importcv2importjetson.inferenceimportjetson.utilsimportnumpyasnpimporttimewidth=800height=600dispW=widthdispH=heightflip=2cam1=cv2.VideoCapture('/dev/video0')net=jetson.inference.imageNet('alexnet',['--model=/home/tringai/Desktop/projects/char7/keyboard_mouse/resnet18.onnx','--input_blob=input_0','--output_blob=output_0','--labels=/home/tringai/Desktop/projects/char7/keyboard_mouse/labels.txt'])font=cv2.FONT_HERSHEY_SIMPLEXtimeMark=time.time()fpsFilter=0whileTrue:_,frame=cam1.read()img=cv2.cvtColor(frame,cv2.COLOR_BGR2RGBA).astype(np.float32)

温馨提示

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

评论

0/150

提交评论