Toybrick

有关模型调用的问题

MadDog

中级会员

积分
402
楼主
发表于 2023-1-28 21:57:53    查看: 3166|回复: 3 | [复制链接]    打印 | 只看该作者
大家好:
我在调用一个模型进行人像分割处理,我的板卡是3588,我调用rnkk_api,采用的是外部分配fd的内存使用方式,通过rknn_set_io_mem进行使用。
在这个过程中遇到一个问题:
对于这个模型,我query 输入信息得到是:
index=0, name=x, n_dims=4, dims=[1, 144, 256, 3], n_elems=110592, size=221184, fmt=NHWC, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000, w_stride = 256, size_with_stride = 221184, h_stride = 0

我的输入图像是一个RGB的图像,宽256, 高 144
是否需要我自己将这个图像转换为NHWC布局的FP16的数据块,放在我申请的fd对应的内存中,通过设置input_attr中:
type=RKNN_TENSOR_FLOAT16
fmt=RKNN_TENSOR_NHWC

通过这个创建 rknn_tensor_mem后,通过调用rknn_set_io_mem作为rknn_tensor_mem设置进NPU进行使用

还是可以就将这个RGB的uint8的图像,直接拷贝到fd对应的内存中,然后通过设置input_attr中:
type=RKNN_TENSOR_UINT8
fmt=RKNN_TENSOR_NHWC
通过这个创建 rknn_tensor_mem后,通过调用rknn_set_io_mem作为rknn_tensor_mem设置进NPU进行使用
直接将它设置到NPU进行使用?

回复

使用道具 举报

jefferyzhang

版主

积分
13576
沙发
发表于 2023-1-29 16:53:13 | 只看该作者
第二种设置UINT8没有报什么错应该就可以,你可以测试下
回复

使用道具 举报

MadDog

中级会员

积分
402
板凳
 楼主| 发表于 2023-2-1 09:57:02 | 只看该作者
jefferyzhang 发表于 2023-1-29 16:53
第二种设置UINT8没有报什么错应该就可以,你可以测试下

收到,多谢!我Input_attrs中设定为UINT8的NHWC数据作为输入,模型是吃的。
Output_attr我设定为FLOAT16,无论是NHWC的排布还是NCHW的排布,输出的结果是对的。
如果设定为UINT8,无论是NHWC的排布还是NCHW的排布,都不报错,都能输出结果,但是结果排布规律好像不对,不知你们是否知道类似现象。
谢谢
回复

使用道具 举报

jefferyzhang

版主

积分
13576
地板
发表于 2023-2-1 11:58:56 | 只看该作者
Output_attr设定为FLOAT16输出就是反量化过的fp16,你原始模型输出什么格式?。
设定UINT8要把反量化参数用进去才是对的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表