CANN/ge AIPP人工智能预处理
2026/9/10 16:45:33 网站建设 项目流程

AIPP

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

本节介绍构图过程中如何开启AIPP特性。

IPV350不支持AIPP特性。

功能介绍

AIPP(Artificial Intelligence Pre-Processing)人工智能预处理,用于在AI Core上完成图像预处理,包括色域转换(转换图像格式)、图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)。AIPP区分为静态AIPP和动态AIPP,只能二选一,不能同时支持。

  • 静态AIPP:模型编译时设置AIPP模式为静态,同时设置AIPP参数,模型生成后,AIPP参数值被保存在离线模型中,每次模型推理过程采用固定的AIPP预处理参数(无法修改)。
  • 动态AIPP:模型编译时设置AIPP模式为动态,每次模型推理前,根据需求,在执行模型前设置动态AIPP参数值,然后在模型执行时可使用不同的AIPP参数。动态AIPP在根据业务要求改变预处理参数的场合下使用(如不同摄像头采用不同的归一化参数,输入图片格式需要兼容YUV420和RGB等)。

关于AIPP功能的详细介绍请参考《ATC离线模型编译工具》。

使用方法

下面介绍如何在模型构建时支持AIPP功能:

  1. Data算子输入数据的Channel维度的元素个数和图片实际保持一致。

    auto shape_data = vector<int64_t>({ 1,10,12,12 }); // 创建TensorDesc TensorDesc desc_data(ge::Shape(shape_data), FORMAT_NCHW, DT_FLOAT16); // 创建Data算子(输入节点) auto data = op::Data("data"); // 给Data算子的输入张量描述符赋值 data.update_input_desc_x(desc_data); data.update_output_desc_y(desc_data);
  2. 准备AIPP配置文件,配置说明请参考《ATC离线模型编译工具》,下面给出一些配置示例:

    静态AIPP配置文件示例:

    aipp_op { aipp_mode:static # 表示静态AIPP input_format:YUV420SP_U8 csc_switch:true var_reci_chn_0:0.00392157 var_reci_chn_1:0.00392157 var_reci_chn_2:0.00392157 }

    动态AIPP配置文件示例(除了以下字段外,其他无需配置):

    aipp_op { aipp_mode:dynamic # 表示动态AIPP related_input_rank: 0 # 可选,标识对模型的第几个输入做AIPP处理,从0开始,默认为0 max_src_image_size:752640 # 输入图像最大的size,动态AIPP必须配置 }
  3. 模型编译时,在aclgrphBuildModel接口options中设置INSERT_OP_FILEINPUT_FORMAT

    void PrepareOptions(std::map<AscendString, AscendString>& options) { options.insert({ {ge::ir_option::EXEC_DISABLE_REUSED_MEMORY, "1"}, {ge::ir_option::INSERT_OP_FILE, PATH + "aipp_nv12_img.cfg"}, {ge::ir_option::INPUT_FORMAT, "NCHW"} }); }
  4. 编译生成的离线模型自动插入aipp算子。

使用注意事项

  • 如果用户设置了静态AIPP功能,同时又通过INPUT_SHAPE设置了动态shape范围参数,则:

    如果模型只有一个输入,该场景不支持;如果模型有多个输入,则必须对不同的输入节点进行设置,比如一个输入节点设置静态AIPP,另外一个节点设置动态shape。

  • 如果用户设置了静态AIPP功能,同时又通过DYNAMIC_BATCH_SIZE设置了动态分辨率(输入图片的宽和高不确定):

    该场景下,AIPP配置文件中不能开启Crop和Padding功能,并且需要将配置文件中的src_image_size_w和src_image_size_h取值设置为0。

  • 如果用户设置了动态AIPP功能,同时又通过INPUT_SHAPE设置了动态shape范围参数,则AIPP输出的宽和高要在INPUT_SHAPE所设置的范围内。

  • 如果用户设置了动态AIPP功能,同时又通过DYNAMIC_BATCH_SIZE设置了动态batch_size:

    实际推理时,调用aclmdlSetInputAIPP接口,设置动态AIPP相关参数值时,需确保batch_size要设置为最大Batch数。接口详细说明请参见《GE图引擎 API》中的“C语言接口 > 模型管理和单算子调用接口 >模型管理 > 模型执行 > aclmdlSetInputAIPP”。

  • 如果用户设置了动态AIPP功能,同时又通过DYNAMIC_IMAGE_SIZE设置了动态分辨率(输入图片的宽和高不确定):

    实际推理时,调用aclmdlSetInputAIPP接口,设置动态AIPP相关参数值时,不能开启Crop和Padding功能。该场景下,还需要确保通过aclmdlSetInputAIPP接口设置的宽和高与aclmdlSetDynamicHWSize接口设置的宽、高相等,都必须设置成动态分辨率最大档位的宽、高。接口详细说明请参见《GE图引擎 API》中的“C语言接口 > 模型管理和单算子调用接口 > 模型管理 > 模型执行”章节。

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询