---
title: aclmdlSetInputAIPP
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/ascendgraphapi/aclcppdevg_03_0308.html
sourcePath: /source/zh/canncommercial/900/API/ascendgraphapi/aclcppdevg_03_0308.html
indexId: 8354430447f346fba246bb1b5a32da3f76daf9d8d2a86fbfbe5a29565d49ef0272
---
# aclmdlSetInputAIPP

#### 产品支持情况

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


#### 功能说明

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

动态AIPP支持的几种操作的计算方式及其计算顺序如下：抠图->色域转换->减均值/归一化->padding。


#### 函数原型

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


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| modelId | 输入 | 模型的ID。 调用aclmdlLoadFromFile接口/aclmdlLoadFromMem接口/aclmdlLoadFromFileWithMem接口/aclmdlLoadFromMemWithMem接口加载模型成功后，会返回模型ID。 |
| dataset | 输入 | 模型推理的输入数据的指针。类型定义请参见aclmdlDataset。 使用aclmdlDataset类型的数据描述模型推理时的输入数据，输入的内存地址、内存大小用aclDataBuffer(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/runtimeapi/aclcppdevg\_03\_1430.html)类型的数据来描述。 |
| index | 输入 | 标识动态AIPP输入的输入index。 多个动态AIPP输入的场景下，用户可调用aclmdlGetAippType接口获取指定模型输入所关联的动态AIPP输入的输入index。 为保证向前兼容，如果明确只有一个动态AIPP输入，可调用aclmdlGetInputIndexByName接口获取，输入名称固定为ACL\_DYNAMIC\_AIPP\_NAME。 |
| aippParmsSet | 输入 | 动态AIPP参数对象的指针。类型定义请参见aclmdlAIPP。 提前调用aclmdlCreateAIPP接口创建aclmdlAIPP类型的数据。 |


#### 返回值说明

返回0表示成功，返回其他值表示失败，请参见aclError。


#### 约束说明

- 经过动态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 |


#### 接口调用示例

接口调用流程及示例，参见模型动态AIPP推理(https://www.hiascend.comdocument/detail/zh/canncommercial/900/programug/acldevg/aclcppdevg_000036.html)。
