---
title: 概念及使用约束
description: "AIPP(Artificial Intelligence Pre-Processing)用于在AI Core上完成图像预处理，包括色域转换（转换图像格式）、图像归一化（减均值/乘系数）和抠图（指定抠图起始点，抠出神经网络需要大小的图片）等。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/acldevg/aclpythondevg_0040.html
sourcePath: /source/zh/canncommercial/900/programug/acldevg/aclpythondevg_0040.html
indexId: 5a97fc987d97933ea00571bd3922b1853d162066ce175155603c51c756a287c371
---
# 概念及使用约束

#### AIPP是什么

AIPP(Artificial Intelligence Pre-Processing)用于在AI Core上完成图像预处理，包括色域转换（转换图像格式）、图像归一化（减均值/乘系数）和抠图（指定抠图起始点，抠出神经网络需要大小的图片）等。

AIPP区分为静态AIPP和动态AIPP。您只能选择静态AIPP或动态AIPP方式来处理图片，不能同时配置静态AIPP和动态AIPP两种方式。- 静态AIPP：模型转换时设置AIPP模式为静态，同时设置AIPP参数，模型生成后，AIPP参数值被保存在离线模型（*.om文件）中，每次模型推理过程采用固定的AIPP预处理参数（无法修改）。
  如果使用静态AIPP方式，多Batch情况下共用同一份AIPP参数。

- 动态AIPP：模型转换时设置AIPP模式为动态，每次模型推理前，根据需求，在执行模型前设置动态AIPP参数值，然后在模型执行时可使用不同的AIPP参数。
  如果使用动态AIPP方式，多Batch可使用不同的AIPP参数。


#### 使用约束

- 动态AIPP和动态Batch同时使用时：

  - 调用    acl.mdl.create_aipp(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclpythondevg_01_0169.html)
接口设置“batchSize”时，“batchSize”要设置为最大Batch数。
  - 模型中需要进行动态AIPP处理的data节点，其对应的输入内存大小需按照最大Batch来申请。

- 动态AIPP和动态分辨率同时使用时：

  - 若在设置动态AIPP参数时，开启了抠图或缩放或补边功能，则不能与动态分辨率同时使用。
  - 若在设置动态AIPP参数时，未开启抠图或缩放或补边功能，在与动态分辨率同时使用时，需确保通过    acl.mdl.set_aipp_src_image_size(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclpythondevg_01_0176.html)
接口设置的宽和高，与通过    acl.mdl.set_dynamic_hw_size(https://www.hiascend.comdocument/detail/zh/canncommercial/900/API/ascendgraphapi/aclpythondevg_01_0152.html)
接口设置的宽和高相等，都必须设置成模型转换时动态分辨率最大档位的宽和高。
  - 模型中需要进行动态AIPP处理的data节点，其对应的输入内存大小需按照最大分辨率（宽、高）来申请。
- 动态AIPP和动态Shape输入（设置Shape范围）同时使用时，动态AIPP的输出图片宽、高要在所设置的Shape范围内。
- 对同一个模型，AIPP（包括静态AIPP和动态AIPP）与动态维度（ND格式）不能同时使用。
- pyacl还提供了基于DVPP（Digital Vision Pre-Processing）硬件进行媒体数据处理的功能，包括缩放、抠图、格式转换、图片编解码、视频编解码等，功能比AIPP丰富，但对于输入/输出图片、内存有一定的约束。
  基于DVPP的媒体数据处理接口介绍，请参见媒体数据处理（DVPP）。
