1 基础概念
1.1 平台简介
- 飞凌 OK3576J-C开发板:搭载 RK3576J 八核处理器(4×A72+4×A53),内置 6TOPS NPU,支持 INT8/FP16 量化推理;PC 主机完成模型转换,最终生成的 rknn 模型拷贝至 OK3576 开发板运行。
- Anaconda:多 Python 版本环境管理工具,解决 RKNN-Toolkit2 严格的 Python 版本依赖,隔离不同项目依赖包冲突。
- RKNN-Toolkit2:瑞芯微 PC 端模型转换工具,负责原始模型加载、模型量化、构建生成
.rknn文件,支持 PC 端仿真推理验证。 - ONNX:跨深度学习框架的开放模型交换格式,是 RKNN-Toolkit2 最主流的模型输入载体。
1.2、三者关系
Anaconda(提供Python3.11隔离环境) ↓ 在这个环境内安装并运行 RKNN-Toolkit2 训练框架(TensorFlow/PyTorch) → 导出 → ONNX模型文件 → RKNN-Toolkit2加载、量化、编译 → mobilenetv1.rknn → 拷贝到飞凌OK3576开发板 → RKNPU2硬件NPU推理1.3、形象类比
- Anaconda = 独立干净的实验室房间
- RKNN-Toolkit2 = 房间里面的模型加工机器
- ONNX = 送到机器上的半成品原料
流程:在独立房间(Anaconda)里,用加工机器(RKNN-Toolkit2),把半成品原料(ONNX 模型)加工成成品(.rknn 模型),拿去开发板使用。2、 Anaconda 虚拟环境创建与配置
2.1、文件拷贝
将.sh结尾的Anaconda3通过FileZilla拷贝到ubuntu22系统(可以在home目录下新建一个software文件夹)
2.2、使用bash指令进行安装
cd /home/forlinx/software/bash Anaconda3-2023.03-1-Linux-x86_64.sh这里敲回车
显示more的时候点击键盘方向键的下
出现选择后填入yes
这里目录选择直接回车,然后会继续自动安装
conda init来初始化 Anaconda3,这里填yes
这样就表示安装好了。
2.2、gedit修改配置文件
gedit ~/.condarc在发开的conda 镜像配置文件中加入以下内容
auto_activate_base: false channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - defaults参数说明:
1、auto_activate_base: false
- 作用:新开终端不会自动进入 base 环境。
- 好处:避免每次打开终端都默认加载 base,减少不必要的 Python 包干扰,需要环境时手动
conda activate即可。
2、channels 通道列表,目的是把 conda 下载包的地址换成清华国内镜像,创建虚拟环境、下载 conda 相关包速度大幅提升。
点击保存后关闭即可。然后执行清理旧缓存:
conda clean -i然后验证镜像是否生效
conda config --show channels2.3、新建Python虚拟环境
创建专属虚拟环境,命名py3.11-tk2-2.3.2,锁定 Python3.11。用 conda 新建py3.11-tk2-2.3.2环境,单独安装 Python3.11,和系统Python完全隔离、互不干扰。
conda create --name py3.11-tk2-2.3.2 python=3.11如果报错,conda 默认源repo.anaconda.com在国内访问不通,网络连接失败,无法拉取包元数据:
这个时候按照下面的方式修改下channels:
auto_activate_base: false channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud按照上面修改后,重新创建:
执行到这里输入“y"
日志提示:Executing transaction: done,py3.11-tk2-2.3.2这个 conda 环境已经建好
2.4、激活虚拟环境(每次打开新终端必须执行)
conda activate py3.11-tk2-2.3.2激活成功,终端前缀显示(py3.11-tk2-2.3.2)。
2.5、备用命令,退出虚拟环境:
conda deactivate3、RKNN Toolkit2安装
3.1、文件拷贝
使用FileZilla将rknn-toolkit2-2.3.2.zip拷贝到ubuntu22系统下之前建的software目录下。
3.2、文件解压
unzip rknn-toolkit2-2.3.2.zip3.3、进入x86_64目录
cd rknn-toolkit2-2.3.2/rknn-toolkit2/packages/x86_643.4、使用gedit文本编辑器打开requirements_cp311-2.3.2.txt
gedit requirements_cp311-2.3.2.txt3.5、修改依赖清单的内容
把onnx版本固定为1.17.0,tensorflow前的注释取消并将版本固定为2.14.0:
改为:
3.6、返回到packages目录然后安装依赖库
cd ..pip install -r x86_64/requirements_cp311-2.3.2.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/出现成功安装的依赖信息展示就表示安装成功了:
发现onnx 1.19.0 大概率也能跑 RKNN Toolkit2,不过如果后续模型转换时报 onnx 版本相关报错,就手动降级:
pip install onnx==1.17.0 -i https://pypi.tuna.tsinghua.edu.cn/simple3.7、安装RKNN Toolkit2工具
注意也是在packages目录使用下面的指令下安装:
pip install x86_64/rknn_toolkit2-2.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl日志显示:Successfully installed rknn-toolkit2-2.3.2就成功了:
3.8、测试
3.8.1、进入mobilenet_v1目录
注意这个是在packages目录使用的指令:
cd ../examples/tflite/mobilenet_v13.8.2、运行test.py
python test.py发现报错了,这是onnx 1.19.0 和 ml_dtypes 版本不兼容导致的
先卸载现有 onnx 和 ml_dtypes
pip uninstall onnx ml_dtypes -y安装指定版本 onnx==1.17.0
pip install onnx==1.17.0 -i https://pypi.tuna.tsinghua.edu.cn/simplepython -m pip install ml_dtypes==0.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple还是报错,这次是因为pkg_resources是setuptools包里的模块,新版 setuptools 已经把它移除了,RKNN-Toolkit2-2.3.2 老代码还在引用它
解决方法:
python -m pip install "setuptools<82"如果需要速度快一些可以限制使用清华源
python -m pip install "setuptools<82" -i https://pypi.tuna.tsinghua.edu.cn/simple重新执行test.py,可以看到问题解决了:
最终执行结果: