函数:get_input_size_by_index
函数:get_desc
| C函数原型 | aclError **aclmdlGetDesc(**aclmdlDesc *modelDesc, uint32_t modelId) |
|---|---|
| Python函数 | ret = acl.mdl.get_desc(model_desc, model_id) |
| 函数功能 | 根据模型ID获取该模型的aclmdlDesc类型数据。同步接口。 |
| 输入说明 | model_desc:int,aclmdlDesc类型数据的指针地址。 model_id:int,模型ID。 |
| 返回值说明 | ret:int,错误码 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
父主题: aclmdlDesc
函数:get_num_inputs
| C函数原型 | size_t **aclmdlGetNumInputs(**aclmdlDesc *modelDesc) |
|---|---|
| Python函数 | size = acl.mdl.get_num_inputs(model_desc) |
| 函数功能 | 根据aclmdlDesc类型的数据,获取模型的输入个数。同步接口。 |
| 输入说明 | model_desc:int,aclmdlDesc类型数据的指针地址。 |
| 返回值说明 | size:int,模型的输入个数。 |
| 约束说明 | 无 |
父主题: aclmdlDesc
函数:get_num_outputs
| C函数原型 | size_t **aclmdlGetNumOutputs(**aclmdlDesc *modelDesc) |
|---|---|
| Python函数 | size = acl.mdl.get_num_outputs(model_desc) |
| 函数功能 | 根据aclmdlDesc类型的数据,获取模型的输出个数。同步接口。 |
| 输入说明 | model_desc:int,aclmdlDesc类型数据的指针地址。 |
| 返回值说明 | size:int,模型的输出个数。 |
| 约束说明 | 无 |
父主题: aclmdlDesc
函数:get_input_size_by_index
| C函数原型 | size_t **aclmdlGetInputSizeByIndex(**aclmdlDesc *modelDesc, size_t index) |
|---|---|
| Python函数 | size = acl.mdl.get_input_size_by_index(model_desc, index) |
| 函数功能 | 根据aclmdlDesc类型的数据,获取指定输入的大小,单位为Byte。同步接口。 |
| 输入说明 | model_desc:int,aclmdlDesc类型数据的指针地址。 需提前调用acl.mdl.create_desc接口创建aclmdlDesc类型的数据。 index:int,指定获取第几个输入的大小,index值从0开始。 |
| 返回值说明 | size:int,返回指定输入的大小,单位是Byte。 针对动态Batch、动态分辨率(宽高)的场景,返回最大档位对应的输入的大小;静态场景下,返回指定输入的大小。单位是Byte。 |
| 约束说明 | 无 |
父主题: aclmdlDesc
函数:get_output_size_by_index
| C函数原型 | size_t **aclmdlGetOutputSizeByIndex(**aclmdlDesc *modelDesc, size_t index) |
|---|---|
| Python函数 | size = acl.mdl.get_output_size_by_index(model_desc, index) |
| 函数功能 | 根据aclmdlDesc类型的数据,获取指定输出的大小,单位为Byte。同步接口。 |
| 输入说明 | model_desc:int,aclmdlDesc类型数据的指针地址。需提前调用acl.mdl.create_desc接口创建aclmdlDesc类型的数据。 index:int,指定获取第几个输出的大小,index值从0开始。 |
| 返回值说明 | size:int,返回指定输出的大小,单位是Byte。 针对动态Batch、动态分辨率(宽高)的场景,返回最大档位对应的输出的大小。静态场景下,返回指定输出的大小。单位是Byte。 |
| 约束说明 | 如果通过本接口获取的大小为0,有可能是由于输出Shape的范围不确定,当前支持以下两种处理方式: - 方式一:系统内部自行申请对应index的输出内存,节省内存,但内存数据使用结束后,需由用户释放内存,同时,系统内部申请内存时涉及内存拷贝,可能涉及性能损耗。 调用create_data_buffer接口创建存放对应index输出数据的aclDataBuffer类型时,可在data参数处传入nullptr,表示创建一个空的aclDataBuffer类型,然后在模型执行过程中,系统内部自行计算并申请该index输出的内存。 - 方式二:用户预估输出内存大小,并申请内存,由用户自行管理内存,但内存大小可能不够或超出,不够时系统会校验报错,超出时会浪费内存。 用户需先根据实际情况预估一块较大的输出内存,在模型执行过程中,系统会校验用户指定的输出内存大小是否符合要求,如果不符合要求,系统会返回报错,并在报错信息中提示具体需要多大的输出内存。您可以通过以下两种方式查看报错: - 获取应用类日志,查看ERROR级别的报错,如何获取日志请参见《日志参考》。 - 在应用程序中调用函数:get_recent_err_msg接口获取报错。 |
父主题: aclmdlDesc
函数:get_input_dims
| C函数原型 | aclError aclmdlGetInputDims(const aclmdlDesc *modelDesc, size_t index, aclmdlIODims *dims) |
|---|---|
| Python函数 | dims, ret = acl.mdl.get_input_dims(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类型数据的指针地址。 index:int,指定获取第几个输入的dims,index值从0开始。 |
| 返回值说明 | dims:dict,针对多batch或多种宽高的场景,按照该字典的数组返回其支持的最大档的组合。 text<br>dims = {<br>"name": xxx, #tensor name<br>"dimCount":xxx,#shape中的维度个数<br>"dims": [xx, xx, xx] # 维度信息<br>}<br>针对动态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}${随机字符串} ”格式(如果转换后的tensor的name与模型中已有的tensor的name冲突,则会在转换后的name尾部增加“${随机字符串} ”,否则不会增加随机字符串),并在转换后的name与原name之间建立映射关系,用户可调用acl.mdl.get_tensor_real_name接口,传入转换后的name,获取原name(若向接口传入原name,则获取的还是原name);若tensor的name长度小于或等于127,则在输出的dims.name时,按tensor的name输出。 ret:int,错误码。 - 返回0表示成功。 - 返回其它值表示失败。 |
| 约束说明 | 无 |
表1 静态AIPP场景下的维度定义规则
| 图像格式 | Format参考格式 | 维度定义规则 |
|---|---|---|
| YUV420SP_U8 | NHWC | n,h,w,c |
| XRGB8888_U8 | NHWC | n,h,w,c |
| RGB888_U8 | NHWC | n,h,w,c |
| YUV400_U8 | NHWC | n,h,w,c |
| ARGB8888_U8 | NHWC | n,h,w,c |
| YUYV_U8 | NHWC | n,h,w,c |
| YUV422SP_U8 | NHWC | n,h,w,c |
| AYUV444_U8 | NHWC | n,h,w,c |
父主题: aclmdlDesc
函数: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类型数据的指针地址。 index:int,指定获取第几个输入的大小,index值从0开始。 |
| 返回值说明 | dims:dict,针对多batch或多种宽高的场景,按照该字典的数组返回其支持的最大档的组合。 text<br>dims = {<br>"name": xxx, #tensor name<br>"dimCount":xxx,#shape中的维度个数<br>"dims": [xx, xx, xx] # 维度信息<br>}<br>针对动态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}${随机字符串} ”格式(如果转换后的tensor的name与模型中已有的tensor的name冲突,则会在转换后的name尾部增加“${随机字符串} ”,否则不会增加随机字符串),并在转换后的name与原name之间建立映射关系,用户可调用acl.mdl.get_tensor_real_name接口,传入转换后的name,获取原name(若向接口传入原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" |
父主题: aclmdlDesc
在线提单