当前位置:   article > 正文

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

yolo8 rk3568

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

一、环境验证

(一)板端验证

百度网盘-rknn_yolov8_rk3588_v14

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

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

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

1. 安装 Miniconda

在板端下载 Miniconda, 版本为

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

一路安装直到成功。

2. 虚拟环境

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

  1. conda create -n rknn python=3.9
  2. 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 虚拟环境

  1. conda create -n rknn python=3.8
  2. conda activate rknn

安装 pytorch 虚拟环境

conda create -n pytorch

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

pip install ultralytics

缺啥补啥: pip install xx

2. 安装依赖

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

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

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

  1. # if install failed, please change the pip source to 'https://mirror.baidu.com/pypi/simple'
  2. # base deps
  3. numpy==1.19.5
  4. protobuf==3.12.2
  5. flatbuffers==1.12
  6. # utils
  7. requests==2.27.1
  8. psutil==5.9.0
  9. ruamel.yaml==0.17.4
  10. scipy==1.5.4
  11. tqdm==4.64.0
  12. bfloat16==1.1
  13. opencv-python==4.5.5.64
  14. # base
  15. onnx==1.9.0
  16. onnxoptimizer==0.2.7
  17. onnxruntime==1.10.0
  18. torch==1.10.1
  19. torchvision==0.11.2
  20. tensorflow==2.6.2

3. 安装环境

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

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

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

source activate rknn

python 进入开发环境

from rknn.api import RKNN

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

5. 测试

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

  1. cd examples/onnx/yolov5/
  2. tree .
  1. .
  2. ├── bus.jpg
  3. ├── dataset.txt
  4. ├── test.py
  5. └── yolov5s.onnx
python test.py

将 rknn 模型放到板端验证

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

  1. .
  2. ├── lib
  3. │ ├── librga.so
  4. │ └── librknnrt.so
  5. ├── model
  6. │ ├── RK356X
  7. │ │ └── yolov8s-640-640.rknn
  8. │ ├── RK3588
  9. │ │ ├── yolov8s-640-640.rknn
  10. │ │ └── yolov8s.rknn
  11. │ ├── RV110X
  12. │ │ └── yolov8s-640-640.rknn
  13. │ ├── bus.jpg
  14. │ └── coco_80_labels_list.txt
  15. ├── out.jpg
  16. ├── rknn_yolov8_demo
  17. └── 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

  1. ztl@ztl:~/workspace/demo_rknn_yolov8_rk3588_v14$ bash testYolov8_rk3588.sh
  2. post process config: box_conf_threshold = 0.25, nms_threshold = 0.45
  3. Read model/bus.jpg ...
  4. img width = 640, img height = 640
  5. Loading mode...
  6. E RKNN: [05:25:08.050] failed to check rknpu hardware version: 0x46495245
  7. E RKNN: [05:25:08.050] This rknn model is for RK3566, but current platform is RK3588
  8. E RKNN: [05:25:08.050] rknn_init, load model failed!
  9. 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 转换模型,并将模型上传到 板端 ,可以正确运行。

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/412104
推荐阅读
相关标签
  

闽ICP备14008679号