泰山派3M-RK3576开发板部署YOLOv8目标检测模型实战指南
泰山派3M-RK3576开发板部署YOLOv8目标检测模型实战指南最近有不少朋友在问怎么把现在很火的YOLOv8目标检测模型部署到泰山派3M-RK3576这块开发板上跑起来。确实在嵌入式设备上跑AI模型尤其是目标检测是很多AIoT项目的核心需求。今天我就结合自己的实际项目经验手把手带大家走一遍完整的部署流程。咱们的目标很明确从零开始把官方的YOLOv8模型经过格式转换、交叉编译最终在泰山派开发板上跑起来并且能看到实际的检测效果。整个过程我会尽量讲得详细特别是容易踩坑的地方我都会重点提醒。1. 环境准备搭建开发“工作台”在开始模型转换和部署之前我们需要先把开发环境搭建好。这就像盖房子前要先准备好砖瓦和工具一样。整个过程都在你的Ubuntu PC建议22.04版本上进行。1.1 安装Python环境管理器Miniforge3为了避免不同Python项目之间因为依赖包版本冲突而“打架”我们使用Miniforge3来管理独立的Python环境。这比系统自带的Python要干净、方便得多。打开你的Ubuntu终端依次执行以下命令# 1. 下载Miniforge3安装脚本 wget -c https://mirrors.bfsu.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh # 2. 运行安装脚本 bash Miniforge3-Linux-x86_64.sh运行安装脚本后会有一系列交互提示按Enter键阅读许可协议。一直按空格键往下翻看完后输入yes同意。询问安装路径直接按Enter使用默认路径/home/你的用户名/miniforge3就行。最后会问是否要初始化conda输入yes。安装完成后需要激活一下环境变量让系统知道conda命令在哪source ~/miniforge3/bin/activate如果成功你会看到命令行最前面出现了一个(base)的标记这就说明Miniforge3已经准备就绪了。1.2 创建模型转换专用环境YOLOv8-RKNN-Toolkit2接下来我们需要一个专门用来做模型转换的环境。因为Rockchip官方提供的RKNN-Toolkit2工具链对Python和库的版本有特定要求单独的环境能避免污染其他项目。# 创建一个名为 YOLOv8-RKNN-Toolkit2 的新环境并指定Python版本为3.10 conda create -n YOLOv8-RKNN-Toolkit2 python3.10 # 创建过程中会提示 Proceed ([y]/n)?输入 y 确认即可创建好后激活并进入这个环境conda activate YOLOv8-RKNN-Toolkit2激活后命令行前缀会变成(YOLOv8-RKNN-Toolkit2)。然后在这个环境里安装模型转换的核心工具# 安装Rockchip官方的模型转换工具包 pip install rknn-toolkit2 -i https://mirrors.aliyun.com/pypi/simple # 安装指定版本的onnx库这是模型转换的中间格式 pip install onnx1.18.0 -i https://mirrors.aliyun.com/pypi/simple注意这里使用了阿里云的镜像源-i https://mirrors.aliyun.com/pypi/simple下载速度会快很多。安装完成后可以先退出这个环境我们接着准备下一个。conda deactivate1.3 创建YOLOv8模型导出环境Tspi3-YOLOv8模型转换需要先从PyTorch格式.pt导出为ONNX格式这个步骤需要在另一个包含YOLOv8官方代码的环境中进行。# 创建另一个名为 Tspi3-YOLOv8 的环境同样使用Python 3.10 conda create -n Tspi3-YOLOv8 python3.10 # 同样输入 y 确认激活新环境conda activate Tspi3-YOLOv8此时命令行前缀变为(Tspi3-YOLOv8)。在这个环境里我们需要安装YOLOv8运行和导出所依赖的包# 安装基础依赖包包括PyTorch、OpenCV等 pip install tqdm numpy opencv-python torch torchvision pillow matplotlib pyyaml requests scipy pandas seaborn -i https://mirrors.aliyun.com/pypi/simple # 安装 ultralytics 库这是YOLOv8的官方实现 pip install ultralytics -i https://mirrors.aliyun.com/pypi/simple安装完成后可以简单测试一下YOLO命令是否可用yolo -v如果输出版本号例如8.3.248说明环境配置成功。2. 模型获取与转换从通用到专用现在我们手头有两个准备好的Python环境。接下来就是核心步骤把通用的YOLOv8模型转换成泰山派RK3576芯片能高效运行的专用格式RKNN。2.1 第一步下载预训练模型.pt文件模型文件.pt就像是训练好的“大脑”没有它代码只是个空壳。我们去YOLOv8官方仓库下载一个现成的模型。这里以最小的yolov8n.ptnano版为例它在开发板上跑起来速度最快。确保你在Tspi3-YOLOv8环境下然后执行wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolov8n.pt下载完成后你当前目录下就会有一个yolov8n.pt文件。2.2 第二步导出为ONNX格式直接下载的YOLOv8官方代码导出的ONNX模型可能无法在Rockchip的NPU上获得最佳性能。幸运的是Rockchip官方已经提供了一个优化过的YOLOv8版本。克隆优化版仓库git clone https://github.com/airockchip/ultralytics_yolov8.git cd ultralytics_yolov8修改配置文件 我们需要告诉代码我们下载的模型文件在哪里。编辑ultralytics/cfg/default.yaml文件找到model:这一行把后面的路径改成你刚下载的yolov8n.pt的绝对路径。提示你可以用pwd命令查看当前绝对路径然后拼接上文件名。例如修改后这一行可能看起来像这样model: /home/your_username/workspace/yolov8n.pt设置Python路径并导出# 设置Python路径为当前目录确保代码能正确找到模块 export PYTHONPATH./ # 运行导出脚本 python ./ultralytics/engine/exporter.py运行成功后会在当前目录下生成一个yolov8n.onnx文件。这就是我们转换的中间成果。2.3 第三步转换为RKNN格式关键步骤ONNX模型还是通用格式要让它能在RK3576的NPU上“飞起来”必须转换成RKNN格式。这一步我们切换到之前准备好的YOLOv8-RKNN-Toolkit2环境。切换环境并获取转换工具# 退出当前环境 conda deactivate # 进入转换专用环境 conda activate YOLOv8-RKNN-Toolkit2 # 克隆Rockchip官方的模型仓库里面包含了转换脚本和Demo git clone https://github.com/airockchip/rknn_model_zoo.git cd rknn_model_zoo/examples/yolov8/python执行转换命令 转换脚本convert.py的使用语法如下python convert.py onnx_model_path [platform] [dtype] [output_rknn_path]platform: 指定平台我们的是rk3576。dtype: 指定数据类型。对于RK3576可以选择i8整数8位量化速度最快精度略有损失或fp浮点精度高速度稍慢。这里我们选择i8以追求性能。因此运行如下命令请将/home/lipeng/workspace/yolov8/yolov8n.onnx替换为你自己的ONNX文件实际路径python convert.py /home/your_username/workspace/yolov8n.onnx rk3576 i8转换成功后你会在rknn_model_zoo/examples/yolov8/model/目录下找到生成的yolov8n.rknn文件。这个文件就是最终要放到开发板上运行的模型3. 交叉编译Demo程序模型准备好了还需要一个能在开发板上调用这个模型、处理图片并显示结果的程序。Rockchip官方提供了C写的Demo我们需要在PC上为ARM架构的开发板编译这个程序这就是“交叉编译”。退出所有Conda环境conda deactivate看到命令行前缀变回(base)或没有前缀即可。安装交叉编译工具链 我们需要在x86的PC上编译出能在ARM架构的泰山派上运行的程序。sudo apt update sudo apt install -y cmake make gcc-aarch64-linux-gnu g-aarch64-linux-gnu编译Demo 进入rknn_model_zoo目录运行编译脚本。cd rknn_model_zoo/ # 给编译脚本添加执行权限 sudo chmod x ./build-linux.sh # 执行编译指定目标平台为rk3576架构为aarch64Demo名为yolov8 ./build-linux.sh -t rk3576 -a aarch64 -d yolov8注意-d后面的Demo名称必须和rknn_model_zoo/examples/目录下的文件夹名称一致这里是yolov8。编译过程需要一些时间。成功后会在当前目录下生成一个install/文件夹里面结构类似这样install/ -- rk3576_linux_aarch64 -- rknn_yolov8_demo |-- lib # 运行所需的动态库 | |-- librga.so | -- librknnrt.so |-- model # 模型和测试资源 | |-- bus.jpg # 测试图片 | |-- coco_80_labels_list.txt # 类别标签文件 | -- yolov8.rknn # 模型文件需要替换成我们自己的 |-- rknn_yolov8_demo # 主程序 -- rknn_yolov8_demo_zero_copy # 零拷贝版本程序4. 板端部署与运行演示最后一步就是把编译好的程序和我们的模型放到泰山派开发板上去运行了。4.1 文件传输到开发板首先我们需要用自己转换的yolov8n.rknn模型替换掉Demo里自带的那个。将rknn_model_zoo/examples/yolov8/model/yolov8n.rknn复制到install/rk3576_linux_aarch64/rknn_yolov8_demo/model/目录下覆盖原有的yolov8.rknn文件或者将自带的删除把我们的重命名为yolov8.rknn。然后将整个rknn_yolov8_demo文件夹传输到开发板。这里以使用ADB工具为例泰山派默认已开启ADB调试# 将demo文件夹推送到开发板的/home/lckfb/目录下 adb push install/rk3576_linux_aarch64/rknn_yolov8_demo /home/lckfb/4.2 在开发板上运行Demo通过ADB Shell或者SSH登录到你的泰山派开发板。进入Demo目录并设置库路径# 登录开发板后进入刚才传输的目录 cd /home/lckfb/rknn_yolov8_demo # 设置动态库查找路径非常重要否则会提示找不到.so文件 export LD_LIBRARY_PATH./lib给程序添加执行权限并运行# 添加执行权限 sudo chmod x rknn_yolov8_demo # 运行Demo程序 sudo ./rknn_yolov8_demo model/yolov8.rknn model/bus.jpg命令格式是./程序名 RKNN模型路径 输入图片路径。如果一切顺利程序会开始执行。你会在终端看到模型加载、推理耗时等信息。运行结束后会在当前目录生成一个名为out.png的结果图片。把这个图片拉取到电脑上打开或者如果开发板有桌面环境直接查看就能看到YOLOv8模型检测出的目标以及画出的边界框了。恭喜你至此你已经成功完成了YOLOv8模型在泰山派RK3576开发板上的完整部署流程。从环境搭建、模型转换、交叉编译到板端运行每一步都是实战中必须掌握的技能。你可以尝试更换不同的YOLOv8模型如yolov8s.pt或者使用自己的图片进行测试探索这块板子在AI视觉应用上的更多潜力。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2413020.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!