【嵌入式AI开发rk3588】yolov8模型转换:pt->onnx->rknn

部署运行你感兴趣的模型镜像

yolov8系列模型转换步骤

1. pt->onnx

  • 在官方给出的airockchip/ultralytics_yolov8下,配置cfg/default.yaml中task,mode,model路径:
task: segment # (str) YOLO task, i.e. detect, segment, classify, pose
mode: export # (str) YOLO mode, i.e. train, val, predict, export, track, benchmark
model: xx/yolov8n-seg.pt(自己训练的模型路径) # (str, optional) path to model file, i.e. yolov8n.pt, yolov8n.yaml
...
format: rknn
  • run engine/exporter.py转换为官方算子适应的onnx
PyTorch: starting from '' with input shape (16, 3, 640, 640) BCHW and output shape(s) ((16, 64, 80, 80), (16, 80, 80, 80), (16, 1, 80, 80), (16, 32, 80, 80), (16, 64, 40, 40), (16, 80, 40, 40), (16, 1, 40, 40), (16, 32, 40, 40), (16, 64, 20, 20), (16, 80, 20, 20), (16, 1, 20, 20), (16, 32, 20, 20), (16, 32, 160, 160)) (6.7 MB)

RKNN: starting export with torch 2.4.1+cu121...

ultralytics版本不一致可能会导致(import优先导入了虚拟环境中的包):
ImportError: cannot import name ‘default_class_names’ from ‘ultralytics.nn.autobackend’
pip install -e . 解决问题

2. onnx->rknn

  • run rknn_model_zoo/examples/yolov8/python下的convert.py

注意转换前要在rknn toolkit2环境下

python convert.py ./xxx.onnx rk3588
  • 最终转换的rknn模型如下图(官方的yolov8n-seg.rknn):13个output
    在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

<think>嗯,用户这次的问题非常具体,就是要找YOLOv8模型RKNN格式并部署到RK3588的方法。看起来用户应该是个嵌入式AI开发者,正在做端侧部署的工作。从用户引用的几篇资料来看,ta可能已经查过一些零散的教程,但需要系统化的操作指引。 注意到引用[2]里提到RKNN Model Zoo这个关键资源,这应该是官方提供的模型部署套件,必须重点强调。用户给出的三个引用中,有两个都提到YOLOv5的转换流程,但用户明确要YOLOv8,需要特别注意版本差异——YOLOv8的导出接口和YOLOv5不同,特别是动态轴的处理容易出错。 用户没有说明具体使用场景,但选择RK3588这种带NPU的高端开发板,推测可能是要做实时视频分析类应用。部署流程中要特别提醒板端Python环境和C++推理的选择,这对延迟敏感场景很关键。另外用户引用的教程都提到rknn-toolkit-lite,虽然ta说没时间验证,但这个轻量部署工具确实值得推荐。 技术难点预判有三个:一是ONNX导出时的dynamic参数设置,二是RKNN转换时的mean_values/std_values配置(引用[3]里YOLOv5的案例提到过),三是RK3588特有的四核NPU负载均衡。在回答里需要分步骤预警这些易错点。 对了,用户上次的问题记录看不到,但根据当前对话历史,ta应该已经完成模型训练,卡在转换部署环节。所以重点放在导出、转换、部署三阶段,训练部分不用重复。最后补充的优化建议里,量化策略要写详细些,RK3588的INT8支持度比前代产品好很多…… </think>根据您提供的引用资料和相关技术实践,以下是YOLOv8模型转换RKNN格式并部署到RK3588开发板的完整流程: --- ### **一、核心步骤** #### 1. **环境准备** - **训练环境**:Python 3.8+,PyTorch 1.8+,Ultralytics YOLOv8库 ```bash pip install ultralytics ``` - **转换环境**:RKNN-Toolkit2(适配RK3588的NPU SDK) ```bash pip install rknn-toolkit2==1.5.0 # 需确认版本兼容性 ``` #### 2. **模型导出为ONNX** ```python from ultralytics import YOLO model = YOLO("yolov8n.pt") # 加载预训练或自定义模型 model.export(format="onnx", dynamic=True) # 导出动态轴ONNX ``` **关键参数**: - `dynamic=True`:允许输入尺寸动态调整 - 导出后验证ONNX模型可用性(使用Netron可视化结构) #### 3. **ONNXRKNN(核心步骤)** 参考`rknn-toolkit2`示例修转换脚本(以引用[3]为基础): ```python from rknn.api import RKNN rknn = RKNN() # 配置模型参数 rknn.config( mean_values=[[0, 0, 0]], # 根据训练数据归一化设置 std_values=[[255, 255, 255]], target_platform="rk3588" # 指定硬件平台 ) # 加载ONNX模型 ret = rknn.load_onnx(model="best.onnx") ret = rknn.build(do_quantization=True, dataset="./dataset.txt") # 量化校准 ret = rknn.export_rknn("yolov8.rknn") # 输出RKNN模型 ``` **注意事项**: - `dataset.txt`:包含100~200张校准图片路径(覆盖实际场景) - 若精度下降,尝试关闭量化(`do_quantization=False`)或调整量化策略 #### 4. **RK3588部署** **方案1:Python推理(快速验证)** ```python from rknnlite.api import RKNNLite rknn = RKNNLite() rknn.load_rknn("yolov8.rknn") rknn.init_runtime(core_mask=RKNNLite.NPU_CORE_0) # 指定NPU核心 inputs = preprocess(image) # 图像预处理(需对齐训练逻辑) outputs = rknn.inference(inputs=[inputs]) postprocess(outputs) # 解析输出框 ``` **方案2:C++部署(高性能)** - 参考`RKNN Model Zoo`中的YOLO例程(引用[2]) - 编译C++推理引擎,调用`rknn_api.h`接口 --- ### **二、关键优化点** 1. **动态输入支持** - 在`rknn.config()`中设置`optimization_level=3`启用动态尺寸优化 2. **多核NPU利用** ```python # 分配任务到多个NPU核心(RK3588支持三核) rknn.init_runtime(core_mask=RKNNLite.NPU_CORE_0_1_2) ``` 3. **预处理对齐** - 确保部署端的归一化(`mean/std`)、BGR/RGB转换与训练完全一致 --- ### **三、常见问题排查** | 问题现象 | 解决方案 | |-------------------------|------------------------------| | 转换失败(Shape不匹配) | 检查ONNX导出时的`dynamic`参数 | | 推理结果异常 | 验证预处理/后处理逻辑一致性 | | NPU利用率低 | 使用多批次异步推理 | > **重要提示**:RK3588的NPU驱动需更新至最新版(固件版本≥v1.3.0),否则可能遇到性能瓶颈[^2][^3]。 --- ### **四、参考部署框架** 1. **[RKNN Model Zoo](https://github.com/airockchip/rknn_model_zoo)** - 提供YOLOv5/v8的完整C++/Python部署例程 - 支持多线程处理和摄像头实时推理 2. **rknn-toolkit-lite** - 轻量级板载推理方案(无需连接PC) > 部署示例代码详见:`rknn_model_zoo/examples/yolov8/python/yolov8.py`[^2] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值