位置: IT常识 - 正文

yolov5篇---yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程(yolov5训练参数说明)

编辑:rootadmin
yolov5篇---yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程 yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程一、任务介绍二、实验过程2.1 使用正确版本的yolov5进行训练(平台:x86机器ubuntu22.04系统)2.2 best.pt转换为best.onnx(平台:x86机器ubuntu22.04系统)2.3 best.onnx转换为best.rknn(平台:x86机器ubuntu22.04系统)2.3.1 环境准备和工具包安装2.3.2 onnx转换为rknn2.4 RK3588部署rknn实现NPU加速(平台:aarch板子Linux系统)3. 3588平台部署一、任务介绍

推荐整理分享yolov5篇---yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程(yolov5训练参数说明),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:yolov5讲解,yolov5训练参数说明,yolov训练,yolov5讲解,yolov训练,yolov5 教程,yolov1训练过程,yolov训练,内容如对您有帮助,希望把文章链接给更多的朋友!

  瑞芯微RK3588是一款搭载了NPU的国产开发板。NPU(neural-network processing units)可以说是为了嵌入式神经网络和边缘计算量身定制的,但若想调用RK3588的NPU单元进行推理加速,则需要首先将模型转换为**.rknn格式**的模型,否则无法使用。

  这次我们的任务是将yolov5训练得到的pt模型,一步步转换为rknn模型,并将rknn模型部署在搭载RK3588的StationPC M3主机上,使用NPU推理。(官网NPU教程:NPU使用 — Firefly Wiki)查阅资料和官网后发现转换和使用过程分以下几步,首先总结给大家,后文细说:

1.使用正确版本(v5.0)的yolov5进行训练得到pt模型;

2.将pt模型使用yolov5工程中的export.py转换为onnx模型;

3.将onnx模型使用rknn-toolkit2中onnx文件夹的test.py转换为rknn模型;

4.在板子上使用rknpu2工具调用rknn模型,实现NPU推理加速。

  接下来进行详细介绍。

二、实验过程2.1 使用正确版本的yolov5进行训练(平台:x86机器ubuntu22.04系统)

  人菜就要跟着官方教程做,请看官方教程:

rknn-toolkit/examples/pytorch/yolov5 at master · rockchip-linux/rknn-toolkit · GitHub

  需要指出的是,虽然我们后面要使用的是rknn-toolkit2工具进行模型转换,但教程却在rknn-toolkit工程中,github二者的父目录如图:

  进入rknn-toolkit工程,浏览至/example/pytorch/yolov5,在README中赫然写着:   这就是我们本次要使用的“正确版本的yolov5” ,怕麻烦的读者请一定按照这个id去yolov5官网找到工程并克隆下来。进入yolov5官网GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

git clone 获取指定分支的指定commit版本

git clone https://github.com/ultralytics/yolov5cd yolov5git reset --hard c5360f6e7009eb4d05f14d1cc9dae0963e949213

  非常棒,至此我们已经找到了正确版本的yolov5!接下来就是把代码克隆到本地或者云服务器,开始训练自己的pt模型;此处实际上是yolov5 5.0版本的工程,其中未包含预训练模型yolov5s.pt,需要我们自行下载,在releasesl链接中找到V5.0下载yolov5s.pt,链接如下:

https://github.com/ultralytics/yolov5/releases

关于yolov5的运行环境配置、参数修改和训练命令,网上教程很多,满足package的要求,可以开始训练收敛即可,不作为本文重点。最终在经过若干轮训练后,我们得到了自己的last.pt模型,本部分告一段落。

2.2 best.pt转换为best.onnx(平台:x86机器ubuntu22.04系统)

(1)   此处依然参考rknn-toolkit工程中的教程进行转换,切记以下步骤!!!

注意:在训练时不要修改yolo.py的这段代码,训练完成后使用export.py进行模型导出转换时一定要进行修改,不然会导致后面的rknn模型转换失败!

(2) 修改export.py

找到 torch.onnx.export 所在行  

修改后将last.pt移动至export.py同一文件夹下,在命令行调用以下命令:

python export.py --weights last.pt --img 640 --batch 1 --include onnxyolov5篇---yolov5训练pt模型并转换为rknn模型,部署在RK3588开发板上——从训练到部署全过程(yolov5训练参数说明)

我们便可以得到成功转换的模型last.onnx。

2.3 best.onnx转换为best.rknn(平台:x86机器ubuntu22.04系统)2.3.1 环境准备和工具包安装

  有了以上的last.onnx模型作为基础,现在可以正式开始rknn模型的转换了。此处的转换工具rknn-toolkit2只能在Linux系统上运行,这里我使用的是本机Ubuntu22.04。在上文提到的链接中下载rknn-toolkit2,下载后的文件夹如图:

  首先安装rknn-toolkit2的环境, 其环境要求在./doc/requirements_cp38-1.4.0.txt中,这里我使用的是anaconda创建的python3.8虚拟环境,创建环境并命名为rknn_3588,使用pip安装requirements_cp38-1.4.0.txt中的包

pip install -r requirements_cp38-1.4.0.txt

环境满足需求后便可以安装rknn-toolkit2工具包了,浏览至**./packages**中,输入以下命令:

pip install rknn_toolkit2-1.4.0_22dcfef4-cp38-cp38-linux_x86_64.whl

提示安装完成后我们可以检查是否安装成功,在终端中运行python,输入:

from rknn.api import RKNN

若不报错说明我们的工具包已经安装成功,之后便可进行rknn模型的转换了~

2.3.2 onnx转换为rknn

  在rknn-toolkit2工程文件夹中浏览至 ./examples/onnx/yolov5,将我们在2.2中转换得到的last.onnx复制到该文件夹下,修改该文件夹下的test.py中的内容为自己模型的名字,要修改的地方如下:

在这个test.py的main函数中(在第230行附近)可以了解到这个python文件的作用:

【 配置——加载onnx模型—导出rknn模型——rknn模型推理——后处理——输出结果】

最终弹窗得到post process result,若结果正确,说明我们的rknn模型转换成功了!这里的test.py构建了一个虚拟的NPU运行环境,模拟在RK3588上真实运行的情况。结果正确说明离最终完成任务只差部署在板子上这一步了。

这时在当前文件夹**./example/onnx/yolov5中可以看到生成的last.rknn**模型。至此,我们离胜利就不远了。

2.4 RK3588部署rknn实现NPU加速(平台:aarch板子Linux系统)

  终于RK3588板子登场的时候了,但如果它还是原生的安卓系统,请按官网教程给它安装一个Linux系统吧。我这里使用TF卡烧录安装了Ubuntu系统。

  依然找到官网,下载其中的rknpu2工具,链接如下:https://github.com/rockchip-linux/rknpu2

3. 3588平台部署

在3588的主目录上获取官方demo

git clone https://github.com/rockchip-linux/rknpu2.git

进入yolov5目录

cd /home/ptay/rknpu2-master/examples/rknn_yolov5_demo

修改include文件中的头文件postprocess.h

#define OBJ_CLASS_NUM 3 #这里的数字修改为数据集的类的个数

修改model目录下的coco_80_labels_list.txt文件, 改为自己的类并保存

xxxxxxxxx

将转换后的rknn文件放在model/RK3588目录下

编译,运行shell

bash ./build-linux_RK3588.sh

成功后生成install目录

cd install/rknn_yolov5_demo_linux

在model目录下放入需要推理的图片

运行

./rknn_yolov5_demo ./model/RK3588/last.rknn ./model/0625_xx_005.jpg

注:后面的图片用的全路径,因为当前的相对路径识别不到(主要是看图片所在的位置)

在rknn_yolov5_demo_linux获取到结果

参考: https://blog.csdn.net/m0_57315535/article/details/128250096 https://blog.csdn.net/m0_51714298/article/details/125916417

本文链接地址:https://www.jiuchutong.com/zhishi/285121.html 转载请保留说明!

上一篇:亨茨维尔附近绿色山公园中的Cambron Covered Bridge,阿拉巴马州 (© Jens Lambert/Shutterstock)(亨茨维尔机场)

下一篇:马蹄莲的养殖方法(马蹄莲的养殖方法和注意事项视频)

  • macbook如何卸载软件(macbook如何卸载第三方软件)

    macbook如何卸载软件(macbook如何卸载第三方软件)

  • 抖音移除粉丝对方会有提醒吗(抖音移除粉丝对方)

    抖音移除粉丝对方会有提醒吗(抖音移除粉丝对方)

  • 怎么导出微信聊天记录(怎么导出微信聊天记录作为证据)

    怎么导出微信聊天记录(怎么导出微信聊天记录作为证据)

  • 电脑版怎么横着打印几个字(电脑怎么横着了)

    电脑版怎么横着打印几个字(电脑怎么横着了)

  • vivoX27系统有必要升级吗(vivo新系统vivox27能用吗)

    vivoX27系统有必要升级吗(vivo新系统vivox27能用吗)

  • 努比亚阿尔法可以下软件吗(努比亚阿尔法可以用微信吗)

    努比亚阿尔法可以下软件吗(努比亚阿尔法可以用微信吗)

  • wps删除不要的页面

    wps删除不要的页面

  • 华为备忘录在哪里打开(华为备忘录如何置顶)

    华为备忘录在哪里打开(华为备忘录如何置顶)

  • 机械革命电脑开不开机了怎么回事(机械革命电脑开不了机怎么办按哪个键)

    机械革命电脑开不开机了怎么回事(机械革命电脑开不了机怎么办按哪个键)

  • oppor11s内存不足怎么办(oppor11s内存不足怎么清理)

    oppor11s内存不足怎么办(oppor11s内存不足怎么清理)

  • u盘歌曲在车上无法播放(u盘歌曲在车上只能听几首)

    u盘歌曲在车上无法播放(u盘歌曲在车上只能听几首)

  • 有线网卡是什么(有线网卡是什么怎么接)

    有线网卡是什么(有线网卡是什么怎么接)

  • 卡贴机不小心还原了怎么办(卡贴机不小心还原了还能用卡贴吗)

    卡贴机不小心还原了怎么办(卡贴机不小心还原了还能用卡贴吗)

  • 微信付款码多久失效(微信付款码多久更新)

    微信付款码多久失效(微信付款码多久更新)

  • 电脑乘除符号是哪个键(电脑的乘除符号在哪里)

    电脑乘除符号是哪个键(电脑的乘除符号在哪里)

  • 软件更新在哪里(oppo软件更新在哪里)

    软件更新在哪里(oppo软件更新在哪里)

  • 手机7z文件怎么打开(手机7z文件怎么转换为视频)

    手机7z文件怎么打开(手机7z文件怎么转换为视频)

  • 苹果11如何关闭打开的程序(苹果11如何关闭自动亮度)

    苹果11如何关闭打开的程序(苹果11如何关闭自动亮度)

  • 键盘驱动怎么重新安装(键盘驱动怎么重新安装win11)

    键盘驱动怎么重新安装(键盘驱动怎么重新安装win11)

  • 怎么把主机连接电视机(怎么把主机连接到显示屏上)

    怎么把主机连接电视机(怎么把主机连接到显示屏上)

  • 在国外能收到国内短信吗(在国外能收到国内银行的短信吗)

    在国外能收到国内短信吗(在国外能收到国内银行的短信吗)

  • ios未受信任怎么解决(未受信任苹果怎么弄)

    ios未受信任怎么解决(未受信任苹果怎么弄)

  • 为什么打印出来只有一半(为什么打印出来没有框线)

    为什么打印出来只有一半(为什么打印出来没有框线)

  • Linux系统中查询发型版本号以及内核版本的命令总结(linux系统查询mac地址命令)

    Linux系统中查询发型版本号以及内核版本的命令总结(linux系统查询mac地址命令)

  • sort命令  对文件内容进行排序(sort文件名)

    sort命令 对文件内容进行排序(sort文件名)

  • 增值税专用发票几个点
  • 新办营利性医疗机构是否免征土地使用税和房产税?
  • 从价税是什么意思
  • 职工食堂费用计入管理费用
  • 一般纳税人开普票和专票有什么区别
  • 残保金计入管理费用还是营业税金及附加
  • 向境外支付赔偿金需要发票么
  • 关联方交易的会计处理方法
  • 财务费用和应付利息的关系
  • 城建税和教育附加税
  • 可供出售金融资产会计处理
  • 停用的厂房折旧吗
  • 股息红利所得如何缴纳个人所得税
  • 发票领购带什么
  • 行业协会的作用定位
  • 工业企业的三个阶段
  • 资产已报废折旧怎么计算
  • 车辆购置税的会计处理
  • 应交税金审计
  • 集团财务公司可以放款给外部单位吗
  • 小规模的企业所得税税率
  • 作废的发票还需要装订在凭证里吗
  • 金税盘在电脑上怎么打开
  • 地方教育费附加计入什么科目
  • 车辆购置税是否计入固定资产
  • 个人可以开技术服务费发票税率多少
  • 一般纳税人转为小规模2022政策
  • 办理对公账户手续流程
  • 租房修缮费扣除
  • 我的初级备考经验--有种力量叫坚持
  • 稽查查补税款怎么计算企业所得税
  • 移动纸质发票
  • 销售退回涉及的科目
  • 多抵扣的进项如何做分录
  • 怎么解决百度打不开页面
  • 资产处置损益是什么科目
  • php判断为空的方法有哪些
  • 光纤布线有什么作用
  • 销售人员奖励办法
  • 收到保险公司赔付的车辆维修费的会计分录
  • Escarpment Trail in Porcupine Mountains Wilderness State Park, Michigan (© Pat & Chuck Blackley/Alamy)
  • 企业所得税核定征收方法有哪两种
  • Error in render: “TypeError: Cannot read properties of undefined (reading ‘length‘)“,深层次数据处理报错????
  • 怎样创建一个网站
  • Pytorch深度学习实战3-6:详解网络骨架模块nn.Module(附实例)
  • 真相 百科
  • sessionn
  • 大型语言模型的教育应用
  • elinks --dump
  • 外地工程预缴税款怎么入账啊
  • 公司从银行提取现金4000元备作零星开支
  • 盘盈的存货账务怎么处理
  • 公司申报是每月一次吗
  • sqlyog提示
  • python 概率分布函数
  • 资产负债表应交税费为负数
  • 委托代销商品支付的手续费计入什么科目
  • 直接材料成本总差异怎么算
  • 发票验旧后还要缴销吗
  • 如何评价福建省
  • 对外公司
  • 应收账款转营业外支出
  • 间接费用的分配公式
  • 利息支出可以抵扣进项吗
  • 会务费发票开普票还是专票
  • 固定资产如何管理可以做到节能减排
  • mysql压缩包安装教程5.7.32
  • win10纯净系统安装教程
  • win10系统升级后共享打印机不能用
  • 通过扣缴义务人申报和综合所得年度自行申报
  • dosbox批处理
  • codeblocks使用技巧
  • 安卓图片缓存太占空间
  • python根据ip获取主机名
  • 如何利用Fabric自动化你的任务
  • Javascript字符串奇数位替换
  • 比亚迪车载物联网卡
  • 税务局组织收入存在的问题
  • 中国十大经济排名
  • 税务一般纳税人可以简易注销
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设