配置AIPP
AIPP是Ascend 310提供的硬件图像预处理功能,包括色域转换,图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)等功能。
- 静态AIPP:在模型转换时设置参数,模型推理过程采用固定的AIPP预处理(无法修改),静态AIPP的关键字含义和配置文件模板请参考《模型转换指导》中的“配置文件模板”章节。
- 动态AIPP:在模型转换时,设置AIPP为动态模式,每次模型推理前,根据需求,设置AIPP预处理参数。动态AIPP在根据业务要求改变预处理参数的场合下使用(如不同摄像头采用不同的归一化参数,输入图片格式需要兼容YUV420和RGB等)。动态AIPP的使用方法请参考《Matrix API参考》中的“AIPP配置接口”章节。
- AIPP的输入格式为“YUV420SP_U8”(默认为“YUV420SP_UV”格式),若格式为“YUV420SP_VU”,请修改参数“rbuv_swap_switch”,否则会影响输出结果。
- 模型输入为“RGB_U8”或“BGR_U8”,对应不同的色域转换矩阵。
DVPP模块输出的图片多为对齐后的YUV420SP类型,不支持输出RGB图片。因此,业务流需要使用AIPP模块转换对齐后YUV420SP类型图片的格式,并抠出模型需要的输入图片。
例如:模型要求输入为300*300的RGB图片,用户调用DVPP接口处理(如Jpeg解码和缩放)后,由于对齐要求,输出的图片为384*304(图片有效区域为300*300,向右向下填充零补齐)的YUV420SP_UV格式图片。
静态AIPP的配置如下所示,文件配置了抠图的起始坐标,抠图的长宽默认为模型输入,图像归一化参数,即均值和方差的倒数(减均值后,乘以该系数)。
aipp_op{ # AIPP为静态模式 aipp_mode: static # 使能抠图 crop: true # 输入图片的格式及大小 input_format : YUV420SP_U8 src_image_size_w : 384 src_image_size_h : 304 # 抠图的起始坐标,抠图的宽与高默认为模型输入 load_start_pos_h : 0 load_start_pos_w : 0 # 使能格式转换,该转换矩阵将YUV420SP_UV转换为RGB888 csc_switch : true matrix_r0c0 : 298 matrix_r0c1 : 516 matrix_r0c2 : 0 matrix_r1c0 : 298 matrix_r1c1 : -100 matrix_r1c2 : -208 matrix_r2c0 : 298 matrix_r2c1 : 0 matrix_r2c2 : 409 input_bias_0 : 16 input_bias_1 : 128 input_bias_2 : 128 #开启数据归一化,配置均值和方差的倒数 mean_chn_0 : 125 mean_chn_1 : 125 mean_chn_2 : 125 var_reci_chn_0 : 0.0039 var_reci_chn_1 : 0.0039 var_reci_chn_2 : 0.0039 }