尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

CANN/ge ATC工具AIPP启用指南

CANN/ge ATC工具AIPP启用指南 如何开启AIPP【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge通过在模型转换过程中开启AIPP功能可以在推理之前就完成所有的数据处理由于用的是专门的加速模块实现并保证性能从而可以不让图像处理成为推理阶段的瓶颈图像处理方式比较灵活。本章节给出如何在模型转换阶段开启AIPP功能。本章节以TensorFlow框架ResNet50网络模型为例演示如何通过模型转换开启静态AIPP功能开启AIPP功能后若实际提供给模型推理的测试图片不满足要求包括图片格式图片尺寸等经过模型转换后会输出满足模型要求的图片并将该信息固化到转换后的离线模型中模型转换后AIPP功能会以Aipp算子形式插入离线模型中。ResNet50网络模型要求的图片格式为RGB图片尺寸为224*224另外假设提供给模型推理的测试图片尺寸为250*250图片格式为YUV420SP有效数据区域从左上角(0, 0)像素开始开启AIPP过程中所需操作如表1分析所示。表 1场景分析分类ResNet50网络模型要求实际提供给模型推理的测试图片所需操作图片格式RGBYUV420SP该场景下需要开启AIPP的色域转换功能将YUV420SP格式转成模型要求的RGB格式关于色域转换功能详细说明请参见色域转换配置说明。图片尺寸224*224250*250提供的测试图片尺寸250250大于224224该场景下需要开启AIPP抠图功能并且抠图起始位置水平、垂直方向坐标load_start_pos_h、load_start_pos_w为0执行推理时将从(0, 0)点开始选取224*224区域的数据。详细实现步骤如下获取TensorFlow网络模型。单击Link根据页面提示获取ResNet50网络的模型文件*.pb并以CANN软件包运行用户将获取的文件上传至开发环境任意目录例如上传到$HOME_/module__/_目录下。构造AIPP配置文件_insert_op.cfg_。静态AIPP配置模板主要由如下几部分组成AIPP配置模式静态AIPP或者动态AIPP原始图片信息包括图片格式以及图片尺寸改变图片尺寸抠图补边、色域转换功能等如下分别介绍如何进行配置。AIPP配置模式由aipp_mode参数决定静态场景下的配置示例如下aipp_mode : static #static表示配置为静态AIPP配置原始图片信息。input_format : YUV420SP_U8 #输入给AIPP的原始图片格式 src_image_size_w : 250 #输入给AIPP的原始图片宽高 src_image_size_h : 250改变图片尺寸。改变图片尺寸由抠图和补边等功能完成本示例需要配置抠图起始位置抠图后的图片大小等信息若抠图后图片尺寸仍旧不满足模型要求还需要配置补边功能。而AIPP提供了更为方便的配置方式就是若开启抠图功能并且不配置补边功能抠图大小可以取值为0或者不配置此时抠图大小的宽和高来自模型--input_shape中的宽和高。本示例中我们不配置抠图大小配置示例如下crop: true #抠图开关用于改变图片尺寸 load_start_pos_h: 0 #抠图起始位置水平、垂直方向坐标 load_start_pos_w: 0色域转换功能。色域转换功能由csc_switch参数控制并通过色域转换系数matrix_r*c*、通道交换rbuv_swap_switch等参数配合使用。AIPP提供了一个比较方便的功能就是一旦确认了AIPP处理前与AIPP处理后的图片格式即可确定色域转换相关的参数值用户无需修改即上述参数都可以直接从模板中进行复制模板示例以及更多配置模板请参见色域转换配置说明。如下为该场景下的配置示例csc_switch : true #色域转换开关true表示开启色域转换 rbuv_swap_switch : false #通道交换开关R通道与B通道交换开关/U通道与V通道交换本例中不涉及两个通道的交换故设置为false默认为false matrix_r0c0 : 256 #色域转换系数 matrix_r0c1 : 0 matrix_r0c2 : 359 matrix_r1c0 : 256 matrix_r1c1 : -88 matrix_r1c2 : -183 matrix_r2c0 : 256 matrix_r2c1 : 454 matrix_r2c2 : 0 input_bias_0 : 0 input_bias_1 : 128 input_bias_2 : 128将上述所有的参数组合到_insert_op.cfg_文件中即为我们需要构造的AIPP配置文件完整示例如下aipp_op { aipp_mode : static #AIPP配置模式 input_format : YUV420SP_U8 #输入给AIPP的原始图片格式 src_image_size_w : 250 #输入给AIPP的原始图片宽高 src_image_size_h : 250 crop: true #抠图开关用于改变图片尺寸 load_start_pos_h: 0 #抠图起始位置水平、垂直方向坐标 load_start_pos_w: 0 csc_switch : true #色域转换开关true表示开启色域转换 rbuv_swap_switch : false #通道交换开关 matrix_r0c0 : 256 #色域转换系数用户无需修改 matrix_r0c1 : 0 matrix_r0c2 : 359 matrix_r1c0 : 256 matrix_r1c1 : -88 matrix_r1c2 : -183 matrix_r2c0 : 256 matrix_r2c1 : 454 matrix_r2c2 : 0 input_bias_0 : 0 input_bias_1 : 128 input_bias_2 : 128 }您可以根据AIPP配置示例或典型场景样例参考章节获取更多场景AIPP配置示例如果上述示例仍旧无法满足要求则需要参见配置文件模板自行构造配置文件。将上述_insert_op.cfg_文件上传到ATC工具所在Linux服务器。atc命令中加入--insert_op_conf参数用于插入aipp预处理算子执行如下命令生成离线模型。如下命令中使用的目录以及文件均为样例请以实际为准atc --model$HOME/module/resnet50_tensorflow.pb --framework3 --output$HOME/module/out/tf_resnet50 --soc_versionsoc_version --insert_op_conf$HOME/module/insert_op.cfg关于参数的详细解释以及使用方法请参见参数说明。若提示如下信息则说明模型转换成功。ATC run success, welcome to the next use.成功执行命令后在--output参数指定的路径下可查看离线模型如tf_resnet50.om。可选如果用户想查看转换后离线模型中Aipp算子的相关信息则可以将上述离线模型转成JSON文件查看命令如下atc --mode1 --om$HOME/module/out/tf_resnet50.om --json$HOME/module/out/tf_resnet50.json如下为JSON文件中带有aipp信息的样例如下样例中所有aipp属性值都为样例请以用户实际构造的配置文件为准{ key: aipp, value: { func: { attr: [ { key: mean_chn_0, value: { i: 0 } }, { key: mean_chn_1, value: { i: 0 } }, { key: mean_chn_2, value: { i: 0 } }, { key: mean_chn_3, value: { i: 0 } }, { key: csc_switch, value: { b: true } }, { key: input_format, value: { i: 1 } }, { key: input_bias_0, value: { i: 0 } }, { key: input_bias_1, value: { i: 128 } }, { key: input_bias_2, value: { i: 128 } }, { key: aipp_mode, value: { i: 1 } }, { key: src_image_size_h, value: { i: 250 } }, { key: crop_size_h, value: { i: 0 } }, { key: matrix_r0c0, value: { i: 256 } }, { key: matrix_r0c1, value: { i: 0 } }, { key: matrix_r0c2, value: { i: 359 } }, { key: src_image_size_w, value: { i: 250 } }, { key: crop_size_w, value: { i: 0 } }, { key: rbuv_swap_switch, value: { b: false } }, { key: padding, value: { b: false } }, { key: ax_swap_switch, value: { b: false } }, { key: top_padding_size, value: { i: 0 } }, { key: matrix_r1c0, value: { i: 256 } }, { key: matrix_r1c1, value: { i: -88 } }, { key: matrix_r1c2, value: { i: -183 } }, { key: resize, value: { b: false } }, { key: resize_output_h, value: { i: 0 } }, { key: related_input_rank, value: { i: 0 } }, { key: load_start_pos_h, value: { i: 0 } }, { key: matrix_r2c0, value: { i: 256 } }, { key: matrix_r2c1, value: { i: 454 } }, { key: matrix_r2c2, value: { i: 0 } }, { key: resize_output_w, value: { i: 0 } }, { key: var_reci_chn_0, value: { f: 1 } }, { key: var_reci_chn_1, value: { f: 1 } }, { key: var_reci_chn_2, value: { f: 1 } }, { key: load_start_pos_w, value: { i: 0 } }, { key: var_reci_chn_3, value: { f: 1 } }, { key: single_line_mode, value: { b: false } }, { key: output_bias_0, value: { i: 16 } }, { key: output_bias_1, value: { i: 128 } }, { key: output_bias_2, value: { i: 128 } }, { key: right_padding_size, value: { i: 0 } }, { key: bottom_padding_size, value: { i: 0 } }, { key: min_chn_0, value: { f: 0 } }, { key: min_chn_1, value: { f: 0 } }, { key: min_chn_2, value: { f: 0 } }, { key: min_chn_3, value: { f: 0 } }, { key: crop, value: { b: false } }, { key: cpadding_value, value: { f: 0 } }, { key: left_padding_size, value: { i: 0 } } ] } } }【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表