---
title: 函数：set_input_aipp
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/aclpythondevg_01_0183.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/aclpythondevg_01_0183.html
indexId: aa3c0157cdce8076fe895acf83ffe62781686a36d3527a4b45fb880f9f1ad27975
---
# 函数：set_input_aipp

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | x |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |


#### 功能说明

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

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

1. 抠图
2. 色域转换
3. 缩放（当前版本不支持缩放）
4. 减均值/归一化
5. 补边


#### 函数原型

- 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。 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 | int，表示模型的输入数据的指针地址，使用aclmdlDataset类型的数据描述模型推理时的输入数据，输入的内存地址、内存大小用aclDataBuffer类型的数据来描述。 |
| index | int，标识动态AIPP输入的输入index。 多个动态AIPP输入的场景下，用户可调用acl.mdl.get\_aipp\_type接口获取指定模型输入所关联的动态AIPP输入的输入index。 为保证向前兼容，如果明确只有一个动态AIPP输入，可调用acl.mdl.get\_input\_index\_by\_name接口获取，输入名称固定为“ascend\_dynamic\_aipp\_data”。 |
| aipp\_parms\_set | int，动态AIPP参数对象的指针地址，需提前调用acl.mdl.create\_aipp接口创建aclmdlAIPP类型的数据。 |


#### 返回值说明

| 返回值 | 说明 |
| --- | --- |
| ret | int，错误码 返回0表示成功。 返回其它值(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclpythondevg\_01\_0911.html)表示失败。 |


#### 约束说明

- 经过动态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
接口的入参。


#### 参考资源

接口调用流程与示例，参见动态AIPP（单个动态AIPP输入）(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/aclpythondevg_0041.html)。


**表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 |
