AIPP
功能介绍
AIPP(AI PreProcessing)用于在AI Core上完成图像预处理,包括色域转换(转换图像格式)、图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)。AIPP区分为静态AIPP和动态AIPP,只能二选一,不能同时支持。
使用方法
下面介绍如何在模型构建时支持AIPP功能:
- Data算子输入数据的Channel维度的元素个数和图片实际保持一致。
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);
- 准备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必须配置 }
- 模型编译时,在aclgrphBuildModel接口options中设置INSERT_OP_FILE和INPUT_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"} }); }
- 编译生成的离线模型自动插入aipp算子。
父主题: 专题