昇腾社区首页
中文
注册

函数:set_aipp_by_input_index

产品支持情况

产品

是否支持

Atlas A3 训练系列产品 / Atlas A3 推理系列产品

Atlas A2 训练系列产品 / Atlas 800I A2 推理产品 /A200I A2 Box 异构组件

Atlas 训练系列产品

Atlas 推理系列产品

Atlas 200I/500 A2 推理产品

Atlas 200/300/500 推理产品

功能说明

动态AIPP场景下,根据指定的模型输入的输入index,设置模型推理时的AIPP参数值。

动态AIPP支持的几种操作的计算方式及其计算顺序如下:

  1. 抠图
  2. 色域转换
  3. 减均值/归一化
  4. 补边

函数原型

  • C函数原型
    1
    aclError aclmdlSetAIPPByInputIndex(uint32_t modelId, aclmdlDataset *dataset, size_t index, const aclmdlAIPP *aippParmsSet)
    
  • python函数
    1
    ret = acl.mdl.set_aipp_by_input_index(model_id, dataset_in, index, aipp)
    

参数说明

参数名

说明

model_id

int,模型ID。

可在以下接口成功加载模型后获取到模型ID。

dataset_in

int,表示模型推理的输入数据的指针地址。

使用aclmdlDataset类型的数据描述模型推理时的输入数据,输入的内存地址、内存大小用aclDataBuffer类型的数据来描述,具体请参见aclmdlDataset

index

int,表示在第几个输入上设置动态AIPP参数。如果该输入没有关联动态AIPP输入,则返回报错。

可调用acl.mdl.get_aipp_type查询指定模型的指定输入是否有关联的动态AIPP输入,如存在关联则本接口的index参数值与acl.mdl.get_aipp_type接口的index参数值保持一致;如不存在则无需设置动态AIPP参数。

aipp

int,动态AIPP参数对象的指针地址。

提前调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据。

返回值说明

返回值

说明

ret

int,错误码,返回0表示成功,返回其它值表示失败。

约束说明

  • 经过动态AIPP处理后的图像的宽、高必须与原始模型输入Shape中的宽、高保持一致。

  • 多Batch场景下,根据每个Batch的配置计算出动态AIPP后输出图片的宽、高,经过动态AIPP后每个Batch的输出图片宽、高必须是一致的。计算输出图片宽、高的计算公式如表1所示。

  • 抠图或者缩放或者补边操作之后,对图片宽、高的校验规则如下,其中,aippOutputW、aippOutputH分别表示AIPP输出图片的宽、高,其它参数是acl.mdl.set_aipp_srcImage_size、acl.mdl.set_aipp_scf_paramsacl.mdl.set_aipp_crop_paramsacl.mdl.set_aipp_padding_params接口的入参,具体请参考表1

    表1 输出图片宽、高计算公式

    抠图

    缩放

    补边(padding)

    动态AIPP输出图片的宽、高

    aippOutputW = srcImageSizeW

    aippOutputH = srcImageSizeH

    aippOutputW = cropSizeW

    aippOutputH = cropSizeH

    aippOutputW = scfOutputSizeW

    aippOutputH = scfOutputSizeH

    aippOutputW = cropSizeW + paddingSizeLeft + paddingSizeRight

    aippOutputH = cropSizeH + paddingSizeTop + paddingSizeBottom

    aippOutputW = srcImageSizeW + paddingSizeLeft + paddingSizeRight

    aippOutputH = srcImageSizeH + paddingSizeTop + paddingSizeBottom

    aippOutputW = scfOutputSizeW + paddingSizeLeft + paddingSizeRight

    aippOutputH = scfOutputSizeH + paddingSizeTop + paddingSizeBottom

    aippOutputW = scfOutputSizeW

    aippOutputH = scfOutputSizeH

    aippOutputW = scfOutputSizeW + paddingSizeLeft + paddingSizeRight

    aippOutputH = scfOutputSizeH + paddingSizeTop + paddingSizeBottom

资源参考

接口调用示例,参见动态AIPP(多个动态AIPP输入)