LinuxDown

LinuxDown.com
Linux系统下载网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

在树莓派上部署自己训练的yolov5模型

2023年7月20日 112点热度

目录

0.序言

近来这一个月基本没写过博客,由于仍然在猕猴桃派4B上布署yolov5的模型,早已数不清楚踩了多少坑了,来来回回折腾了一个月,总算完成了。于是写下这篇博客,一是记录下全部的流程,便捷之后其他项目借鉴;二是希望和我一样有类似需求的同事能少走些弯路。

在此之前,我想先把一些重要的东西说在上面:

1.在猕猴桃派上布署自己训练的yolov5模型,和在笔记本端运行pythondetect.py完完全全是两回事,差的不是一点半点。这篇博客中讲的布署须要依赖NCS2进行加速,是把.pt模型转换成.onnx模型,之后再通过openvino转换成IR中间模型(.xml模型储存网路拓扑结构,.bin模型储存权重偏置等),最后在NCS2上运行推理在树莓派linux系统下写c程序,并对结果进行处理。

假如如此说还是不直观的话,我举个反例:我从不晓得yolov5是哪些,到在笔记本上训练好自己的.pt模型总共花了一晚上。但是我把自己训练好的.pt模型成功布署到猕猴桃派上运行花了20多天。

不过别被吓到,我花了那么久是由于我踩了太多的坑,浪费了太多的时间。(但我一开始也确实不晓得该走哪条路,只能一条一条试啊md!!)虽然布署过程真的不麻烦,但须要内心平淡,不要狂躁。

2.假如你想在直接在猕猴桃派上安装pytorch之后和笔记本上一样运行.pt模型的话,我建议你不要走这条路了,由于我早已走过了:用最简单的yolov5s.pt模型跑分辨率大约0.3fps,这还是单线程情况下的,多线程就别提了,根本不可能满足实时推论。猕猴桃派4B的估算资源还是太弱了,所以才要用NCS2加速推理,加速后能到3fps,勉强能用。

在接着往下看之前,希望你对下边的概念有部份了解,或则有些印象。(一点都不了解的话建议百度学习一下再来看,了解下就行,磨刀不误砍柴工。)

1、知道yolov5,用它在笔记本上训练过自己的模型更好;

2、知道哪些是NCS2,晓得openvino;

3、知道.onnx模型,IR中间模型;

4、有猕猴桃派,且会基本的配置环境;

5、(可选)会使用GoogleCoaleb。

这篇博客更多的是对大体过程做梳理,并提及一些我遇见的坑。至于上面的细节,我会放些链接补充学linux有前途吗,其实自己遇见bug时还要自己百度处理。但我能保证整个过程没有问题。

1.我的环境

拿来训练yolov5模型的笔记本是win10系统,猕猴桃派4B的系统是:2020-06-23-raspbian-buster-full(搭建好基本环境).img【32bit】

虽然我yolov5模型的训练(.pt模型)和转换(转换成.onnx模型)都是在GoogleColab上进行的。这是一个线上的IDE,帮你配置好了基本的环境,你可以直接用,虽然没有第三方库自己安装也很便捷,基本一条pip命令就行,不会出现本地配置环境时出现各类奇怪bug,大大节约时间。更NB的是它免费送你一块GPU,你可以直接拿来训练模型,速率挺快的。但也许你在本地训练和转换模型也没问题。

2.整个流程

首先展示下整个布署流程,对全局有个掌握,之后我再一步步具体说:

整个过程分为四大步:

本质来看,似乎就是:

(1)训练自己的模型(.pt/.tf_lite/.weights…)

(2)使用openvino转换成IR中间模型

在树莓派linux系统下写c程序_树莓派开发操作系统_树莓派的程序

(3)在猕猴桃派上下载openvino,使用IR模型执行推测

即,模型的训练和转换都是在本地进行,覆盆子派上只使用转换后的IR模型执行推算。

3.具体过程3.1训练自己的yolov5模型

这一步的目的是使用自己的数据集训练,得到满足自己实际需求的.pt模型。

网上的教程多又全,可以直接看官方教程:GtiHubyolov5官方,也可以参考下边两篇文档:

colab和win10系统下yolov5的安装及训练自己的训练集

labelImg标明数据集(yolov5篇)

这步较为简单,参考那些文档,遇见小问题在CSDN上都能解决。

3.2将.pt模型转换为.onnx模型

经过上一步我们早已得到了.pt模型,下边须要使用yolov5文件夹中自带的export.py文件将.pt转换为.onnx模型。(虽然最终是要得到IR中间模型,但openvino似乎不提供直接将.pt模型转换为IR模型的插口,所以只能先转为.onnx模型linux 软件,再转换成IR模型)

这儿我是参考官方提供的方式:官方方式

虽然就是一行代码:

python export.py --weights yolov5s.pt --img 640 --batch 1  # export at 640x640 with batch size 1

把yolov5s.pt换成我们上一步得到的.pt模型即可

NOTE:我在本地转换的时侯环境总是有问题,转换不了.onnx模型,最后还是去GoogleColab上转换的。其实本地转换绝对也是可以的,只是我懒得再去配环境了。

执行完就可以在export.py所在的文件夹下见到.onnx模型了。恭喜你已然走了一半了。

3.3在本地将.onnx转换成IR模型

这儿我们须要用到openvino工具包来帮忙转换,我们在本地主机和覆盆子派上都须要下载。本地主机上下载的比较大,由于须要进行模型转换,而蓝莓派上下载的很小也很便捷,由于只要进行模型的推理即可。openvino也支持猕猴桃派,所以有官方教程,我下载的是最新的openvino2021.4。

这儿还是建议参考官方文档,由于官方文档会有最新的更新,也十分全面:

本地主机(Win10)安装文档

其实CSDN上也有好多安装教程,不过可能不是最新版的。

安装好openvino后,就开始.onnx模型到IR中间模型的转换了:

(1)用管理员打开cmd

(2)cd到mo.py所在的目录:我的是在这里

cd D:OpenVinoIntelopenvino_2021.4.582deployment_toolsmodel_optimizer

(3)把之前转换得到的.onnx模型放在和mo.py同一文件夹下

(4)开始转换

python mo.py --input_model=.onnx --output_dir=Myonnx_IR --model_name= --scale=255 --data_type=FP16

有几点须要注意:

1、--input_model:这是你上一步转化得到的.onnx模型

2、–output_dir:转化后得到的IR模型储存的位置

3、–model_name:转化后得到模型的名子

4、–scale:这个参数一定一定要写,不然以后布署在猕猴桃派上会出现在NCS2上推理和CPU上推理结果相差好多的现象。我就是在这儿浪费了好多时间。

5、data_type:模型精度,覆盆子派NCS2支支持FP16,CPU推理支持FP32。

例如我的代码是:

python mo.py --input_model=Myonnx_IR/last.onnx --output_dir=Myonnx_IR --model_name=last.fp16.s255 --scale=255 --data_type=FP16

最终得到的结果为:

OK,到这一步我们早已得到了IR中间模型了:

.xml是我们模型的拓扑结构

.bin是模型的权重和偏置

.mapping应当是储存着一些映射信息(这个我没研究)

恭喜你已然完成了3/4,胜利在望!

3.4在猕猴桃派4B上使用IR模型推理

经过上一步我们早已得到了IR中间模型,最后我们就须要在猕猴桃派上使用IR模型推理了,首先我们须要在猕猴桃派上下载openvino和配置NCS2,这儿还是强烈建议看官方文档,十分简单在树莓派linux系统下写c程序,就几行命令。这儿我用下他人博客里的图,可以看下win10和覆盆子派上安装openvino的主要过程。

win10

猕猴桃派

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 中间 推理 树莓 模型 转换
最后更新:2023年7月20日

Linux系统下载网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux系统下载网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
高速无线网络畅享,tplink300M Linux驱动带你飞 Linux系统的秘密技巧:轻松修改文件创建日期 Windows远程连接Linux,轻松跨平台操作 关于linux下获取文件的创建时间与实战的相关资料 树莓派Linux系统:极简体验大比拼 Linux系统如何修改文件的时间touch命令的描述指令? Linux上运行exe文件的软件,你绝对不能错过这些 蓝牙耳机怎么连接电脑?笔记本蓝牙适配器的开启方法 全新Linux局域网聊天软件 系统启动时自动运行程序的三种功能方法介绍 Linux系统下载攻略:掌握这些技巧,轻松get Linux查看端口占用情况linux命令:ps、grep、kill 剖析ARM Linux内核:奥秘与精髓解读 康华:Linux内核空间和用户空间的区别及用法 LinuxWine:使用关关采集器的最佳选择 Linux对段式内存映射的支持 Linux课程报告对比:成为顶级Linux系统管理员的秘诀 中通过几个宏拓展的实现来完成设备号的分解和合成 Linux计划任务工具对比:Cron及更多 快速上手Linux系统的基本概念、常用命令和应用
IMAP和POP有什么区别?如何配置邮件客户端使用IMAP高速无线网络畅享,tplink300M Linux驱动带你飞unix系统和linux系统 Unix和Linux系统的经验技巧,你了解吗?lastb列出登入系统失败的用户相关信息补充说明命令嵌入式操作系统的特点及发展前景分析快速定位目标文件,Linux文档管理软件!Linux操作系统下载:选择适合你的发行版获取UbuntuLinux操作系统的PDF文件文件的基础知识介绍Linux下Python开发经验与技巧分享Linux,下的日志文件系统的载体介绍-苏州安嘉Linux编程:系统IO速度稳定性评测一种嵌入式Linux操作系统的构建方法:王晓辉,孙新贺Linux轻松下载文件,简单操作!Linux远程主机的指定目录内容的使用命令Linux解压RAR神器,一招搞定zxvf命令嵌入式Linux文件系统的结构是基于树状的根在顶部深入解析Linux网络内核的开发技巧英特尔发布migrate-pages函数中实现页面迁移的批量TLB刷新Win7上安装Linux虚拟机软件的经验分享!2018.11.05linux.pngLinux发行版线路图
Linux操作系统:端口查进程 CentOS系统下搭建个性化WordPress博客,快速开始你的写作之旅! apt升级20.04.1LTS到20版本 可用性对比Banshee的应用起来非常简单,你知道吗 LinuxTomcat环境变量配置:对比评测两种方法 Linux系统轻松建站:打造令人印象深刻的网站 图片版pdf转换成word文字怎么给文件添加密码 玩转Linux调试:轻量级调试工具全解析 Linux命令操作:简明指南 如何查看Linux系统信息? 光驱一个使用过程中会检测媒介 台式机安装linux系统安装过程遇到了问题怎么办? 掌握Linux配额管理,轻松设置与启用 PHP开发的Linux服务器管理系统,(WDlinuxControlPanel) 轻松设置Fedora KDE中文输入法,畅享更流畅的打字体验! ghost linux系统 备受瞩目的Ghost Linux:稳定性与性能共赢 CentOS轻松查看监听端口,实用技巧与案例 80端口已被占用netstat-9发现杀不掉怎么办 快速安装Linux下的Go语言环境变量:实例详解 Linux服务器必备!Tomcat8下载安装指南!
标签聚合
内核 应用 命令 文件 linux系统 软件 linux服务器 文件目录 电脑 操作
书籍
课程
技术群
技术干货大合集↓
  • 2023年9月 / 92篇
  • 2023年8月 / 122篇
  • 2023年7月 / 122篇
  • 2023年6月 / 119篇
  • 2023年5月 / 123篇
  • 2023年4月 / 113篇
  • 2023年3月 / 265篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 LinuxDown.com ALL RIGHTS RESERVED.

京ICP备14023444号-2