RKNN-Toolkit2 是为用户提供在 PC 平台上进行模型转换、推理和性能评估的开发套件,本文记录 Demo 运行过程。
RKNN(Rockchip Neural Network)是由瑞芯微(Rockchip)推出的神经网络加速器和推理引擎。它是一种硬件加速器,专门用于在瑞芯微的处理器上执行神经网络推理任务,提高神经网络模型在嵌入式设备上的性能。
主要特点和功能:
RKNN-Toolkit2 是一个软件开发工具包,用户可以在 PC 和 Rockchip NPU 平台(RK3566,RK3568,RK3588,RK3588S,RV1103,RV1106,RK3562)上进行模型转换、推理和性能评估。用户通过该工具提供的 Python 接口可以便捷地完成以下功能:
目前仅支持 Ubuntu 操作系统。需要满足以下运行环境要求:
该工具位于开源库 rknn-toolkit2 中,需要将仓库克隆到本地
doc/requirements* 等 txt 文件为 python 依赖包,根据自己的 Python 版本安装对应的依赖1 | pip install -r doc/requirements_cp36-1.x.x.txt |
|---|
packages 文件夹中的 rknn_toolkit2 包1 | sudo pip install rknn_toolkit2-1.x.x+xxxxxxxx-cp36-cp36m-linux_x86_64.whl |
|---|
123 | $ python>>> from rknn.api import RKNN>>> |
|---|
我在检查是否安装成功过程中遇到了报错:
1 | mportError: libGL.so.1: cannot open shared object file: No such file or dir |
|---|
出现这种情况的原因主要是因为使用Docker构建应用时缺少cv2的依赖。可以通过安装所需的附加依赖项来解决此错误。
1 | apt-get update && apt-get install libgl1 |
|---|
此处以 examples/pytorch/resnet18 为例
进入仓库的该文件夹,执行 python test.py 命令即可
123456789 | -----TOP 5-----812: 0.9997438192367554404: 0.00019667591550387442657: 1.2877936569566373e-05833: 8.015852472453844e-06466 744 895: 6.324138212221442e-06done |
|---|
其中核心过程如下:
过程 | 代码 |
|---|---|
生成 pytorch 的 pt 模型 | export_pytorch_model() |
创建 RKNN 对象 | rknn = RKNN(verbose=True) |
配置 RKNN 对象 | rknn.config(mean_values=123.675, 116.28, 103.53, std_values=58.395, 58.395, 58.395, target_platform=‘rk3586’) |
RKNN 对象加载 Pytorch 模型 | rknn.load_pytorch(model=model, input_size_list=input_size_list) |
构建 RKNN 模型 | rknn.build(do_quantization=True, dataset=‘./dataset.txt’) |
输出 RKNN 模型 | rknn.export_rknn(‘./resnet_18.rknn’) |
初始化 RKNN 运行环境 | rknn.init_runtime() |
RKNN 推断得到结果 | outputs = rknn.inference(inputs=img) |