进行模型转换前,使用MindStudio安装用户,将所转换模型的模型文件以及权重文件上传到Ascend-cann-toolkit开发套件包所在的开发环境。进行模型转换前,用户可以按需配置环境变量,具体可参考全局环境变量设置。
参数解释如表1所示。
参数 |
说明 |
备注 |
---|---|---|
CANN Machine (仅Windows系统支持此参数) |
远程连接CANN所在环境的SSH地址。 必选。 |
表现格式为<username>@localhost:端口号。 |
Model File |
模型文件,该模型文件需要取消其他用户写的权限。 必选。 |
说明:
当导入超大模型时,如果提示报错“Failed to get model input shape.”,请在菜单栏选择“Help > Change Memory Settings”,在弹出的Memory Settings窗口中增大内存。 |
Weight File |
权重文件。 当原始框架是Caffe时,该参数存在且必选。 |
|
Model Name |
模型文件名称。 必选。 |
|
Target SoC Version |
模型转换时指定芯片型号。 必选。 |
请根据板端环境具体芯片形态进行选择。 |
Output Path |
模型文件输出路径。 必选。 |
默认输出路径为$HOME/modelzoo/${Model Name}/${Target SoC Version}/,如果用户需要自定义输出路径,可手动输入或单击右侧 |
Input Format |
输入数据格式。 必选。 |
该参数只支持设置为单个取值。
|
Input Nodes |
模型输入节点信息。 |
|
Shape |
模型输入的shape信息。 |
例如图1中的数值分别代表输入数据的N(模型一次处理的图片个数),C(Channel,例如彩色RGB图像的Channel数为3),H(Height),W(Width)。若开启AIPP功能,则此处的H,W取值即为AIPP输出数据的高和宽。根据输入数据格式分为以下两种设置情况。
|
Type |
指定输入节点的数据类型。
|
如果模型有多个输入,只有Type取值不为FP16的节点,才可以配置“Data Pre-Processing”页签;如果Type取值不为FP16的节点无法获取Shape中的H,W信息,也无法配置“Data Pre-Processing”页签。 |
Output Nodes |
指定输出节点信息。 可选。 |
单击“Select”在弹出的网络拓扑结构中,选中某层节点,右击选择 ,该层由蓝色标签进行标记,单击“OK”后,在“Output Nodes”参数下面会看到标记层的算子,右击选择 取消选中。
“Output Nodes”参数下方 层的算子,默认为全部选中,用户可以自行选择将不需要输出的算子去勾选,只有选中的算子才会作为模型的输出。本章节以选中所有算子为例进行说明。 某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以通过单击“Select”按钮,在弹出网络拓扑结构中将所需层的算子标记为 ,然后在“Output Nodes”参数下方选中想要输出的算子,模型转换后,在相应.om模型文件可以看到该层算子的输出直接作为模型的输出。详细信息请参见模型可视化。
说明:
|
Load Configuration |
导入上次模型转换的配置文件。 可选。 |
如果用户之前转换过模型,无论成功与否,在$HOME/modelzoo/${Model Name}/${Target SoC Version}/路径都会生成${Model Name}_config.json配置文件,该文件记录用户模型转换时所选择的配置信息,包括所用模型路径、模型名称、输入输出配置,数据预处理配置等,下次重新转换模型时,通过单击“Load Configuration”选择相应路径下的配置文件,则相应的配置信息会自动填充,用户自行决定是否沿用上次配置还是修改配置后重新进行模型转换。 |
在“Model File”栏选择好模型文件后,单击右侧的按钮,弹出生成模型网络结构图进度条,之后会弹出该模型的原始网络结构图,在模型网络结构图中可以进行以下操作,具体操作方法请参见可视化界面说明(MindSpore框架的原始网络模型,不支持查看网络结构图。)。
如果用户选择的模型中包括不支持的算子,MindStudio界面“Output”窗口会提示哪些算子不支持并提示shape信息无法获取等信息,在弹出的网络结构图中该算子呈现红色,该场景下无法获取算子的输出维度和shape信息。该场景下的处理方法请参见异常处理。
参数说明如表2所示。
参数 |
说明 |
备注 |
---|---|---|
Image Pre-processing Mode |
图片预处理模式, 包括如下两种:
|
- |
Load Aipp Configuration |
AIPP配置加载功能。动态AIPP不支持此功能。 |
此功能默认关闭,开启此功能后,在“Aipp Configuration File”输入框中选择对应的配置文件。 加载配置文件后,所有“Input Node: (data)”和“Input Node: (im_info)”下的参数按照配置文件自动设置。如有需要,打开“Aipp Configuration File”右侧的开关,界面下方将会展示“Input Node: (data)”和“Input Node: (im_info)”中的所有参数,用户可对其进行自定义修改。 |
Image Pre-processing Mode取值为Static,如下参数需要配置: |
||
Input Node: (data) |
节点配置开关,可以控制是否对该节点开启AIPP。 |
只有图1中Input Nodes参数对应data节点的Type取值为UINT8,并且能获取模型的宽和高,该参数才会自动开启。当模型为TensorFlow时,图1中Input Nodes参数对应data节点的Type取值为FP32、Int32、Int64、Bool,并且能获取模型的宽和高时,可以手动开启该参数。 |
Input Node: (im_info) |
模型有两个输入时,该参数才出现,表示对模型的第二个输入开启AIPP。 |
只有图1中Input Nodes参数对应im_info节点的Type取值为UINT8,并且能获取模型的宽和高,该参数才会自动开启。Input Node: (im_info)中的im_info根据解析的模型不同而变化。 |
Input Image Format |
输入图片格式。 |
|
Input Image Resolution |
原始图片大小。 |
如果“Input Image Format”取值为“YUV420 sp”,要求原始图片的宽和高取值是偶数。 |
Model Image Format |
模型处理图片格式。该参数同时也是色域转换开关,默认开启。当输入图片格式与模型处理文件格式不一致时需要开启。 |
输入图片格式不同,模型处理图片格式不同,具体格式如下:
|
Crop |
抠图开关,若开启,则表示启用抠图功能。默认关闭。 |
开启该参数后,下方会出现如下两个参数:
抠图约束如下:
若开启抠图功能,并且没有开启Padding,该场景下Cropping Area [H][W]才能取值为0或不配置,此时抠图大小Cropping Area [H][W]取值来自图1Input Nodes中shape取值的高和宽(模型文件input shape中的高和宽)。 |
Padding |
Padding使能开关,若开启,则表示启用补边功能。默认关闭。 |
Padding Area [L][R][B][T]取值范围为[0,32]。AIPP经过Padding后,输出的图片的高和宽要与模型需要的高和宽保持一致。 |
Normalization |
归一化开关。 |
开启后,其中“Conversion Type”表示计算规则,包括Mean、Min、Variance三个配置项。 |
Mean |
每个通道的均值。 |
当开启“Normalization”参数时才呈现。
|
Min |
每个通道的最小值。 |
当开启“Normalization”参数时才呈现。
|
1/Variance |
每个通道的方差的倒数。 |
当开启“Normalization”参数时才呈现。
|
Image Pre-processing Mode取值为Dynamic,如下参数需要配置: |
||
Input Node: (data) |
动态AIPP节点配置开关,可以控制是否对该节点开启动态AIPP。 |
只有图1中Input Nodes参数对应data节点的Type取值为UINT8,并且能获取模型的宽和高,该参数才会自动开启。当模型为TensorFlow时,图1中Input Nodes参数对应data节点的Type取值为FP32、Int32、Int64、Bool,并且能获取模型的宽和高时,可以手动开启该参数。 |
Input Node: (im_info) |
模型有两个输入时,该参数才出现,表示对模型的第二个输入开启动态AIPP。 |
只有图1中Input Nodes参数对应im_info节点的Type取值为UINT8,并且能获取模型的宽和高,该参数才会自动开启。Input Node: (im_info)中的im_info根据解析的模型不同而变化。 |
Max Image Size (Byte) |
输入图像最大的size,动态AIPP必须配置(如果为动态batch场景,N为最大档位数的取值)。 |
|
模型转换是否开启AIPP功能,执行推理业务时,对输入图片数据的要求:
模型转换时开启AIPP,在进行推理业务时,输入图片数据要求为NHWC排布,该场景下最终与AIPP连接的输入节点的格式被强制改成NHWC,该场景下可能与1中“Model Information”页签中“Input Format”参数指定的数据格式不一致。
参数解释如下:
参数 |
说明 |
备注 |
---|---|---|
Operator Fusion |
是否关闭融合功能。
|
如果使用昇腾模型压缩工具量化后的模型通过模型转换得到.om离线模型,然后进行精度比对,则需要打开该开关。打开后,模型转换完毕,在生成om模型的同级目录下,会生成fusion_switch.cfg配置文件,该文件记录哪些功能被关闭。 |
Fusion Passes |
需要关闭的融合规则。 |
打开“Operator Fusion”功能,会显示该项,默认关闭的融合规则有: V100RequantFusionPass、V200RequantFusionPass、ConvConcatFusionPass、SplitConvConcatFusionPass、TbeEltwiseQuantFusionPass、TbeConvDequantVaddReluQuantFusionPass、TbeConvDequantVaddReluFusionPass、TbeConvDequantQuantFusionPass、TbeDepthwiseConvDequantFusionPass、TbeFullyconnectionElemwiseDequantFusionPass、TbeConv2DAddMulQuantPass、TbePool2dQuantFusionPass、TbeAippConvReluQuantFusion、TbeCommonRules0FusionPass、TbeCommonRules2FusionPass。
说明:
用户需要确保输入的融合规则的正确性。 |
Additional Arguments |
扩展转换参数。 |
模型转换界面不支持配置,但是ATC工具支持的参数,均可通过此选项进行扩展。最多支持输入2048个字符。 在下方编辑框中输入ATC工具可用的参数,用户根据实际情况进行填写,多个参数使用空格分隔。详细参数请参见《ATC工具使用指南》的“参数说明”章节,例如:--log=info。 |
Environment Variables |
环境变量。可选参数,请根据实际自行配置。 |
|
Command Preview |
模型转换使用的atc参数预览。不支持修改。 |
在所有页签配置完相关参数后,该区域会给出界面参数转换成atc命令的结果预览。 如果“Additional Arguments”中再次配置界面已有的参数,则“Command Preview”区域会追加相应的参数,模型转换时,“Command Preview”区域后面的参数取值会覆盖前面已有的参数。 |
在MindStudio界面下方,“Output”窗口会显示模型转换过程中的日志信息,如果提示“Model converted successfully”,则表示模型转换成功。“Output”窗口会显示模型转换所用的命令、所设置的环境变量、模型转换的结果、模型输出路径以及模型转换日志路径等信息。
模型转换的日志文件(ModelConvert.txt)所在路径为:“$HOME/modelzoo/resnet50/$Soc_Version”。回显信息示例如下:
drwxr-x--- 2 4096 Mar 10 16:46 ./ drwx------ 3 4096 Mar 10 16:45 ../ -rw------- 1 127 Mar 10 15:55 fusion_switch.cfg --融合开关配置文件 -rw------- 1 453 Mar 10 16:45 insert_op.cfg --数据预处理配置文件 -rw-r----- 1 453 Mar 10 16:45 ModelConvert.txt --日志文件 -rw------- 1 2095 Mar 10 18:03 resnet50_config.json --模型转换所用的配置信息文件,下次模型转换时,可以通过选择该文件沿用上次模型转换的配置数据 -rw------- 1 51581408 Mar 10 16:46 resnet50.om --上板运行的模型文件
如果用户选择的模型文件中包括昇腾AI处理器不支持的算子,则模型转换时会弹出图5所示整网支持度评估报告。
其中左侧的“Summary”区域中:
如果当前已经打开了算子工程,则会弹出图6提示框,可以选择在当前算子工程添加算子或新建算子工程;如果当前不存在算子工程,则会直接弹出新建算子工程界面。
中的“Operator Type”自定义算子的类型,会根据模型支持度评估界面选中的算子类型自动填充。创建完成后,新建工程的默认存储路径为“$HOME/AscendProjects”。
├── .idea ├── build //编译生成的中间文件 ├── cmake //编译相关公共文件存放目录 ├── framework //算子插件实现文件目录 │ ├── tf_plugin //存放tensorflow框架的算子插件文件及编译规则文件 │ │ ├── tensorflow_add_plugin.cpp ...... ......
自定义算子开发完成后,重新进行模型转换。