Aipp
【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv
产品支持情况
| 产品 | 是否支持 |
|---|---|
| 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使能”章节。
计算流程:
根据传入的裁剪参数计算输入和输出的对应关系,对图片进行裁剪。
根据传入的图片格式和转换参数,对图片进行色域转换,计算公式如下:
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 |
对数据进行归一化,计算公式如下:
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算子。 |
【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考