版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模块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)img=jetson.utils.cudaFromNumpy(img)classID,confidence=net.Classify(img,width,height)item=''item=net.GetClassDesc(classID)dt=time.time()-timeMarkfps=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'):breakcam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《水泵密封基础知识》课件
- 缩小口腔健康差距的机会用于临床实践的基础科学
- 玻璃和陶瓷课件
- 《江西廖辉林》课件
- 《股票及其定价》课件
- 《机械通气临床应用》课件
- 《物流仓储报告》课件
- 《湿法冶金浸出》课件
- 《漫画作文指导》课件
- 《理学线性规划》课件
- 经济学的思维方式全套课件
- 核酸是遗传信息的携带者说课课件-高一上学期生物人教版必修1
- 2025年中国真空杯行业市场前景预测及投资价值评估分析报告
- 汽车外贸基本知识培训课件
- 水利普法宣传课件
- 江苏省徐州市2024-2025学年七年级上学期期中考试数学试卷(含答案)
- 国网公司选拔专家人才考试题目含答案
- 长期卧床如何预防压疮
- 肠梗阻护理健康宣教
- 康复科患者入院接诊流程
- 中国投资人邮箱大全
评论
0/150
提交评论