首页 > 编程语言 >Lnton羚通视频分析算法开发yolov8训练与rknn模型导出并在RK3588部署的详细步骤

Lnton羚通视频分析算法开发yolov8训练与rknn模型导出并在RK3588部署的详细步骤

时间:2023-09-07 11:04:52浏览次数:48  
标签:rknn RKNN RK3588 yolov8 板端 640 虚拟环境 pip

Lnton羚通的算法算力云平台以其突出的特点成为一款优秀的解决方案。它的高性能、高可靠性、高可扩展性和低成本使得用户能够高效地进行复杂的计算任务。同时,丰富的算法库和工具以及支持用户上传和部署自定义算法的功能进一步提升了平台的灵活性和个性化能力。

一、环境验证

(一)板端验证

百度网盘-rknn_yolov8_rk3588_v14

在宿主机上打开 Remmina, 输入 IP地址,用户名,密码 连接开发板。将文件下载后,放到开发板上,并解压。

当 RK3588 上利用 NPU 运行 yolov8 模型,耗时在 33.8 ms 左右。板端环境已经具备。

(二)RKNN-Toolkit2-Lite(板端)

1. 安装 Miniconda

在板端下载 Miniconda, 版本为

Lnton羚通视频分析算法开发yolov8训练与rknn模型导出并在RK3588部署的详细步骤_虚拟环境

bash Miniconda3-py39_23.3.1-0-Linux-aarch64.sh

一路安装直到成功。

2. 虚拟环境

在板端安装完成后。创建并激活虚拟环境

conda create -n rknn python=3.9
conda activate rknn

进入 rknn_toolkit_lite2 目录,

3. 安装环境依赖

pip install packages/rknn_toolkit_lite2-1.4.0-cp39-cp39-linux_aarch64.whl

如果安装较慢,修改国内的 pip 源,

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果缺少其他包库,直接用 pip 进行安装。

4. 测试验证

进入目录 examples/inference_with_lite ,

执行 python test.py 即可。

至此,板端的 rknn_toolkit_lite2 已经安装和验证完毕。后续可以在板端进行开发和部署 python 程序。

NOTE

如果执行 python test.py 提示缺少 librknnrt.so 或 librga.so 库,请在 github 下载,或者在其他目录下将 librknnrt.so 或 librga.so 拷贝至 /usr/lib 目录中。

如果想在板端打开终端时默认启动 rknn 的虚拟环境,

vi ~/.bashrc

在里面添加 conda activate rknn

(三)宿主机

1. 创建并激活虚拟环境

安装 rknn 虚拟环境

conda create -n rknn python=3.8
conda activate rknn

安装 pytorch 虚拟环境

conda create -n pytorch

这里可以简单一点,创建 pytorch 环境的依赖, 也可以按照 pytorch 官方教程下载相应的包。

pip install ultralytics

缺啥补啥: pip install xx

2. 安装依赖

进入 rknn 虚拟环境, 并进入 rknn-toolkit2 目录,

source activate rknn
pip install -r doc/requirements_cp38-1.4.0.txt

requirements_cp38-1.4.0.txt 文件内容如下:

# if install failed, please change the pip source to 'https://mirror.baidu.com/pypi/simple'

# base deps
numpy==1.19.5
protobuf==3.12.2
flatbuffers==1.12

# utils
requests==2.27.1
psutil==5.9.0
ruamel.yaml==0.17.4
scipy==1.5.4
tqdm==4.64.0
bfloat16==1.1
opencv-python==4.5.5.64

# base
onnx==1.9.0
onnxoptimizer==0.2.7
onnxruntime==1.10.0
torch==1.10.1
torchvision==0.11.2
tensorflow==2.6.2

3. 安装环境

进入 rknn 虚拟环境, 并进入 rknn-toolkit2 目录

source activate rknn
pip install packages/rknn_toolkit2-1.4.0_22dcfef4-cp38-cp38-linux_x86_64.whl

4. 进入 rknn 虚拟环境, 并验证是否安装成功 rknn

source activate rknn

Lnton羚通视频分析算法开发yolov8训练与rknn模型导出并在RK3588部署的详细步骤_虚拟环境_02

python 进入开发环境

from rknn.api import RKNN

没有报错,就说明 RKNN 已经安装成功。

5. 测试

在宿主机上,进入 rknn 虚拟环境,

cd examples/onnx/yolov5/
tree .
.
├── bus.jpg
├── dataset.txt
├── test.py
└── yolov5s.onnx
python test.py

Lnton羚通视频分析算法开发yolov8训练与rknn模型导出并在RK3588部署的详细步骤_虚拟环境_03

  1. 将 rknn 模型放到板端验证

将上述步骤生成的 yolov8s.rknn 放到板端测试。

.
├── lib
│   ├── librga.so
│   └── librknnrt.so
├── model
│   ├── RK356X
│   │   └── yolov8s-640-640.rknn
│   ├── RK3588
│   │   ├── yolov8s-640-640.rknn
│   │   └── yolov8s.rknn
│   ├── RV110X
│   │   └── yolov8s-640-640.rknn
│   ├── bus.jpg
│   └── coco_80_labels_list.txt
├── out.jpg
├── rknn_yolov8_demo
└── testYolov8_rk3588.sh

修改 板端 文件

bash testYolov8_rk3588.sh 中的./rknn_yolov8_demo model/RK3588/yolov8s-640-640.rknn model/bus.jpg为./rknn_yolov8_demo model/RK3588/yolov8s.rknn model/bus.jpg。

并在板端执行 bash testYolov8_rk3588.sh

ztl@ztl:~/workspace/demo_rknn_yolov8_rk3588_v14$ bash testYolov8_rk3588.sh 
post process config: box_conf_threshold = 0.25, nms_threshold = 0.45
Read model/bus.jpg ...
img width = 640, img height = 640
Loading mode...
E RKNN: [05:25:08.050] failed to check rknpu hardware version: 0x46495245
E RKNN: [05:25:08.050] This rknn model is for RK3566, but current platform is RK3588
E RKNN: [05:25:08.050] rknn_init, load model failed!
rknn_init error ret=-1

出现报错信息,重新在宿主机平台上设置平台信息;

将rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]])

修改为rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588')

并重新执行

python test.py

生成 yolov8s.rknn 模型并上传到板端对应位置。

重新在板端执行 bash testYolov8_rk3588.sh,运行效果正常。

至此,已经可以在 宿主机 上用给定的 demo 转换模型,并将模型上传到 板端 ,可以正确运行。

NOTE:共有四种方式开发和部署
第一种是借助 RKNN-Toolkit2 的功能在模拟 NPU 上运行 RKNN 模型并获取推理结果(在PC端)
第二种是借助 RKNN-Toolkit2 的功能, 将板子与 PC 连接,将 RKNN 模型分发到指定的 NPU 设备进行推理并获取推理结果(网络推理在板端,脚本写在 PC 端)
第三种是调用 RKNN SDK 的 C/C++ 语言 API 进行测试代码编写,并使用交叉编译器进行编译,将得到的可执行文件拷贝到板子上运行(开发编译在 PC 端,运行在板端),此处也可以通过 VS Code 连接板端,在板端开发应用。
第四种是在板端安装 rknn-toolkit2-lite 工具,使用 python 脚本在板端推理(代码开发运行都在板端)

Lnton羚通的算法算力云平台具有多个显著的特点,包括高性能、高可靠性、高可扩展性和低成本。首先,该云平台以高性能著称,能够提供高效、强大的算法计算服务。无论是处理复杂的计算模型还是执行各种算法,它都能快速而灵活地完成任务。

标签:rknn,RKNN,RK3588,yolov8,板端,640,虚拟环境,pip
From: https://blog.51cto.com/LNTON/7395149

相关文章

  • Lnton 羚通算法算力云平台在环境配置中 Windows10-YOLOv8 运行报错是什么原因
    在配置Windows10环境下运行YOLOv8时,报错可能有多种原因。以下是一些可能导致错误的常见原因:缺少依赖项:YOLOv8可能需要一些额外的依赖项,如OpenCV、CUDA、cuDNN等。请确保你已经正确安装了这些依赖项,并且版本与YOLOv8的要求相匹配。文件路径错误:检查你的文件路径是否正确。确保模型......
  • 迅为RK3588开发板Android12 设置系统默认不锁屏
    修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml文件,修改为如下所示:-<boolname="def_lockscreen_disabled">false</bool>+<boolname="def_lockscreen_disabled">true</bool>修改完,保存修改,重新编译android源码。......
  • RK3588开发板编译环境Ubuntu20.04编译配置增加交换内存
    迅为提供的编译环境Ubuntu20.04默认配置了交换内存是9G,如果在编译过程中,因内存不够而编译报错,可以参考本小节进行设置。这里举例分配5G交换内存。在开始之前,使用命令检查一下您的ubuntu的swap分区。sudoswapon--show通过以下命令创建一个用于swap的文件sudofallocate......
  • YOLOV8详细介绍
    YOLOv8是来自Ultralytics的最新的基于YOLO的对象检测模型系列,提供最先进的性能。官方开源地址:https://github.com/ultralytics/ultralyticsgithub.com/ultralytics/ultralyticsMMYOLO开源地址:https://github.com/open-mmlab/mmyolo/blob/dev/configs/yolov8/github.com/open-......
  • iTOP-RK3588开发板单独编译Android固件-打包update.img
    在ubootkernelandroid都编译完成的情况下,才可以打包update.img,所以一般在完整编译的时候用。输入以下命令:./build.sh-u打包完成会在rockdev/Image-rk3588_s目录下生成update.img镜像。更多内容:B站搜索迅为RK3588开发板......
  • 基于YoloV8的人体骨架提取代码编写时遇到的问题
    1、获取骨架端点的xy轴位置在最初进行编写的时候,我借鉴了网上的代码,其中出现最多的便是bboxes_keypoints=results[0].keypoints.cpu().numpy().astype('uint32'),但是实际运行时往往会报错AttributeError:'Keypoints'objecthasnoattribute'astype'.Seevalidattributes......
  • iTOP-RK3588开发板Ubuntu 系统交叉编译 Qt 工程-命令行交叉编译
    使用源码rk3588_linux/buildroot/output/rockchip_rk3588/host/bin/qmake交叉编译QT工程。最后烧写编译好的buildroot镜像,将编译好的QT工程可执行程序在buildroot系统上运行。交叉编译QT工程如下所示,首先进入QLed的工程目录下。然后使用以下命令交叉编译QT工程,如下......
  • YOLOv8+DeepSORT多目标跟踪(行人车辆计数与越界识别)
    课程链接:https://edu.51cto.com/course/34407.html本课程使用YOLOv8和DeepSORT对视频中的行人、车辆做多目标跟踪计数与越界识别,开展YOLOv8目标检测和DeepSORT多目标跟踪强强联手的应用。课程分别在Windows和Ubuntu系统上做项目演示,并对DeepSORT原理和代码做详细解读(使用PyCharm单......
  • onnx2rknn (picodet_s_192_pedestrian_sim.onnx 量化时出现错误)
    EValueError:Cannotreshapeatensorwith1843200elementstoshape[100,8](800elements)for'Reshape_Reshape_8_32/Reshape_Reshape_8_32'(op:'Reshape')withinputshapes:[100,24,24,32],[2]andwithinputtensorscomputedasparti......
  • 迅为RK3568|RK3588开发板车牌识别|RKNPU2人工智能视频重磅更新!
     ......