aclmdlSetAIPPByInputIndex
函数功能
动态AIPP场景下,根据指定的模型输入的输入index,设置模型推理时的AIPP参数值,同步接口。
动态AIPP支持的几种操作的计算方式及其计算顺序如下:抠图->色域转换->缩放(当前版本不支持缩放)->减均值/归一化->padding。
约束说明
- 经过动态AIPP处理后的图像的宽、高必须与原始模型中输入Shape中的宽、高保持一致。
- 多Batch场景下,根据每个Batch的配置计算出动态AIPP后输出图片的宽、高,经过动态AIPP后每个Batch的输出图片宽、高必须是一致的。计算输出图片宽、高的计算公式如表1所示。
- 抠图或者缩放或者padding之后,对图片宽、高的校验规则如下,其中,aippOutputW、aippOutputH分别表示AIPP输出图片的宽、高,其它参数是aclmdlSetAIPPSrcImageSize、aclmdlSetAIPPScfParams、aclmdlSetAIPPCropParams、aclmdlSetAIPPPaddingParams接口的入参:
表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
函数原型
aclError aclmdlSetAIPPByInputIndex(uint32_t modelId, aclmdlDataset *dataset, size_t index, const aclmdlAIPP *aippParmsSet)
参数说明
参数名 |
输入/输出 |
说明 |
---|---|---|
modelId |
输入 |
模型的ID。 调用aclmdlLoadFromFile接口/aclmdlLoadFromMem接口/aclmdlLoadFromFileWithMem接口/aclmdlLoadFromMemWithMem接口加载模型成功后,会返回模型ID。 |
dataset |
输入 |
模型推理的输入数据的指针。 使用aclmdlDataset类型的数据描述模型推理时的输入数据,输入的内存地址、内存大小用aclDataBuffer类型的数据来描述。 |
index |
输入 |
表示在第几个输入上设置动态AIPP参数。如果该输入没有关联动态AIPP输入,则返回报错。 可调用aclmdlGetAippType查询指定模型的指定输入是否有关联的动态AIPP输入,若有,则本接口的index参数值与aclmdlGetAippType接口的index参数值保持一致;若无,则无需设置动态AIPP参数。 |
aippParmsSet |
输入 |
动态AIPP参数对象的指针。 提前调用aclmdlCreateAIPP接口创建aclmdlAIPP类型的数据。 |
返回值说明
返回0表示成功,返回其它值表示失败。
参考资源
接口调用示例,参见动态AIPP(多个动态AIPP输入)。