前几篇文章,将siglip2转成了onnx格式,并且使用onnx runtime进行了推理验证。
手上有rk3588的开发版,尝试使用rknn-toolkit2将其转换成rknn的模型,在rk3588上使用NPU进行推理。
https://github.com/airockchip/rknn-toolkit2
从release里面下载最新的2.5版本。目前不支持windows下的python。放到linux中,解压。
$ ls ~/rknn/
rknn-toolkit2-2.5.0 rknn-toolkit2-2.5.0.tar.gz
参考文档:
doc/CN/02_RKNN2_SDK_开发指南_V2.5.0.pdf
由于主机的python版本是3.14,rknn最高支持的版本是3.12,所以使用conda创建一个隔离的3.12 python环境。
$ wget -c https://github.com/condaforge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
$ bash Miniforge3-Linux-aarch64.sh
注意安装的时候,不要选择初始化shell环境,否则进入shell的时候,会默认切到conda。
比如的安装路径是:~/rknn/miniforge3
创建一个环境
~/rknn $ ./miniforge3/condabin/conda create -n rknn python=3.12
激活环境
yuanjp@vm:~/rknn$ . miniforge3/bin/activate rknn
(rknn) yuanjp@vm:~/rknn$
直接使用 activate命令会报错
$ ./miniforge3/condabin/conda activate rknn
CondaError: Run 'conda init' before 'conda activate'
进到解压的目录,下面的rknn-toolkit2目录。
在conda环境,先安装依赖:
(rknn) yuanjp@vm:~/rknn/rknn-toolkit2-2.5.0/rknn-toolkit2$
pip install -r packages/x86_64/requirements_cp312.txt
在安装
pip install packages/x86_64/rknn_toolkit2-2.5.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
确认,安装成功
$ python3
Python 3.12.15 (main, Oct 13 2026, 16:52:04) [GCC 15.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from rknn.api import RKNN
>>>
#!/usr/bin/env python
from rknn.api import RKNN
platform = "rk3588"
model_path = "onnx/siglip_image_embed.onnx"
output_path = "rknn/siglip_image_embed.rknn"
width = 500
height = 500
do_quant = False
rknn = RKNN(verbose=False)
rknn.config(target_platform=platform,
mean_values=[[0.48145466*255, 0.4578275*255, 0.40821073*255]],
std_values=[[0.26862954*255, 0.26130258*255, 0.27577711*255]])
ret = rknn.load_onnx(model=model_path)
if ret != 0:
print('Load model failed!')
exit(ret)
ret = rknn.build(do_quantization=do_quant)
if ret != 0:
print('Build model failed!')
exit(ret)
ret = rknn.export_rknn(output_path)
if ret != 0:
print('Export rknn model failed!')
exit(ret)
# Release
rknn.release()