下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

AIPP

本节介绍构图过程中如何使能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维度的元素个数和图片实际保持一致。
    1
    2
    3
    4
    5
    auto shape_data = vector<int64_t>({ 1,10,12,12 });
    TensorDesc desc_data(ge::Shape(shape_data), FORMAT_NCHW, DT_FLOAT16);
    auto data = op::Data("data");
    data.update_input_desc_x(desc_data);
    data.update_output_desc_y(desc_data);
    
  2. 准备AIPP配置文件,配置说明请参考ATC工具使用指南,下面给出一些配置示例:
    静态AIPP配置文件示例:
    1
    2
    3
    4
    5
    6
    7
    8
    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配置文件示例(除了以下字段外,其他无需配置):
    1
    2
    3
    4
    5
    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
    1
    2
    3
    4
    5
    6
    7
    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设置了动态BatchSize:

    实际推理时,调用aclmdlSetInputAIPP接口设置动态AIPP相关参数值时,需确保batchSize要设置为最大Batch数。

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

    实际推理时,调用aclmdlSetInputAIPP接口,设置动态AIPP相关参数值时,不能开启Crop和Padding功能。该场景下,还需要确保通过aclmdlSetInputAIPP接口设置的宽和高与aclmdlSetDynamicHWSize接口设置的宽、高相等,都必须设置成动态分辨率最大档位的宽、高。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词