下载
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
昇腾小AI

如何使能AIPP

通过在模型转换过程中开启AIPP功能,可以在推理之前就完成所有的数据处理;由于用的是专门的加速模块实现并保证性能,从而可以不让图像处理成为推理阶段的瓶颈,图像处理方式比较灵活。本章节给出如何在模型转换阶段开启AIPP功能。

本章节以TensorFlow框架ResNet50网络模型为例,演示如何通过模型转换使能静态AIPP功能,使能AIPP功能后,若实际提供给模型推理的测试图片不满足要求(包括图片格式,图片尺寸等),经过模型转换后,会输出满足模型要求的图片,并将该信息固化到转换后的离线模型中(模型转换后AIPP功能会以aipp算子形式插入离线模型中)。

ResNet50网络模型要求的图片格式为RGB,图片尺寸为224*224,另外,假设提供给模型推理的测试图片尺寸为250*250,图片格式为YUV420SP,有效数据区域从左上角(0, 0)像素开始,使能AIPP过程中所需操作如表1分析所示。

表1 场景分析

分类

ResNet50网络模型要求

实际提供给模型推理的测试图片

所需操作

图片格式

RGB

YUV420SP

该场景下需要开启AIPP的色域转换功能,将YUV420SP格式转成模型要求的RGB格式,关于色域转换功能详细说明请参见色域转换配置说明

图片尺寸

224*224

250*250

提供的测试图片尺寸250*250大于224*224,该场景下需要开启AIPP抠图功能,并且抠图起始位置水平、垂直方向坐标load_start_pos_h、load_start_pos_w为0,执行推理时,将从(0, 0)点开始选取224*224区域的数据。

详细实现步骤如下:

  1. 获取TensorFlow网络模型。

    单击Link,根据页面提示获取ResNet50网络的模型文件(*.pb),并以CANN软件包运行用户将获取的文件上传至开发环境任意目录,例如上传到$HOME/module/目录下。

  2. 构造AIPP配置文件insert_op.cfg

    静态AIPP配置模板主要由如下几部分组成:AIPP配置模式(静态AIPP或者动态AIPP),原始图片信息(包括图片格式,以及图片尺寸),改变图片尺寸(抠图,补边)、色域转换功能等,如下分别介绍如何进行配置。

    1. AIPP配置模式由aipp_mode参数决定,静态场景下的配置示例如下:
             aipp_mode : static           #static表示配置为静态AIPP
    2. 配置原始图片信息。
             input_format : YUV420SP_U8     #输入给AIPP的原始图片格式
             src_image_size_w : 250         #输入给AIPP的原始图片宽高
             src_image_size_h : 250
    3. 改变图片尺寸。

      改变图片尺寸由抠图和补边等功能完成,本示例需要配置抠图起始位置,抠图后的图片大小等信息,若抠图后图片尺寸仍旧不满足模型要求,还需要配置补边功能。

      而AIPP提供了更为方便的配置方式,就是若开启抠图功能,并且不配置补边功能,抠图大小可以取值为0或者不配置,此时抠图大小的宽和高来自模型--input_shape中的宽和高。本示例中我们不配置抠图大小,配置示例如下:
             crop: true                     #抠图开关
             load_start_pos_h: 0            #抠图起始位置水平、垂直方向坐标
             load_start_pos_w: 0
    4. 色域转换功能。
      色域转换功能由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              #色域转换开关
           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服务器。

  3. atc命令中加入--insert_op_conf参数,用于插入aipp预处理算子,执行如下命令生成离线模型。(如下命令中使用的目录以及文件均为样例,请以实际为准)
    atc --model=$HOME/module/resnet50_tensorflow*.pb --framework=3 --output=$HOME/module/out/tf_resnet50 --soc_version=<soc_version> --insert_op_conf=$HOME/module/insert_op.cfg  
    关于参数的详细解释以及使用方法请参见参数说明。若提示如下信息,则说明模型转换成功。
    ATC run success

    成功执行命令后,在--output参数指定的路径下,可查看离线模型(如:tf_resnet50.om)。

  4. (可选)如果用户想查看转换后离线模型中aipp算子的相关信息,则可以将上述离线模型转成json文件查看,命令如下:
    atc --mode=1 --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": 0
                          }
                        },
                        {
                          "key": "crop_size_h",
                          "value": {
                            "i": 0
                          }
                        },
                        {
                          "key": "matrix_r0c0",
                          "value": {
                            "i": 256
                          }
                        },
                        {
                          "key": "matrix_r0c1",
                          "value": {
                            "i": 443
                          }
                        },
                        {
                          "key": "matrix_r0c2",
                          "value": {
                            "i": 0
                          }
                        },
                        {
                          "key": "src_image_size_w",
                          "value": {
                            "i": 0
                          }
                        },
                        {
                          "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": -86
                          }
                        },
                        {
                          "key": "matrix_r1c2",
                          "value": {
                            "i": -178
                          }
                        },
                        {
                          "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": 0
                          }
                        },
                        {
                          "key": "matrix_r2c2",
                          "value": {
                            "i": 350
                          }
                        },
                        {
                          "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
                          }
                        }
                      ]
                    }
                  }
                }
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词