下载
中文
注册

函数:get_input_dims_v2

C函数原型

aclError aclmdlGetInputDimsV2(const aclmdlDesc *modelDesc, size_t index, aclmdlIODims *dims)

Python函数

dims, ret = acl.mdl.get_input_dims_v2(model_desc, index)

函数功能

根据模型描述获取模型的输入Tensor的维度信息。

如果模型中含有静态AIPP配置信息,您可以根据实际需要选择acl.mdl.get_input_dims接口或acl.mdl.get.input_dims_v2接口查询维度信息,两者的区别在于:

  • 通过acl.mdl.get_input_dims接口获取的维度信息,各维度的值与输入图像的各维度的值保持一致,详细规则请参见表1

  • 通过acl.mdl.get_input_dims_v2接口获取的维度信息,H维度的值 = 输入图像的H维度值 * 系数,不同图片格式下C维度的值不同,详细规则请参见acl.mdl.get_input_dims_v2接口处的表1,且各维度值相乘的结果值与通过acl.mdl.get_input_size_by_index接口获取的值保持一致。

输入说明

model_desc:int,aclmdlDesc类型数据的指针地址。

需提前调用acl.mdl.create_desc接口创建aclmdlDesc类型的数据。

index:int,指定获取第几个输入的大小,index值从0开始。

返回值说明

dims:dict,针对多batch或多种宽高的场景,按照该字典的数组返回其支持的最大档的组合,具体请参见aclmdlIODims

dims = {
        "name": xxx, #tensor name
        "dimCount":xxx,#shape中的维度个数
        "dims": [xx, xx, xx]   # 维度信息
        }

针对动态Batch、动态分辨率(宽高)的场景,输入Tensor的“dims”中Batch数或宽高为-1,表示其动态可变。

例如,输入Tensor的“format”为NCHW,在动态Batch场景下,动态可变的输入Tensor的“dims”为[-1, 3, 224, 224],在动态分辨率场景下,动态可变的输入Tensor的“dims”为[1, 3, -1, -1]。举例中的斜体部分以实际情况为准。

  • 若Tensor的“name”长度大于127,则在输出dims["name"]时,pyACL会将Tensor的“name”转换为“acl_modelId_${id}_input_${index}_${随机字符串} ”格式并在转换后的“name”与原“name”之间建立映射关系,用户可调用acl.mdl.get_tensor_real_name接口,传入转换后的“name”,获取原“name”(若向接口传入原“name”,则获取的还是原“name”)。
    说明:

    如果转换后的Tensor的“name”与模型中已有的Tensor的“name”冲突,则会在转换后的“name”尾部增加“_${随机字符串} ”,否则不会增加随机字符串。

  • 若Tensor的“name”长度小于或等于127,则在输出的dims["name"]时,按Tensor的“name”输出。

针对静态AIPP场景,本接口针对不同格式的图像,对应NHWC的Format格式,当前接口中明确各个维度的定义规则,如表1所示。

ret:int,错误码。

  • 返回0表示成功。
  • 返回其它值表示失败。

约束说明

表1 动态AIPP场景下的维度定义规则

图像格式

Format参考格式

维度定义规则

YUV420SP_U8

NHWC

"n,h*1.5,w,1"

XRGB8888_U8

NHWC

"n,h,w,4"

RGB888_U8

NHWC

"n,h,w,3"

YUV400_U8

NHWC

"n,h,w,1"

ARGB8888_U8

NHWC

"n,h,w,4"

YUYV_U8

NHWC

"n,h,w,2"

YUV422SP_U8

NHWC

"n,h*2,w,1"

AYUV444_U8

NHWC

"n,h,w,4"