1. 环境说明

需要用到 airockchip 提供的三个库, ultralytics_yolov8、rknn_model_zoo、rknn-toolkit2
链接: https://github.com/airockchip

  • ultralytics_yolov8

        瑞芯微官方根据对应平台进行优化过的。

  • rknn_model_zoo

        功能:瑞芯微官方维护的模型仓库,包含预优化的深度学习模型(如 YOLOv5/YOLOv8、MobileNet、ResNet 等)。
        核心特点:
                模型已针对瑞芯微 NPU(如 RK3588、RK3568)进行量化和优化。
                提供 Python 和 C++ 推理示例代码。
                包含模型转换脚本,支持从 ONNX/TensorFlow 转为 RKNN 格式。

  • rknn-toolkit2

        功能:瑞芯微提供的模型转换和推理工具包,用于将标准深度学习模型(如 ONNX、TensorFlow)转换为 RKNN 格式并在 NPU 上运行。
        核心特点:
                支持 INT8/FP16 量化,提升推理速度。
                提供 Python 和 C++ API,方便集成到应用中。
                包含模型性能分析工具(如内存占用、推理时间)。

2. pt模型转换onnx

ultralytics_yolov8,将 ultralytics_yolov8-main 重命名为 ultralytics_yolov8-rknn, 使用vscode打开,项目的pyproject.toml 中已经定义了相关依赖, 直接安装即可。

我使用的是anaconda python3.10虚拟环境,根据自己环境安装即可。

pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple

pt模型转 onnx,将需要转换的pt模型放到上述瑞芯微提供的ultralytics_yolov8-rknn下, 在终端执行转化命令,执行完后会在项目根目录下生成onnx模型:

yolo export model=模型名称.pt format=rknn

或者在虚拟环境运行如下代码:

from ultralytics import YOLO

model = YOLO(r"yolov8n.pt")
model.export(format="rknn")

如果报错,把没安装的包安装一下!!!!

pip install xxxxx -i https://pypi.tuna.tsinghua.edu.cn/simple

合并

import onnx
# 加载结构文件(它会自动寻找同目录下的.onnx.data)
onnx_model= onnx.load("yolov8n.onnx")
# 保存时设置成不使用外部数据
onnx.save(onnx_model, "yolov8n_combined.onnx", save_as_external_data=False)
print("模型已成功合并为单文件:yolov8ncombined.onnx")

3.ubuntu安装conda环境

根据系统下载对应的conda,地址: https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/  

我下载的python3.10版本的aarch64的:

上传到ubuntu系统后,给与权限并执行:

sudo chmod 777 Miniconda3-py310_23.10.0-1-Linux-aarch64.sh -R

./Miniconda3-py310_23.10.0-1-Linux-aarch64.sh

根据提示操作!

# 激活conda环境

source ~/.bashrc

配置镜像地址:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

然后可以创建虚拟环境:

conda create -n rknn310 python=3.10 -y

应用虚拟环境

conda activate rknn310

安装rknn-toolkit2的依赖(根据自己的环境选择是arm还是x86):

cd /data/rk_test/rknn-toolkit2-2.3.0/rknn-toolkit2/packages/arm64

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r arm64_requirements_cp310.txt

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rknn_toolkit2-2.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

4.onnx 模型转 rknn模型

在ubuntu系统执行:rknn-toolkit2,将yolov8n_combined.onnx文件拷贝到ubuntu系统中的
/data/rk_test/rknn_model_zoo-main/examples/yolov8/python/

python convert.py yolov8n_combined.onnx rk3588

完成后可在/data/rk_test/rknn_model_zoo-main/examples/yolov8/model/目录下找到生成的rknn,也可以自定义输出位置,在convert.py中修改:

5.验证 rknn模型

通过地址:https://netron.app/ 上传rknn模型查看有9个输出:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐