Toybrick

标题: 有关模型调用的问题 [打印本页]

作者: MadDog    时间: 2023-1-28 21:57
标题: 有关模型调用的问题
大家好:
我在调用一个模型进行人像分割处理,我的板卡是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    时间: 2023-1-29 16:53
第二种设置UINT8没有报什么错应该就可以,你可以测试下
作者: MadDog    时间: 2023-2-1 09:57
jefferyzhang 发表于 2023-1-29 16:53
第二种设置UINT8没有报什么错应该就可以,你可以测试下

收到,多谢!我Input_attrs中设定为UINT8的NHWC数据作为输入,模型是吃的。
Output_attr我设定为FLOAT16,无论是NHWC的排布还是NCHW的排布,输出的结果是对的。
如果设定为UINT8,无论是NHWC的排布还是NCHW的排布,都不报错,都能输出结果,但是结果排布规律好像不对,不知你们是否知道类似现象。
谢谢
作者: jefferyzhang    时间: 2023-2-1 11:58
Output_attr设定为FLOAT16输出就是反量化过的fp16,你原始模型输出什么格式?。
设定UINT8要把反量化参数用进去才是对的




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3