NPU使用
RK3566 内置 NPU 模块。使用该NPU需要下载RKNN SDK,RKNN SDK 为带有 NPU 的 RK3566/RK3568 芯片平台提供编程接口,能够帮助用户部署使用 RKNN-Toolkit2 导出的 RKNN 模型,加速 AI 应用的落地
RKNN 模型
RKNN 是 Rockchip NPU 平台使用的模型类型,以.rknn后缀结尾的模型文件。用户可以通过RKNN SDK提供的工具将自主研发的算法模型转换成 RKNN 模型
RKNN 模型可以直接运行在 RK3566 平台上,在RKNN_API_for_RK356X_v1.1.0*/examples/中有例子,根据README.md编译生成
Android 或 Linux Demo(需要交叉编译环境)。也可以直接下载编译好的 Demo。
在 ROC-RK3566-PC 上运行demo如下:
非 RKNN 模型
对于 Caffe、TensorFlow 等其他模型,想要在 RK3566 平台运行,需要先进行模型转换。可以使用 RKNN-Toolkit2 工具将模型转换成 RKNN 格式。
RKNN-Toolkit2工具
工具介绍
RKNN-Toolkit2 是为用户提供在 PC、Rockchip NPU 平台上进行模型转换、推理和性能评估的开发套件,用户通过该工具提供的 Python 接口可以便捷地完成各种操作。
工具的全部功能简单介绍如下:
模型转换: 支持 Caffe、TensorFlow、TensorFlow Lite、ONNX、DarkNet、PyTorch 等模型转为 RKNN 模型,并支持 RKNN 模型导入导出,RKNN 模型能够在 Rockchip NPU 平台上加载使用
量化功能: 支持将浮点模型量化为定点模型,目前支持的量化方法为非对称量化 ( asymmetric_quan
tized-8 及 asymmetric_quantized-16 ),并支持混合量化功能 。 asymmetric_quantized-16 目前版本暂不支持
模型推理: 能够在 PC 上模拟 Rockchip NPU 运行 RKNN 模型并获取推理结果; 或将 RKNN 模型分发到指定的 NPU 设备上进行推理并获取推理结果
性能评估: 将 RKNN 模型分发到指定 NPU 设备上运行,以评估模型在实际设备上运行时的性能
内存评估: 评估模型运行时的内存的占用情况。使用该功能时,必须将 RKNN 模型分发到 NPU 设备中运行,并调用相关接口获取内存使用信息
量化精度分析: 该功能将给出模型量化前后每一层推理结果与浮点模型推理结果的余弦距离,以便于分析量化误差是如何出现的,为提高量化模型的精度提供思路
环境依赖
系统依赖:RKNN-Toolkit2 目前版本适用系统Ubuntu18.04(x64)及以上,工具只能安装在 PC 上,暂不支持 Windows、MacOS、Debian 等操作系统
Python版本:3.6
Python依赖库:
RKNN-Toolkit2 安装
建议使用 virtualenv 管理 Python 环境,因为系统中可能同时有多个版本的 Python 环境
如果导入 RKNN 模块没有失败,说明安装成功,失败情况之一如下:
模型转换 Demo
在rknn-toolkit2-1.1.0*/examples下有各种功能的 Toolkit Demo ,这里我们运行一个模型转换 Demo 为例子,这个 Demo 展示了在 PC 上将 tflite 模型转换成 RKNN 模型,然后导出、推理、部署到 NPU 平台运行并取回结果的过程。模型转换的具体实现请参考 Demo 内源代码以及本页末尾的文档。
RKNN-Toolkit2 自带了一个模拟器,直接在 PC 上运行 Demo 即是将转换后的模型部署到仿真 NPU 上运行
运行在与 PC 相连的 ROC-RK3566-PC NPU 平台上
RKNN-Toolkit2 通过 PC 的 USB 连接到 OTG 设备 ROC-RK3566-PC。RKNN-Toolkit2 将 RKNN 模型传到 ROC-RK3566-PC 的 NPU 上运行,再从 ROC-RK3566-PC 上获取推理结果、性能信息等:
首先部署 ROC-RK3566-PC 环境:更新librknnrt.so及运行rknn_server
Android
Linux
然后在 PC 上修改examples/tflite/mobilenet_v1/test.py文件,在其中添加目标平台
PC 端运行test.py
原作者:Firefly Wiki