0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞芯微(EASY EAI)RV1126B 模型转换API说明

广州灵眸科技有限公司 2026-05-06 11:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. API详细说明

1.1 RKNN初始化及释放

在使用RKNN-Toolkit2的所有API接口时,都需要先调用RKNN()方法初始化RKNN对象,不再使用该对象时通过调用该对象的release()方法进行释放。

初始化RKNN对象时,可以设置verbose和verbose_file参数,以打印详细的日志信息。其中verbose参数指定是否要打印详细日志信息;如果设置了verbose_file参数,且verbose参数值为True,日志信息还将写到该参数指定的文件中。

举例如下:

# 打印详细的日志信息
rknn = RKNN(verbose=True)

…

rknn.release()

1.2 模型配置


在构建RKNN模型之前,需要先对模型进行通道均值、量化图片RGB2BGR转换、量化类型等的配置,这些操作可以通过config接口进行配置。

v2-8d9bf3259906ecf23eaed3df08b3b0fb_720w.webp

举例如下:

# model config
rknn.config(mean_values=[[103.94, 116.78, 123.68]],
       std_values=[[58.82, 58.82, 58.82]],
       quant_img_RGB2BGR=True,
       target_platform='rk3566')

1.3 模型加载


RKNN-Toolkit2目前支持Caffe、TensorFlowTensorFlow Lite、ONNX、DarkNet、PyTorch等模型的加载转换,这些模型在加载时需调用对应的接口,以下为这些接口的详细说明。
1.3.1 Caffe模型加载接口

v2-72069950e321348f8aac696bf39fbf51_720w.webp

举例如下:

# 从当前路径加载mobilenet_v2模型
ret = rknn.load_caffe(model='./mobilenet_v2.prototxt',
              blobs='./mobilenet_v2.caffemodel')

1.3.2 TensorFlow模型加载接口

举例如下:

# 从当前目录加载ssd_mobilenet_v1_coco_2017_11_17模型
ret = rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v1_coco_2017_11_17.pb',
                 inputs=['Preprocessor/sub'],
                 outputs=['concat', 'concat_1'],
                 input_size_list=[[300, 300, 3]])

1.3.3 TensorFlow Lite模型加载接口

v2-bf8aa334aaca2758a168cf05f8cc92f0_720w.webp

举例如下:

# 从当前目录加载mobilenet_v1模型
ret = rknn.load_tflite(model='./mobilenet_v1.tflite')

1.3.4 ONNX模型加载

v2-21caa605c4b7950f7f23f97da5cc1802_720w.webp

举例如下:

# 从当前目录加载arcface模型
ret = rknn.load_onnx(model='./arcface.onnx')

1.3.5 DarkNet模型加载接口

v2-ac1215309bb2e7b9914009077708f9fb_720w.webp

举例如下:

# 从当前目录加载yolov3-tiny模型
ret = rknn.load_darknet(model='./yolov3-tiny.cfg',
               weight='./yolov3.weights')

1.3.6 PyTorch模型加载接口

v2-3754dcd31e2c5a08b22a37a7fb5119d7_720w.webp

举例如下:

# 从当前目录加载resnet18模型
ret = rknn.load_pytorch(model='./resnet18.pt',
               input_size_list=[[1,3,224,224]])

1.4 构建RKNN模型

v2-088bb05153d01171419e2d63d050bca0_720w.webp

举例如下:

# 构建RKNN模型,并且做量化
ret = rknn.build(do_quantization=True, dataset='./dataset.txt')

1.5 导出RKNN模型


通过本工具构建的RKNN模型通过该接口可以导出存储为RKNN模型文件,用于模型部署。

v2-70345d1487795df13b35a10b188924a5_720w.webp

举例如下:

# 将构建好的RKNN模型保存到当前路径的mobilenet_v1.rknn文件中
ret = rknn.export_rknn(export_path='./mobilenet_v1.rknn')

1.6 加载RKNN模型

v2-81e4a762f01efd3e54bb2fb2b6705756_720w.webp

举例如下:

# 从当前路径加载mobilenet_v1.rknn模型
ret = rknn.load_rknn(path='./mobilenet_v1.rknn')

1.7 初始化运行时环境


在模型推理或性能评估之前,必须先初始化运行时环境,明确模型的运行平台(具体的目标硬件平台或软件模拟器)。

v2-4f0e2ba0a1fe9d9bd220a88540bea111_720w.webp

举例如下:

# 初始化运行时环境
ret = rknn.init_runtime(target='rk3566')

1.8 模型推理


在进行模型推理前,必须先构建或加载一个RKNN模型。

v2-b3f0ba199f070da0322aed6e4cc209c8_720w.webp

举例如下:

对于分类模型,如mobilenet_v1,代码如下(完整代码参考example/tflite/mobilent_v1):

# 使用模型对图片进行推理,得到TOP5结果
outputs = rknn.inference(inputs=[img])
show_outputs(outputs)

输出的TOP5结果如下:

-----TOP 5-----
[ 156] score:0.928223 class:"Shih-Tzu"
[ 155] score:0.063171 class:"Pekinese, Pekingese, Peke"
[ 205] score:0.004299 class:"Lhasa, Lhasa apso"
[ 284] score:0.003096 class:"Persian cat"
[ 285] score:0.000171 class:"Siamese cat, Siamese"

1.9 评估模型性能

v2-5f947202c0e2180d23075383a403433e_720w.webp

举例如下:

# 对模型性能进行评估
perf_detail = rknn.eval_perf()

1.10 获取内存使用情况

v2-d0b52fa3035376c922587f4143eb587c_720w.webp

举例如下:

# 对模型内存使用情况进行评估
memory_detail = rknn.eval_memory()

如examples/caffe/mobilenet_v2,它在RK3588上运行时内存占用情况如下:

======================================================
Memory Profile Info Dump
======================================================
NPU model memory detail(bytes):
Weight Memory: 3.53 MiB
Internal Tensor Memory: 1.67 MiB
Other Memory: 473.00 KiB
Total Memory: 5.66 MiB

INFO: When evaluating memory usage, we need consider
the size of model, current model size is: 4.09 MiB
======================================================

1.11 查询SDK版本

v2-7666d533ec1971ddb04b0eeedecca836_720w.webp

举例如下:

# 获取SDK版本信息
sdk_version = rknn.get_sdk_version()
print(sdk_version)

返回的SDK信息类似如下:

==============================================
RKNN VERSION:
API: 1.5.2 (8babfea build@2023-08-25T02:31:12)
DRV: rknn_server: 1.5.2 (8babfea build@2023-08-25T10:30:12)
DRV: rknnrt: 1.5.3b13 (42cbca6f5@2023-10-27T10:13:21)
==============================================

1.12 混合量化


1.12.1 hybrid_quantization_step1
使用混合量化功能时,第一阶段调用的主要接口是hybrid_quantization_step1,用于生成临时模型文件(.model)、数据文件(.data)和量化配置文件
(.quantization.cfg)。接口详情如下:

v2-c8fee8b94e4515a46810e52f26b1cce5_720w.webp

举例如下:

# 调用hybrid_quantization_step1 产生量化配置文件
ret = rknn.hybrid_quantization_step1(dataset='./dataset.txt')

1.12.2 hybrid_quantization_step2
用于使用混合量化功能时生成RKNN模型,接口详情如下:

v2-20a83dccc9d0be63bb0d05d92a9bb5d6_720w.webp

举例如下:

# Call hybrid_quantization_step2 to generate hybrid quantized RKNN model
ret = rknn.hybrid_quantization_step2(
           model_input='./ssd_mobilenet_v2.model',
           data_input='./ssd_mobilenet_v2.data',
           model_quantization_cfg='./ssd_mobilenet_v2.quantization.cfg')

1.13 量化精度分析


该接口的功能是进行浮点、量化推理并产生每层的数据,并进行量化精度分析。

v2-aeb2b31e0783f924b38ae5a1dfee2e66_720w.webp

举例如下:

# Accuracy analysis
ret = rknn.accuracy_analysis(inputs=['./dog_224x224.jpg'])

1.14 获取设备列表

v2-9ae6a497358a5f932f4ceb71b9bcd9bb_720w.webp

举例如下:

rknn.list_devices()

返回的设备列表信息如下:

*************************
all device(s) with adb mode:
VD46C3KM6N
*************************

注:使用多设备时,需要保证它们的连接模式都是一致的,否则会引起冲突,导致设备连接失败。

1.15 导出加密模型


该接口的功能是将普通的RKNN模型进行加密,得到加密后的模型。

v2-0a21ae27fc11a78cf8cfb9943f8d7c7d_720w.webp

举例如下:

ret = rknn.export_encrypted_rknn_model('test.rknn')

1.16 注册自定义算子


该接口的功能是注册一个自定义算子。

v2-6eea2c38b3ea9a1bb8185ea3d54d7cfe_720w.webp

举例如下:

import numpy as np
from rknn.api.custom_op import get_node_attr
class cstSoftmax:
  op_type = 'cstSoftmax'
  def shape_infer(self, node, in_shapes, in_dtypes):
    out_shapes = in_shapes.copy()
    out_dtypes = in_dtypes.copy()
    return out_shapes, out_dtypes
  def compute(self, node, inputs):
    x = inputs[0]
    axis = get_node_attr(node, 'axis')
    x_max = np.max(x, axis=axis, keepdims=True)
    tmp = np.exp(x - x_max)
    s = np.sum(tmp, axis=axis, keepdims=True)
    outputs = [tmp / s]
    return outputs

ret = rknn.reg_custom_op(cstSoftmax)

1.17 生成C++部署示例

v2-96b6b4f8dd836be1277347e2ef7b1dee_720w.webp

举例如下:

ret = rknn.codegen(output_path='./rknn_app_demo',
            inputs=['./mobilenet_v2/dog_224x224.jpg'],
            overwrite=True)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1821

    文章

    50376

    浏览量

    267087
  • 开发板
    +关注

    关注

    26

    文章

    6435

    浏览量

    121231
  • 瑞芯微
    +关注

    关注

    27

    文章

    863

    浏览量

    54682
  • EASY-EAI灵眸科技

    关注

    4

    文章

    111

    浏览量

    3729
  • RV1126B
    +关注

    关注

    0

    文章

    100

    浏览量

    255
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    (EASY EAI)RV1126B 音频输入

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 12-18 13:41 2628次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输入

    (EASY EAI)RV1126B PWM使用

    1.PWM简介1.1开发板PWM资源1.2查找PWM节点rv1126b的pwm资源表如下:【PWM1CH0】对应的是pwm1_4ch_0,寄存地址为20700000。【PWM1CH1】对应
    的头像 发表于 01-06 10:49 8537次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> PWM使用

    (EASY EAI)RV1126B 音频输出

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 04-01 17:13 8583次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输出

    EASY EAI Nano-TB(RV1126B)开发板试用】+初识篇

    Nano-TB是灵眸科技研发的一款应用于AIoT领域的开发板,它基于RV1126B处理器,集成了4个Cortex-A53及独立的NEON协处理器,它支持4K@30fps的H.
    发表于 10-25 22:06

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目

    接上文【EASY EAI Nano-TB(RV1126B)开发板试用】通过wifi连接,使用ssh登录EASY EAI Nano-TB(
    发表于 11-02 18:34

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

    0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动 EASYEAINano-TB(RV1126B
    发表于 11-03 10:00

    EASY EAI Nano-TB(RV1126B)开发板试用】+1、开箱上电

    ,避免因接触不良导致显示或采集异常。 2 硬件解析:强劲AI核心与丰富接口 2.1 核心处理器性能 EASY EAI Nano-TB开发板的核心基于
    发表于 11-19 21:39

    EASY EAI Nano-TB(RV1126B)开发板试用】介绍、系统安装

    ,并介绍了系统镜像安装部署的相关流程。 介绍 EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。 核心板基于
    发表于 12-23 18:05

    RV1126&RV1109替换RV1126B-P说明_V1.0

    RV1126&RV1109替换RV1126B-P说明_V1.0目前
    发表于 08-11 12:02 2次下载

    RV1126系列选型指南:从RV1126RV1126B,一文看懂升级差异

    2025年7月,正式发布新一代AI视觉芯片RV1126B。作为其金牌方案商,EASYEAI灵眸科技同步推出搭载该芯片的AIoT核心板EAI11
    的头像 发表于 09-04 10:50 5272次阅读
    <b class='flag-5'>RV1126</b>系列选型指南:从<b class='flag-5'>RV1126</b>到<b class='flag-5'>RV1126B</b>,一文看懂升级差异

    【免费试用】EASY EAI Nano-TB(RV1126B)开发套件评测

    EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。核心板基于RV1126B处理器设计,并引入了新
    的头像 发表于 09-23 08:09 1307次阅读
    【免费试用】<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b> Nano-TB(<b class='flag-5'>RV1126B</b>)开发套件评测

    RV1126B特性概述

    RV1126BRockchip在2025年第二季度全新推出的Arm架构AI视觉芯片,搭载4核Cortex-A53与自研3Tops算力NPU。全面替代上一代的
    的头像 发表于 10-09 11:22 2262次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126B</b>特性概述

    替代升级实锤!实测RV1126B,CPU性能吊打RV1126

    AI智能芯片迭代提速,推出了全新的Arm架构AI视觉芯片RV1126B,是否替换RV1126,CPU性能是挤牙膏还是大突破。带着这些核
    的头像 发表于 12-11 17:13 2615次阅读
    替代升级实锤!实测<b class='flag-5'>RV1126B</b>,CPU性能吊打<b class='flag-5'>RV1126</b>

    (EASY EAI)RV1126B 人体关键点识别

    的特点。本人员检测算法在数据集表现如下所示:基于EASY-EAI-Nano-TB(RV1126B)硬件主板的运行效率:17个人体关键点索引定义:2.快速上手2.1开发
    的头像 发表于 01-23 10:13 3848次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 人体关键点识别

    (EASY EAI)RV1126B rknn-toolkit-lite2使用方法

    1.rknn-toolkit-lite2介绍RKNN-Toolkit-Lite2是(Rockchip)专为旗下RK系列芯片(如RV1126B、RK3576、RK3588等)打造的
    的头像 发表于 04-22 17:38 647次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> rknn-toolkit-lite2使用方法