ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

香橙派转换模型以及在开发板上部署

2026/8/25 18:09:11 拓冰建站 浏览量
香橙派转换模型以及在开发板上部署 新手小白记录一下自己使用香橙派模型转换以及在开发板上运行的过程防止后面忘记。使用的开发板Orange Pi 5 Plusrk3588官方的一些资料在主要参考用户手册Orange Pi - Orangepihttp://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-plus.html虚拟机ubuntu20.04前提1、在自己笔记本上已经安装好虚拟机 (ubuntu20.04)2、开发板已经烧录好镜像可以正常开机使用一、自己笔记本虚拟机端的环境配置1、查看python的版本python3 --version这里我的虚拟机是完全新装的一个里面没有额外装任何东西。2、安装RKNN-Tookl2的依赖包sudo apt-get updatesudo apt-get install libxslt1-dev zlib1g-dev libglib2.0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc然后我这里报错报错E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)是否有其他进程正占用它解决办法参考https://www.cnblogs.com/while19/p/16197099.htmlsudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo rm /var/lib/dpkg/lock-frontend接着继续使用上面的命令安装依赖安装完成之后如下图3、安装rknn-toolkit2git clone https://github.com/rockchip-linux/rknn-toolkit2 -b v1.5.2正常应该都是可以正常下载的我也不知道为什么报了那么多错误这里报错报错fatal: 无法访问 https://github.com/rockchip-linux/rknn-toolkit2/GnuTLS recv error (-110): The TLS connection was non-properly terminated.解决办法https://www.cnblogs.com/forforever/p/16451444.html按照上面的方法一开始我还是不能正常下载然后我重启了一下虚拟机之后就可以了还是我的网络问题。4、安装rknn-toolkit2需要的环境pip3 install -r rknn-toolkit2/doc/requirements_cp38-1.5.2.txt -i https://mirror.baidu.com/pypi/simple如果报错没有pip命令的话根据提示安装一下即可如果这里使用百度的镜像源下载不了报错的话可以更换一下镜像源更换方法将 -i 后面的网址换掉即可下面是常用的几个镜像源1. 清华大学镜像站https://pypi.tuna.tsinghua.edu.cn/simple/ 2. 阿里云镜像站https://mirrors.aliyun.com/pypi/simple/ 3. 中科大镜像站https://pypi.mirrors.ustc.edu.cn/simple/ 4. 中国科技大学镜像站https://pypi.mirrors.ustc.edu.cn/simple/ 5. 中国科学技术大学镜像站https://pypi.mirrors.ustc.edu.cn/simple/ 6. 华中科技大学镜像站https://pypi.hustunique.com/如果有个别的库下载不下来的话可以再重新换个镜像源单独安装。5、安装RKNN-Toolkit2软件包pip3 install rknn-toolkit2/packages/rknn_toolkit2-1.5.2b642f30c-cp38-cp38-linux_x86_64.whl安装完成之后可以使用里面给出的样例测试一下cd rknn-toolkit2/examples/onnx/yolov5/ python3 test.py结果如下在这个文件夹下可以看到输出的结果以及转换的rknn模型。二、使用ADB功能连接开发板和虚拟机我是参考用户手册里面的使用type-c数据线连接adb的部分打开开发板之后用一根数据线连接开发板和虚拟机。1、开发板端设置将type-c接口设置为device模式sudo set_device.sh确认adbd已经启动ps -ax | grep adbd会输出两行类似下面的信息2、虚拟机端1要确认设备是连接在虚拟机上面的可以通过虚拟机选项的可移动设备上面查看有一个rk3588的设备要连接到虚拟机不能连接到主机。2在虚拟机上面安装adbsudo apt-get update sudo apt-get install -y adb安装完成如下3测试一下能不能识别到adb devices正常时输出下面的结果这里得到的那一串device_id后面是需要用到的。但是我这里很容易出问题一开始老是检测不到设备可以多拔几次重新插试试。三、在ubuntu端使用开发板的NPU运行模型1、更新开发板的rknn_server 和librknnrt.so1更新开发板的rknn_serveradb push rknpu2/runtime/RK3588/Linux/rknn_server/aarch64/usr/bin/* /usr/bin2更新开发板的librknnrt.soadb push rknpu2/runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so /usr/lib3虚拟机端通过adb打开开发板的终端adb shell可以看到已经进入了开发板的终端。4打开rknn_server服务restart_rknn.sh5可以再使用下面检查一下是否有进程idpgrep rknn_server2、生成对应的模型并调用开发板的NPU推理1切换到官方给的测试代码cd rknn-toolkit2/examples/onnx/yolov5/2打开test.py文件修改相关参数这里有两种方式第一种是直接打开test.py文件在里面修改并保存第二种方式是使用vim编辑器从终端打开test.py文件进行修改这里我直接打开test.py文件修改保存。在241行和270行添加平台rk3588和device_id其中device_id是通过前面的adb device命令得到的。注意如果用第二种方式使用vim编辑器在终端打开test.py文件的话需要先按 i 键进入插入模式然后修改参数修改完成之后按esc退出插入模式再直接敲 :wq 保存退出注意在vim模式下想要输入命令得先输入一个 : 才能输入命令使用vim的命令如下如果之前没有安装过vim会报错根据提示安装一下即可vim test.py3在虚拟机端使用python运行示例python3 test.py正常检测。3、调用C接口部署RKNN模型到开发板上运行1由于虚拟机端用的是x86而开发板用的是arrch64所以需要在虚拟机端安装交叉编译链git clone https://github.com/airockchip/gcc-buildroot-9.3.0-2020.03-x86_64_aarch64-rockchip-linux-gnu2修改编译工具的路径#进入rknn_yolov5_demo文件夹 cd ~/rknpu2/examples/rknn_yolov5_demo #使用vim打开build-linux_RK3588.sh并修改 vim build-linux_RK3588.sh键盘敲 i 键进入插入模式然后按照下图设置TOOL_CHAIN值export TOOL_CHAIN~/gcc-buildroot-9.3.0-2020.03-x86_64_aarch64-rockchip-linux-gnu这里需要注意一下如果只修改了TOOL_CHAIN的值后面编译生成可用程序的时候会报错CMake Error at /usr/share/cmake-3.16/Modules/CMakeDetermineCCompiler.cmake:49 (message):Could not find compiler set in environment variable CC:aarch64-linux-gnu-gcc.所以建议一起修改GCC_COMPILER的值GCC_COMPILER~/gcc-buildroot-9.3.0-2020.03-x86_64_aarch64-rockchip-linux-gnu/bin/aarch64-rockchip-linux-gnu修改完成之后按esc退出插入模式然后输入wq保存退出。3编译生成可用程序./build-linux_RK3588.sh如果报错未找到cmake命令的话就使用下面命令安装一下sudo apt-get install -y cmake编译生成完成之后会在该文件夹下生成一个install的文件夹里面有一个rknn_yoov5_demo_Linux文件夹里面就是我们需要的文件。使用 ls install命令可以看到:4将编译生成的文件上传到开发板adb push install/rknn_yolov5_demo_Linux /data/rknn_yolov5_demo_Linux5进入开发板的文件系统adb shell cd /data/rknn_yolov5_demo_Linux/ ls6在开发板上进行推理./rknn_yolov5_demo ./model/RK3588/yolov5s-640-640.rknn ./model/bus.jpg推理完成之后可以使用 ls 命令查看生成的文件目录。7使用adb pull将结果拉到虚拟机内adb pull /data/rknn_yolov5_demo_Linux/out.jpg ~/yolo_output这里的yolo_output是我事先在虚拟机里面建好的一个文件夹用来存放推理出来的结果这里的路径可以修改。打开虚拟机里面的yolo_output文件夹可以看到拉出来的结果图片