README.md

Aipp

产品支持情况

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品 ×
Atlas A2 训练系列产品/Atlas A2 推理系列产品 ×
Atlas 200I/500 A2 推理产品 ×
Atlas 推理系列产品 ×
Atlas 训练系列产品 ×

功能说明

  • 算子功能:

    AIPP(Artificial Intelligence Pre-Processing)人工智能预处理,用于在AI Core上完成数据预处理,包括改变图像尺寸、色域转换(转换图像格式)、减均值/乘系数(改变图像像素),数据预处理之后再进行真正的模型推理。目前支持动态AIPP和静态AIPP功能,全量的AIPP功能介绍请参考 《ATC离线模型编译工具》中“高级功能 > 开启AIPP”章节。

  • 计算流程:

    1. 根据传入的裁剪参数计算输入和输出的对应关系,对图片进行裁剪。

    2. 根据传入的图片格式和转换参数,对图片进行色域转换,计算公式如下:

      • YUV 转 RGB:

        | R |   | matrix_r0c0 matrix_r0c1 matrix_r0c2 | | Y - input_bias_0 |
        | G | = | matrix_r1c0 matrix_r1c1 matrix_r1c2 | | U - input_bias_1 | >> 8
        | B |   | matrix_r2c0 matrix_r2c1 matrix_r2c2 | | V - input_bias_2 |
        
      • RGB 转 YUV:

        | Y |   | matrix_r0c0 matrix_r0c1 matrix_r0c2 | | R |        | output_bias_0 |
        | U | = | matrix_r1c0 matrix_r1c1 matrix_r1c2 | | G | >> 8 + | output_bias_1 |
        | V |   | matrix_r2c0 matrix_r2c1 matrix_r2c2 | | B |        | output_bias_2 |
        
    3. 对数据进行归一化,计算公式如下:

      pixel_out_chx(i) = [pixel_in_chx(i) - mean_chn_i - min_chn_i] * var_reci_chn_i
      

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
images 输入 原始图片输入。 UINT8 NHWC
params 输入 可选参数,用于动态AIPP接收预设参数。 UINT8 ND
aipp_config_path 可选属性 存放配置参数的文件地址,默认值为"./aipp.cfg"。该文件配置方法参见约束说明 STRING -
features 输出 处理后的图片。 UINT8、FLOAT16 NCHW、NHWC

约束说明

  • aipp_config_path配置文件说明:支持动态AIPP和静态AIPP配置,其中静态AIPP可配置图片裁剪参数配置(Crop)、色域转换参数配置(CSC)、输出类型转换参数配置(DTC);动态AIPP可配置输入处理标识(related_input_rank)参数和输入图像最大尺寸(max_src_image_size)参数。

  • aipp_config_path文件配置示例如下,具体参数说明参见下表。

    aipp_op {
        aipp_mode : static
        src_image_size_w : 608
        src_image_size_h : 608
        crop : false
        input_format : YUV420SP_U8
    
        csc_switch : true
        matrix_r0c0 : 298
        matrix_r0c1 : 0
        matrix_r0c2 : 409
        matrix_r1c0 : 298
        matrix_r1c1 : -100
        matrix_r1c2 : -208
        matrix_r2c0 : 298
        matrix_r2c1 : 516
        matrix_r2c2 : 0
        input_bias_0 : 16
        input_bias_1 : 128
        input_bias_2 : 128
    
        padding : false
        left_padding_size : 0
        right_padding_size : 0
        top_padding_size : 0
        bottom_padding_size : 0
        padding_value : 0
    
        mean_chn_0: 0
        mean_chn_1: 0
        mean_chn_2: 0
        mean_chn_3: 0
        min_chn_0: 0.0
        min_chn_1: 0.0
        min_chn_2: 0.0
        min_chn_3: 0.0
        var_reci_chn_0: 1.0
        var_reci_chn_1: 1.0
        var_reci_chn_2: 1.0
        var_reci_chn_3: 1.0
    }
    
    aipp_op {
        aipp_mode: dynamic
        related_input_rank: 0
        max_src_image_size: 752640
    }
    
    参数名 输入/输出/属性 描述 数据类型
    全局设置 aipp_mode 必选属性 AIPP算子运行模式,dynamic表示动态AIPP,static表示静态AIPP。 ENUM
    静态AIPP参数设置 input_format 必选属性 输入图片类型,目前只支持RGB888_U8、XRGB8888_U8、YUV420SP_U8、YUV400_U8。 ENUM
    src_image_size_h 可选属性 输入图像高度,取值范围:[1,4096];当输入图片类型为YUV420SP_U8时,该值需为偶数。 INT32
    src_image_size_w 可选属性 输入图像宽度,取值范围:[1,4096];当输入图片类型为YUV420SP_U8时,该值需为偶数。 INT32
    动态AIPP参数设置 related_input_rank 可选属性 标识对第几个输入进行AIPP处理,例如0表示对第1个输入进行AIPP处理,该值需不小于0。 INT32
    max_src_image_size 必选属性 输入图像最大的size,动态AIPP配置时必填。 INT32
    CROP参数设置 crop 可选属性 裁剪开关,true表示支持,false表示不支持。 BOOL
    load_start_pos_h 可选属性 抠图起始位置垂直方向坐标,取值范围:[0,4095];当输入图片类型为YUV420SP_U8时,该值需为偶数。 INT32
    load_start_pos_w 可选属性 抠图起始位置水平方向坐标,取值范围:[0,4095];当输入图片类型为YUV420SP_U8时,该值需为偶数。 INT32
    crop_size_h 可选属性 抠图后图像高度,取值范围:[1,4096]。 INT32
    crop_size_w 可选属性 抠图后图像宽度,取值范围:[1,4096]。 INT32
    CSC 参数设置 csc_switch 可选属性 色域转换开关,静态AIPP配置,true表示开启色域转换,false表示关闭。 BOOL
    rbuv_swap_switch 可选属性 R通道与B通道交换开关/U通道与V通道交换开关,true表示开启通道交换,false表示不开启。 BOOL
    ax_swap_switch 可选属性 RGBA->ARGB交换开关,true表示开启交换,false表示不开启。 BOOL
    matrix_r0c0 matrix_r0c1 matrix_r0c2 matrix_r1c0 matrix_r1c1 matrix_r1c2 matrix_r2c0 matrix_r2c1 matrix_r2c2 可选属性 3*3 CSC矩阵元素,取值范围:[-32677 ,32676]。 INT16
    output_bias_0 output_bias_1 output_bias_2 可选属性 RGB转YUV时的输出偏移,取值范围:[0, 255]。 UINT8
    input_bias_0 input_bias_1 input_bias_2 可选属性 YUV转RGB时的输入偏移,取值范围:[0, 255]。 UINT8
    DTC参数设置 mean_chn_0 mean_chn_1 mean_chn_2 mean_chn_3 可选属性 每个通道的均值,取值范围:[0, 255]。 UINT8
    min_chn_0 min_chn_1 min_chn_2 min_chn_3 可选属性 每个通道的最小值,取值范围:[0, 255]。 FLOAT16
    var_reci_chn_0 var_reci_chn_1 var_reci_chn_2 var_reci_chn_3 可选属性 每个通道方差的倒数,取值范围:[-65504, 65504]。 FLOAT16
    padding参数设置 padding 可选属性 AIPP处理图片时padding开启开关,取值范围:true/false。 BOOL
    left_padding_size right_padding_size top_padding_size bottom_padding_size 可选属性 H和W的填充值,静态AIPP配置,取值范围:[0, 32]。 INT32
    padding_value 可选属性 上下左右方向上padding的像素取值,静态AIPP配置。取值范围:[0, 255]/[-65504, 65504]。 UINT8/FLOAT16

调用说明

调用方式 样例代码 说明
图模式 test_geir_aipp 通过算子IR构图方式调用Aipp算子。