函数:set_aipp_by_input_index

C函数原型

aclError aclmdlSetAIPPByInputIndex(uint32_t modelId, aclmdlDataset *dataset, size_t index, const aclmdlAIPP *aippParmsSet)

Python函数

ret = acl.mdl.set_aipp_by_input_index(mdl_handle.model_id, mdl_handle.dataset_in, index, aipp)

函数功能

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

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

抠图->色域转换->减均值/归一化->padding

输入说明

返回值说明

ret:int,错误码。

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

约束说明

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

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

  • 抠图或者缩放或者padding之后,对图片宽、高的校验规则如下,其中,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

注意事项

参考资源

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

表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