准备工作:
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
更新完后版本如上