---
title: 函数：set_aipp_by_input_index
description: "动态AIPP场景下，根据指定的模型输入的输入index，设置模型推理时的AIPP参数值。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/aclpythondevg_01_0158.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/aclpythondevg_01_0158.html
indexId: 2d07a7c79155bc4c926a0f8a8ea7f76a3d12f367b1d6b2d9583f13558380622a75
---
# 函数：set_aipp_by_input_index

#### 功能说明

动态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。 acl.mdl.load\_from\_file acl.mdl.load\_from\_mem acl.mdl.load\_from\_file\_with\_mem acl.mdl.load\_from\_mem\_with\_mem |
| 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_params、acl.mdl.set_aipp_crop_params、acl.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输入）(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/aclpythondevg_0042.html)。
