由于香橙派5搭载 RK3588S芯片,端侧推理要调用NPU算力加速,但是无法直接加载PyTorch的.pt权重文件,所以需要进行模型格式转换与平台适配。

模型转换

         在YOLOv5训练环境中将best.pt导出为ONNX。主要解决模型图结构固化与跨框架兼容问题:将PyTorch动态计算图转为静态推理图,后续由RKNN-Toolkit2做解析与平台编译。确保输出张量维度与后处理逻辑保持一致,为下一步编译提供稳定输入。

    第一步:先安装 onnx、onnxruntime库(导出必备)

pip install onnx onnxruntime

     第二步:安装完成之后输入导出命令

python export.py --weights runs/train/exp/weights/best.pt --img 640 --dynamic --simplify --include onnx

即可在best.pt同目录中生成best.onnx模型。

best.onnx→best.rknn(香橙派部署所需模型)需要在Linux环境下进行,我这边使用的为VMware Workstation Pro虚拟机(Ubuntu20.04系统)。

第三步:进入虚拟机系统之后创建一个空文件夹,并将下面两个资源包(瑞芯微官方模型转换工具)中的内容解压至同一个文件夹中(受上传资源限制,没办法只能分两个上传)

# 创建文件夹(放模型+转换代码)
mkdir rknn_convert
cd rknn_convert

把你转换好的 best.onnx 复制到这个 rknn_convert 文件夹里。

第四步:安装 RKNN Toolkit2 依赖(必须)

sudo apt update
sudo apt install -y python3 python3-pip libglib2.0-dev libsm6 libxrender1 libxext6

安装 RKNN Toolkit2(因为网络下载慢,已经上传至资源包了,前面下载的就是这个工具包,解压即可切记一定要两个文件夹内容放一起)

第五步:编写转换脚本convert.py

touch convert.py
gedit convert.py
from rknn.api import RKNN

# ========== 1. 创建RKNN对象 ==========
rknn = RKNN(verbose=True)

# ========== 2. 配置 ==========
print('--> Config model')
rknn.config(
    mean_values=[[0, 0, 0]],
    std_values=[[255, 255, 255]],
    target_platform='rk3588'#根据你的香橙派处理器型号rk3566/rk3568
)

# ========== 3. 加载ONNX ==========
print('--> Loading ONNX model')
ret = rknn.load_onnx(
    model='best.onnx'
)
if ret != 0:
    print('❌ Load ONNX failed!')
    exit(ret)

# ========== 4. 构建模型 ==========
print('--> Building model')
ret = rknn.build(
    do_quantization=False   # ⚠ 先不开量化(保证成功)
)
if ret != 0:
    print('❌ Build failed!')
    exit(ret)

# ========== 5. 导出RKNN ==========
print('--> Export RKNN model')
ret = rknn.export_rknn('best.rknn')
if ret != 0:
    print('❌ Export failed!')
    exit(ret)

print('✅ SUCCESS: best.rknn generated!')

# ========== 6. 释放 ==========
rknn.release()

然后保存,并执行转换命令

python3 convert.py

转换完成后可以验证一下是否转换成功

python3 -c "from rknn.api import RKNN; r=RKNN(); r.load_rknn('best.rknn'); print('RKNN 模型有效')"

最后即可在文件夹中获得best.rknn,可以直接搬到香橙派中运行

注:该步骤我已经全部跑通,若有步骤不成功或转换过程出现报错,可以在文章下面评论问题,看到之后立即回复

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐