「基于rk3566的泰山派」的YOLOv8自定义模型部署
关于「基于rk3566的泰山派」的YOLOv8自定义模型部署
Author: kkl
该笔记已经完成施工!
Damnnn!!! 我又来了哈,各位新年平安!
趁着这个新年假期,来捣鼓一下RK系列芯片上面的模型推理部署,然后刚好想要了解一下视觉类的模型YOLO,这个时候不得不搬出之前做过的YOLOv8-loopy的内容(笑,这么看来,简直是手到擒来呀这期。
其实这里有一个故事:就是也算工作上的小插曲,最近工作性质偏向视觉端,刚好也是瑞芯微的芯片,于是顺其自然接触了很多“模型端侧推理”的内容。我和视觉组的同事开玩笑说,你们莫非只是用个YOLO而已?钱也太好赚了吧,w我也要干视觉(其实除了YOLO还有很多算法在里头。然后同事打趣摇摇头,给你一个月你也学不来哒…
我对此嗤之以鼻,哼,幽默( ̄へ ̄
——from 2026.2.22
写完开头结尾,倒头就睡(经典开局。今日起床,充满活力,经过几天的假期休养,身体终于从苦不堪言的出差中恢复过来了。但是又想到今天就是初七,明天就是开工大吉,心情瞬间低落,damn啊!不过今天天气多云,确实适合宅家写写文档…
——from 2026.2.23
写在前面
tspi的玩家们可以去回顾一下我之前的文章,这里贴上跳转链接关于「基于rk3566的泰山派」的一切.
这篇文章受用并不仅限于tspi,其他瑞芯微带NPU的Soc都可以作为参考借鉴,比如:RK3588、RK3576、RK3568、RV1126/RV1126P…
先来聊聊我对YOLOv8粗浅理解,目前业界上最万金油视觉检测模型非YOLOv8莫属,大家都在用,也嘎嘎好用,多任务统一,做检测、分割、关键点检测都很不错,性价比高啊。
当然现在很多老旧项目里面还在跑YOLOv5,这模型也很棒很经典新手入门资料齐全踩坑少,但对比上后面的模型性价比有点低了,稍微有些吃力(没想到2020年才出,感觉很近啊。
YOLOv11也不错,小目标检测效果最好,这几个模型可以根据实际检测场景穿插来使用ahh…
更深的就不说啦,再底层的咱们也不太懂大家自行了解。本此我们主要围绕YOLOv8检测模型展开学习,其他的分割模型、姿态模型、OBB模型的部署都是换汤不换药大差不差的,知道怎么使用怎么部署就已经非常棒了,下面我们开始吧。
本篇文章将简述如何「基于rk3566的泰山派」快速部署YOLOv8。
开始
准备环境
测试环境:tspi的系统是Ubuntu20.04,PC是VMWare(Ubuntu20.04),rknn-Toolkit2是1.5.0及以上版本
安装miniconda
按照下面指令,miniconda安装过程一路Enter、一路yes即可。
1 | |
创建rknn-toolkit2虚拟环境
- 创建
Conda环境:toolkit2_3.2
1 | |
- 激活
Conda环境
1 | |
- 安装环境依赖
1 | |
更简易的环境搭建参考:JLC-tspi-rk3576-env-rknntoolkit2;或者参考:embedfire-lubancat-env-toolkit2,(●’◡’●)
创建YOLOv8环境
- 创建
Conda环境:yolov8-rknn
1 | |
安装 ultralytics 时会自动安装 CPU 版本的 pytorch 和 torchvision,但我们一般需要安装 GPU 版本,因此我们可以先安装 pytorch 再安装 ultralytics 就可以避免这个问题。
PyTorch 官网:PyTorch,根据自己的系统和 CUDA 版本选择安装对应的 pytorch:



- 安装
pytorch
1 | |
- 最后再来安装
ultralytics
1 | |
模型训练我是在windows上进行,虚拟机Ubuntu上其实也能练,但是就是要配置GPU驱动相关的东东,有点儿麻烦了,如果不配置单纯拿CPU来跑,又比乌龟爬还要慢(捂额…索性我在windows上有YOLOv8训练环境,我就直接就地取材了哈,就不演示训练过程啦!
模型导出
瑞芯微airockchip官方权威README:导出 RKNPU 适配模型说明.
这里需要做的事情非常简单,首先你需要准备一个模型(自己练好的或者是官方的权重文件yolov8n.pt;接着我们需要使用rockchip优化过的yolov8项目导出onnx模型。
考虑到已经有很多第三方做过官方的yolov8n.pt的模型转换教程了,JLC教程<-、野火教程<-。不过野火教程比较老旧了,转换自定义模型的时候,我弄的老是效果不好。所以推荐JLC教程,比较新,转换的是onnx模型,也对应最新的rknn-toolkit2库,赞哦!它们写的够好够详细了,我就不多赘述,推荐大家可以先去跟着完整跑一遍,再回来继续哟!
好的,下面继续,所以,我们这里直接拿自定义模型来做演示,那就是YOLOv8-loopy!!!
切换虚拟环境为:yolov8-rknn
1 | |
拉取airockchip/ultralytics_yolov8项目:
1 | |
下载训练好的loopy检测模型,到该目录下
1 | |
然后修改./ultralytics/cfg/default.yaml文件,主要是设置下model,为自己训练的模型路径:
1 | |
接着导出模型
1 | |
模型转换
切换虚拟环境为:toolkit2_3.2
1 | |
接下来我们将使用rknn_model_zoo中的转换脚本将 ONNX 转换为 RKNN 模型,拉取项目:
1 | |
进入rknn_model_zoo/examples/yolov8/python目录下:
1 | |
*这里,很重要,要把rknn_model_zoo/examples/yolov8/python/convert.py中的量化关一下,先不做量化,因为很麻烦,可以下来自行去研究研究哈,想要量化的话也挺简单的,就是要多花点心思。
运行rknn_model_zoo/examples/yolov8/python/convert.py脚本转化RKNN模型:
1 | |
执行成功之后,会在rknn_model_zoo/examples/yolov8/model目录下生成一个.rknn模型文件
Demo编译
安装交叉编译器aarch64
1 | |
进入rknn_model_zoo项目目录:
1 | |
给予build-linux.sh运行权限:
1 | |
需要修改一下~/project-Toolkit2/rknn_model_zoo/examples/yolov8/model/coco_80_labels_list.txt的内容 和 ~/project-Toolkit2/rknn_model_zoo/examples/yolov8/cpp /postprocess.h中的 OBJ_CLASS_NUM 宏,按照你数据集的yaml来改,顺序保持不动,数量保持一致;
如,我的loopy.yaml就一个class,那么数量宏 OBJ_CLASS_NUM 就为1,然后coco_80_labels_list.txt就填loopy.
1 | |
运行编译脚本:
1 | |
最终生成install/文件目录.
板卡上部署推理
把rknn_model_zoo/install传到板卡上:
1 | |
然后在板卡上操作,进入该install文件夹,接着指定一下库的位置:
1 | |
最后,使用命令运行一下可执行文件:
1 | |
写在后面
至此,你就又学会了一项新技能!快去创造无限可能吧(笑!
鸣谢:
- JLC:https://doc.embedfire.com/linux/rk356x/Ai/zh/latest/lubancat_ai/example/yolov8.html
- 野火:https://wiki.lckfb.com/zh-hans/tspi-3-rk3576/ai/yolov8/detection-model.html
- 很好很详细的教程:https://blog.csdn.net/c858845275/article/details/146274652
- loopy数据集:https://github.com/ZhangKeLiang0627/YOLOv8-loopy
- onnx模型导出:https://github.com/airockchip/ultralytics_yolov8
- rknn模型转换 & 推理Demo:https://github.com/airockchip/rknn_model_zoo
- https://github.com/airockchip/rknn-toolkit2
- https://github.com/LubanCat/lubancat_ai_manual_code
…