3588 yolov8 onnx 量化转 rknn 并运行

server/2024/11/14 21:11:34/

本教程重点不在如何训练模型,重点是全流程链路,想学训练的可以网上找教程

环境

  • python 3.10.x
  • rknn-toolkit2-2.2.0
  • ultralytics_yolov8
  • rknn 驱动版本2.2

模型训练

  • yolov8仓库地址:https://github.com/airockchip/ultralytics_yolov8.git
  • 下载项目到本地后,按照yolov8流程正常训练即可,里面有导出onnx的代码,运行一下就会生成onnx模型
  • 只能用这个仓库进行训练,不能用yolov8官方仓库代码训练,因为需要兼容rknn npu算子,改了网络结构
# 安装项目
pip install -e .
# 修改配置文件,model字段改为训练好的模型路径
ultralytics/cfg/default.yamlmodel: runs/detect/train/weights/best.pt
# 模型导出onnx文件
python ultralytics/engine/exporter.py

服务器上安装(onnx转rknn)

  • 下载rknn-toolkit2
wget https://github.com/airockchip/rknn-toolkit2/archive/refs/tags/v2.2.0.zip
git clone https://gitee.com/agricultureiot/rknn-yolov8.git
  • 解压
unzip v2.2.0.zip

在这里插入图片描述

  • 安装(根据python版本)
pip install -r requirements_cp310-2.2.0.txt -i https://pypi.tuna.tsinghua.edu.cn/simplepip install rknn_toolkit2-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

下载示例项目

git clone https://github.com/airockchip/rknn_model_zoo.git

准备校准集

  • 目的量化时矫正和测试模型
  • 从训练数据集中随机挑选20-50张数据集,尽量包含所有标签,放到指定目录
  • 编写txt索引文件,文件内容为20张图片的每个图片路径
# 参考目录结构
datasets├── images| ├── 123.ipg| ├── ......| └── 456.jpg└── dataset.txt
  • 修改文件的数据集路径和rknn模型导出路径:examples/yolov8/python/convert.py

在这里插入图片描述

量化

  • onnx转为rknn模型
python convert.py yolov8n.onnx rk3588
  • yolov8n.onnx 模型网络结构 (不是yolov8s)

在这里插入图片描述

  • 转为rknn 后的模型网络结构

在这里插入图片描述

  • 如果结构不对,是无法运行的

运行(3588开发板上操作)

升级npu驱动版本

  • 新版npu驱动地址:https://github.com/airockchip/rknn-toolkit2/blob/master/rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so
  • 将so替换到/usr/lib目录下,如果版本一致则不用升级驱动

安装依赖

  • 依赖地址(python调用npu的依赖):https://github.com/airockchip/rknn-toolkit2/blob/master/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.2.0-cp310-cp310-linux_aarch64.whl
python install rknn_toolkit_lite2-2.2.0-cp310-cp310-linux_aarch64.whl
  • 在板端安装 RKNN-Toolkit-lite 后,使用对应 demo 的 python 推理脚本,将 from rknn.api import RKNN 修改为 from rknnlite.api import RKNNLite as RKNN 才可以实现板端的 python 推理

  • 将rknn模型复制到开发板上
  • 运行代码
python yolov8-img.py

注意点

如果在边缘设备上运行需要替换包的引入

from rknn.api import RKNN
替换为下面的写法
from  rknnlite.api import RKNNLite as RKNN

npu使用率查看

watch sudo cat /sys/kernel/debug/rknpu/load

查看系统

uname -a
cat /etc/os-release

http://www.ppmy.cn/server/141285.html

相关文章

什么是python爬虫?

今天就来给大家介绍一下什么是python爬虫。 Python爬虫是一种自动化程序,用于在互联网上浏览和提取信息。它通过模拟人类用户访问网页的行为,发送HTTP请求,获取网页内容,然后解析这些内容以提取所需数据 。以下是关于Python爬虫…

【MATLAB源码-第209期】基于matlab的MSK调制解调仿真,对比三种解调方法的误码率分别是相干解调,1比特差分,2比特差分。

操作环境: MATLAB 2022a 1、算法描述 最小频移键控(Minimum Shift Keying,简称MSK)是一种特殊的连续相位频移键控(CPFSK),它以其频谱效率高、抗干扰能力强而著称,广泛应用于无线通…

MySQL 忘记 root 密码,使用跳过密码验证进行登录

MySQL 忘记 root 密码,使用跳过密码验证进行登录 修改 /etc/my.cnf 配置文件,在 [mysqld] 后面任意一行添加 skip-grant-tables vim /etc/my.cnf 重启 MySQL systemctl restart mysqld 登录 MySQL(无 -p 选项,无需密码登录&…

GEE 高阶:LandSCaPeN v1.0:一个支持分析景观结构、组成、过程、连通性和网络的Google Earth Engine工具箱

目录 简介 获取方式 案例 组成工具 lse.compositionFC(fc, propertyGroup, propertyValue, precision) lse.compositionFCStats(fc, propertyGroup, propertyValue, propertyWeight) lse.compositionImage(image, resolution, regions, printToConsole) 结构工具 lse.…

FPGA高速设计之Aurora64B/66B的应用与不足的修正

FPGA高速设计之Aurora64B/66B的应用与不足的修正 Aurora IP协议的特点 首先基于网上找到的一些资料,来讲述下Aurora高速协议的特点与相关的应用。Aurora 协议在 2002 年由 Xilinx 公司首次提出,是由Xilinx提供的一个开源、免费的链路层串行传输通信协议…

python-圆的问题

圆是几何中的基本形状之一,它由一个固定点到平面上所有到该点的距离相等的点组成。在数学中,圆可以用其半径r表示,也可以用直径d表示。 在Python中,我们可以使用math库来计算圆的一些属性。下面是一些常见的圆的属性和计算方法&a…

华为OD机试真题---电脑病毒感染

华为OD机试中的“电脑病毒感染”题目是一个典型的图论问题,涉及到网络中的电脑如何通过连接传播病毒,并计算感染所有电脑所需的最短时间。以下是对该题目的详细解析: 一、题目描述 一个局域网内有很多台电脑,分别标注为0~N-1的数…

在CentOS下安装RabbitMQ

在CentOS下安装RabbitMQ 在CentOS下安装RabbitMQ可以按照以下步骤进行:步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: 启用RabbitMQ管理插件(可选&#xff…