Rockchip · AI & Linux Hub

AI 推理

RKNN Toolkit Lite2 V2.5.0(四):推理、设备和版本查询 API

RKNN Toolkit Lite2 V2.5.0(四):推理、设备和版本查询 API · RKNN2 V2.5.0

· ArmSoM Editorial · Rockchip source documentation · 3 分钟阅读

平台参考:对应 RKNN Toolkit Lite2 V2.5.0、Debian 10/11/12 aarch64 及原稿列出的 SoC。用于 ArmSoM 板卡时,须确认 SoC、系统架构、Python wheel、BSP 中 NPU 驱动和 Runtime 兼容;未进行硬件实测。原稿加密章节的平台范围比 Lite2 安装支持表更广,保留两处原文,不据此扩展 Lite2 板端支持范围。

依据本地中英文 V2.5.0 原稿整理,保留原章节编号。中文用中文原图,英文、俄文和德文用英文原图;恢复 PDF 换行、跨页表格与代码缩进。示例输出不是 ArmSoM 实测。

Rockchip source

RKNN Toolkit Lite2 V2.5.0(一):安装、ResNet18 与返回约定

RKNN Toolkit Lite2 V2.5.0(二):生命周期、输入布局与输出复用

RKNN Toolkit Lite2 V2.5.0(三):模型加载、加密与 Runtime 初始化

RKNN Toolkit Lite2 V2.5.0(四):推理、设备和版本查询 API

RKNN Toolkit Lite2 V2.5.0(五):错误检查、Core Mask 与日志

3.3 模型推理

inference

API inference
功能 对指定输入执行模型推理,并返回输出结果。
参数 inputs:输入数据,类型为 list,成员为 ndarray。
  data_type:输入数据类型,默认值为 None;接口说明列出的类型包括 int8、uint8、int16、
float16、float32。
  data_format:输入数据布局,默认值为 None;当前支持 “nhwc” 和 “nchw”。
  inputs_pass_through:各输入的 Pass Through 标志列表,元素使用 0 / 1 表示关闭 / 开启,默
认值为 None。
  get_frame_id:是否获取 Frame ID,默认值为 False;主要用于异步模式。
  reuse_outputs:是否复用内部输出缓冲,默认值为 False;为 True 时返回内部复用缓冲的视图,
适用于长时推理循环场景,但下次推理会覆盖返回结果。
返回值 正常返回输出 ndarray 列表;get_frame_id=True 时在列表末尾追加 Frame ID。Runtime 未初始
化或推理过程中发生异常时返回 None。

示例:

outputs = rknn_lite.inference(inputs=[img])
if outputs is None:
    print('Inference failed')
else:
    show_top5(outputs)

长时推理循环中如需降低内存分配,可开启输出复用:

for frame in frames:
    outputs = rknn_lite.inference(
        inputs=[frame],
        reuse_outputs=True
    )
    show_top5(outputs) # 用完即弃,结果在下次推理前消费完毕

参考输出:

-----TOP 5-----
[812]: 0.999442994594574
[404]: 0.0004096269840374589
[657]: 3.284541890025139e-05
[833]: 2.6112385967280716e-05
[895]: 1.8509887013351545e-05

使用说明:

调用前必须先成功执行 init_runtime() ;否则返回 None 。

inputs 、 data_type 、 data_format 和 inputs_pass_through 会传递给 Runtime 的输入设置逻辑。

设置输入、执行模型或获取输出过程中发生异常时,接口返回 None 。

当 get_frame_id=False 时返回普通输出列表;当 get_frame_id=True 时,在输出列表末尾追加运行返回的 Frame ID。

reuse_outputs 默认为 False ,返回数组拥有独立内存,跨调用有效;仅在明确需要降低内存分配时开启 reuse_outputs=True ,此时返回的是内部复用缓冲视图,会被下次推理覆盖,需保留结果时应先拷⻉。

推理成功后,再根据模型类型执行相应后处理。

3.4 设备、版本和平台查询

list_devices

API list_devices
功能 枚举当前可通过 ADB 和 NTB 访问的设备,并打印设备列表。
参数 无
返回值 (adb_devices, ntb_devices):两个 list。同时出现在 NTB 列表中的设备会从 ADB 返回列表中
移除。

示例:

adb_devices, ntb_devices = rknn_lite.list_devices()

get_sdk_version

API get_sdk_version
功能 获取 SDK 版本信息。
参数 无
返回值 正常返回 sdk_version 字符串;Runtime 未初始化或查询失败时返回 None。

调用该接口前必须先成功完成 Runtime 初始化。 init_runtime() 又要求模型已加载,因此标准顺序为load_rknn() → init_runtime() → get_sdk_version() 。

示例:

sdk_version = rknn_lite.get_sdk_version()
if sdk_version is None:
    print('Get SDK version failed')

参考返回信息:

I RKNN: [10:47:23.097] RKNN Runtime Information:
librknnrt version: 1.2.0b1
(a47985372@2021-12-06T10:20:14)

I RKNN: [10:47:23.097] RKNN Driver Information:
version: 0.6.2

I RKNN: [10:47:23.098] RKNN Model Information:
version: 1,
toolkit version: 1.1.2
(compiler version: 1.1.2b13
(1e5726f57@2021-11-29T14:13:55)),
target: RKNPU v2,
target platform: rk3588,
framework name: PyTorch,
framework layout: NCHW

list_support_target_platform

API list_support_target_platform
功能 查询给定 RKNN 模型可运行的芯片平台,或列出当前支持的平台。
参数 rknn_model:RKNN 模型路径,默认值为 None。为 None 时直接调用平台查询函数列出当前支持的
平台。
返回值 正常返回 support_target,类型为 dict;显式指定的模型路径不存在时返回 None。

示例:

support_target = rknn_lite.list_support_target_platform(
    rknn_model='mobilenet_v1.rknn'
)
if support_target is None:
    print('Query target platform failed')

参考结果:

**************************************************
Target platforms filled in RKNN model: ['RK3588']
Target platforms supported by this RKNN model: ['RK3588']
**************************************************

使用说明:

rknn_model=None 时不会触发文件存在性检查,而是直接调用底层平台查询函数。

当显式指定的模型路径不存在时,接口记录错误并返回 None 。

浏览此主题 → · 入门路线 →