函数:set_input_aipp
产品支持情况
产品 |
是否支持 |
---|---|
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
|
√ |
功能说明
动态AIPP场景下,根据指定的动态AIPP输入的输入index,设置模型推理时的AIPP参数值。
动态AIPP支持的几种操作的计算方式及其计算顺序如下:
- 抠图
- 色域转换
- 缩放(当前版本不支持缩放)
- 减均值/归一化
- 补边
函数原型
- C函数原型
1
aclError aclmdlSetInputAIPP(uint32_t modelId, aclmdlDataset *dataset, size_t index, const aclmdlAIPP *aippParmsSet)
- python函数
1
ret = acl.mdl.set_input_aipp(model_id, dataset, index, aipp_parms_set)
参数说明
参数名 |
说明 |
---|---|
model_id |
int,模型的ID, 可在以下接口成功加载模型后获取到模型ID。 |
dataset |
int,表示模型的输入数据的指针地址,使用aclmdlDataset类型的数据描述模型推理时的输入数据,输入的内存地址、内存大小用aclDataBuffer类型的数据来描述。 |
index |
int,标识动态AIPP输入的输入index。
|
aipp_parms_set |
int,动态AIPP参数对象的指针地址,需提前调用acl.mdl.create_aipp接口创建aclmdlAIPP类型的数据。 |
返回值说明
返回值 |
说明 |
---|---|
ret |
int,错误码
|
约束说明
- 经过动态AIPP处理后的图像的宽、高必须与原始模型中输入Shape中的宽、高保持一致。
- 多Batch场景下,根据每个Batch的配置计算出动态AIPP后输出图片的宽、高,经过动态AIPP后每个Batch的输出图片宽、高必须是一致的。计算输出图片宽、高的计算公式如表1所示。
- 抠图或者缩放或者补边之后,对图片宽、高的校验规则如下,其中,aippOutputW、aippOutputH分别表示AIPP输出图片的宽、高,其它参数是acl.mdl.set_aipp_src_image_size、acl.mdl.set_aipp_crop_params、acl.mdl.set_aipp_padding_params接口的入参。
抠图 |
缩放 |
补边(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 |