rv1126上跑yolov8。借助rknn_model_zoo 2.0更新,重点:在线预编译

最近rknn_model_zoo迎来一次大更新,其中最吸引人的就是全面支持RKNPU1的设备了。最近刚好有空玩了玩将yolov8部署到rv1126开发板上,遇到不少坑写个教程。

前期准备工作

rknn_model_zoo地址:github地址

rknpu官方压缩文件下载地址:RKNPU1.7.5官方压缩文件

rknpu官方环境搭建压缩文件(whl)下载地址:RKNPU环境搭建官方压缩文件

这里解释一下这两个文件的作用:
第一个文件解压后名字是:“rknn-toolkit-1.7.5”,里面是仓库的代码,包括文档等。但是没有供python安装的包。
在这里插入图片描述

第二个文件解压后名字是:“rknn-toolkit-v1.7.5-packages”,里面是python的安装包。

### RKNN Toolkit与YOLOv8模型转换和部署教程 #### 准备工作 为了顺利进行YOLOv8RKNN的转换及部署,需先准备好所需的软件包和工具。这包括获取并安装`ultralytics_yolov8`项目、`rknn_model_zoo-2.2.0`用于ONNX转RKNN的操作,以及`rknn-toolkit2`来支持整个过程中的环境配置[^1]。 #### 数据集准备 对于想要训练自定义数据集的情况,应按照标准流程整理好标注好的图片集合,并确保其格式符合YOLO系列算法的要求。此部分具体操作可参照相关指南完成。 #### 训练YOLOv8模型 利用已有的框架资源,在本地环境中基于个人需求调整参数设置后启动训练程序。完成后会得到`.pt`(PyTorch)形式的目标检测模型文件。 #### 转换为ONNX格式 通过Python脚本调用torch.onnx.export()函数可以实现从PyTorch(.pt)向通用中间表示(ONNX,.onnx)的有效转变。这段代码通常位于项目的export.py或其他类似命名的文件内: ```python import torch from ultralytics.yolo.engine.model import YOLO model = YOLO('path_to_your_trained_weight.pt') dummy_input = torch.randn(1, 3, 640, 640).cuda() output_names = ['output'] dynamic_axes = {'input': {0: 'batch_size'},'output': {0: 'batch_size'}} torch.onnx.export(model,dummy_input,'yolov8_custom.onnx',opset_version=12,output_names=output_names,dynamic_axes=dynamic_axes) ``` #### 将ONNX转化为RKNN 借助于`rknn_model_zoo`提供的API接口,能够轻松地把先前获得的ONNX模型进一步编译成适用于Rockchip硬件平台(RKNN)上的专用推理引擎格式。以下是简单的命令行指令示例: ```bash pip install rknn-api==2.2.0 ``` 接着运行如下Python代码片段来进行实际转换作业: ```python from rknn.api import RKNN rknn = RKNN(verbose=True) print('--> Config model') rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rv1126') print('--> Loading model') ret = rknn.load_onnx(model='./yolov8_custom.onnx') if ret != 0: print('Load ONNX model failed!') exit(ret) print('--> Building model') ret = rknn.build(do_quantization=False, dataset='./dataset.txt') # 如果有量化需求则设do_quantization=True 并提供校准集路径作为dataset参数值 if ret != 0: print('Build model failed!') exit(ret) print('--> Export RKNN model') ret = rknn.export_rknn('./yolov8_custom.rknn') if ret != 0: print('Export RKNN model failed!') exit(ret) ``` #### 开发板上部署RKNN模型 最后一步是在目标设备(如搭载RK3588芯片的开发板)加载刚刚生成的.RKNN文件执行推断任务。为此目的而特别定制过的库——`rknn3588-yolov8`提供了必要的驱动和支持功能以便快速集成新创建出来的对象识别能力[^2]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值