[RKNN学习记录]RK3588使用ADB进行rknn模型的内存和性能评估

准备工作:
test.py文件,内容如下(target填写自己的芯片平台,device_id填写自己开发板的adb地址)

    ret = rknn.init_runtime(target='rk3588', device_id='10.102.149.127:5555', perf_debug=True, eval_mem=True)
from rknn.api import RKNN
RKNN_MODEL = './model.rknn'
if __name__ == '__main__':
    # 创建RKNN
    # 如果测试遇到问题,请开启verbose=True,查看调试信息。
    #rknn = RKNN(verbose=True)
    rknn = RKNN()

    # 导入RKNN模型,path参数指定rknn模型路径
    print('--> Loading model')
    ret = rknn.load_rknn(path=RKNN_MODEL)
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')

    # 初始化运行时环境,指定连接的板卡NPU平台,device_id指定前面adb连接的板卡设备ID
    # perf_debug开启进行性能评估时开启debug模式,eval_mem进入内存评估模式
    print('--> Init runtime environment')
    ret = rknn.init_runtime(target='rk3588', device_id='10.102.149.127:5555', perf_debug=True, eval_mem=True)
    if ret != 0:
        print('Init runtime environment failed!')
        exit(ret)
    print('done')

    # 模型性能进行评估,默认is_print是true,打印内存使用情况
    print('--> eval_perf')
    rknn.eval_perf()
    print('done')

    # 调试,模型性能进行评估,默认is_print是true,打印内存使用情况
    print('--> eval_memory')
    rknn.eval_memory()
    print('done')

    rknn.release()

输出如下图
在这里插入图片描述
踩坑实录:
报错:E RKNNAPI: rknn_init, msg_load_ack fail, ack = 1(ACK_FAIL), expect 0(ACK_SUCC)!
E init_runtime: Catch exception when init runtime!
E init_runtime: Traceback (most recent call last):
E init_runtime: File “rknn/api/rknn_base.py”, line 2506, in rknn.api.rknn_base.RKNNBase.init_runtime
E init_runtime: File “rknn/api/rknn_runtime.py”, line 391, in rknn.api.rknn_runtime.RKNNRuntime.build_graph
E init_runtime: Exception: RKNN init failed. error code: RKNN_ERR_MODEL_INVALID

在这里插入图片描述
解决方法:
升级API、rknn_server、rknnrt至最新版本
到下面连接下载
https://github.com/airockchip/rknn-toolkit2/tree/master/rknpu2/runtime/Linux
在这里插入图片描述

下载librknnrt.so并复制到开发板上的/usr/lib/
在这里插入图片描述

下载rknn_server并复制到开发板上的/usr/bin/
在这里插入图片描述
下载rknn_toolkit2对应你的python的版本到物理机上,执行pip install xxx.whl

在这里插入图片描述
更新完后版本如上

### RK3588 实时推理实现方法 #### 使用YOLOv5模型进行实时推理 对于RK3588平台而言,可以通过将YOLOv5模型转换为RKNN格式来实现实时推理。具体操作如下: 为了使YOLOv5能够在RK3588平台上运行,需先将其转换为`.rknn`格式并放置于指定路径下[^1]。此过程涉及使用工具链完成模型的量化与优化工作。 一旦模型准备完毕,则可通过ADB命令借助USB数据线把训练好的模型从个人电脑传送到开发板相应目录内;不过需要注意的是,某些实例已经预置了所需的模型文件,因此不一定非要执行这一步骤。 实际应用中,通过调用RKNN API接口能够高效地加载模型并对输入图像实施前向传播计算得出预测框位置以及类别概率分布情况。在此基础上进一步处理可获得最终的目标检测结果,并支持将这些信息作为水印叠加回原始图帧之上形成新的输出文件[^2]。 针对性能评测环节,在特定硬件配置环境下(例如采用创龙科技出品的支持6TOPS算力等级NPUs特性的TL3588-EVM工业级评估主板),连续重复上述流程十轮次之后取其平均值即得到单张图片分析所需时间开销的数据指标。 此外还存在其他框架如Apache TVM用于加速神经网络运算表现的例子,其中涵盖了ONNX等多种主流深度学习架构下的模型编译部署方案介绍[^3]。 最后值得注意的一点是GitHub上有开源项目提供了基于C语言封装过的RKNN SDK函数库以便开发者更便捷地集成进自己的应用程序当中去[^4]。 ```c // 示例代码片段展示如何初始化释放资源 #include "rknn_api.h" int main() { rknn_context ctx; // 加载模型 int ret = rknn_init(&ctx, "./model/yolov5s.rknn", 0, 0, NULL); if (ret < 0) { /* 错误处理 */ } // ... 执行推断 ... // 清理环境 rknn_destroy(ctx); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值