更新时间:2021-03-18 GMT+08:00
分享

约束及参数说明

约束说明

在进行模型转换前,请务必查看如下约束要求:

  • 只支持原始框架类型为caffe和tensorflow的模型转换,当原始框架类型为caffe时,输入数据类型为FLOAT;当原始框架类型为tensorflow时,输入数据类型为INT32、BOOL、UINT8、FLOAT。
  • 当原始框架类型为caffe时,模型文件(.prototxt)和权重文件(.caffemodel)的op name、op type必须保持名称一致(包括大小写)。
  • 当原始框架类型为Caffe时,除了top与bottom相同的layer以外(例如BatchNorm,Scale,ReLU等),其他layer的top名称需要与其name名称保持一致。
  • 当原始框架类型为tensorflow时,只支持FrozenGraphDef格式。
  • 不支持动态shape的输入,例如:NHWC输入为[?,?,?,3]多个维度可任意指定数值。模型转换时需指定固定数值。
  • 输入数据最大支持四维,转维算子(reshape、expanddim等)不能输出五维。
  • 模型中的所有层算子除const算子外,输入和输出需要满足dim!=0。
  • 模型转换不支持含有训练算子的模型。
  • 量化(uint8)后的模型不支持模型转换。
  • 模型中的算子只支持2D卷积,暂不支持3D卷积。
  • 只支持《算子清单》中的算子,并需满足算子限制条件。

参数说明

参数名称

参数描述

是否必选(以mode为0和3为准)

默认值

--mode

运行模式

  • 0:生成适配昇腾AI处理器的离线模型
  • 1:离线模型或模型文件转json
  • 3:仅做预检,检查模型文件的内容是否合法。

0

--model

原始模型文件路径。

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

不涉及

--weight

权重文件路径。

当原始模型是caffe时需要指定。

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

不涉及

--framework

原始框架类型

  • 0:caffe
  • 3:tensorflow
    说明:
    • 当mode为1时,该参数可选,可以指定caffe或tensorflow,不指定时默认为离线模型转json,如果指定时需要保证--om模型和--framework类型对应一致,例如:

      --framework=0 --om=/home/username/test/resnet18.prototxt

    • 当mode为0或3时,该参数必选,可以指定caffe或tensorflow。

不涉及

--output

存放转换后的离线模型的路径(包含文件名),例如“out/caffe_resnet18”

转换后的离线模型,会自动以“.om”的后缀结尾。

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

不涉及

--encrypt_mode(预留,目前不支持)

加密模式

  • 0:加密
  • -1:不加密

-1

--encrypt_key(预留,目前不支持)

用于加密的随机数文件所在的路径。

加密模式下必填。

说明:
  • 路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)。
  • 测试时,您可以使用openssl rand 32 -out ek_key命令生成一个随机数文件。实际商用时,用户可根据实际需求选择其它工具生成随机数文件。

不涉及

--hardware_key(预留,目前不支持)

加密使用的ISV硬件密钥文件(这个文件是经过加密的)路径。

加密模式下必填。

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

不涉及

--certificate(预留,目前不支持)

加密使用的ISV证书文件路径。

加密模式下必填。

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

不涉及

--private_key(预留,目前不支持)

加密使用的ISV私钥文件路径。

加密模式下必填。

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

不涉及

--cal_conf

量化配置文件路径。

说明:
  • 路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)
  • 量化配置文件的内容示例如下:

    device:USE_CPU

    bin:150

    type:JSD

    quantize_algo:NON_OFFSET

    inference_with_data_quantized:true

    inference_with_weight_quantized:true

  • 量化配置文件的配置说明,请查看量化配置

不涉及

--check_report

预检结果保存文件路径。若不指定该路径,在模型转换失败或mode为3(仅做预检)时,将预检结果保存在当前路径下。

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

check_result.json

--h或--help

显示帮助信息。

不涉及

--input_format

输入数据格式:NCHW和NHWC

  • 当原始框架是tensorflow时,默认是NHWC。如果实际是NCHW的话,需要通过此参数指定NCHW。
  • 原始框架为Caffe时,只支持NCHW格式。

不涉及

--input_fp16_nodes

该参数与--is_output_fp16配合使用。

多网络串联时,指定下一个网络输入数据类型为fp16的输入节点名称。

例如:“node_name1; node_name2”。

举例说明:两个网络net1和net2串联,net1的输出作为net2的输入,则通过该参数指定net2网络接收net1输出数据类型为fp16的节点名称。

不涉及

--input_shape

模型输入数据的shape。

例如:“input_name1: n1, c1, h1, w1; input_name2: n2, c2, h2, w2”。

input_name必须是转换前的网络模型中的节点名称。

若原始模型为动态shape,例如input_name1:?,h,w,c,该参数必填。

其中“?”为batch数,表示一次处理的图片数量,需要用户根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型

不涉及

--is_output_fp16

多网络串联时,指定前一个网络输出的数据类型是否为fp16。

例如:false,true,false,true。

举例说明:两个网络net1和net2串联,net1的输出作为net2的输入,则通过该参数指定net1的输出数据类型为fp16。

false

--json

离线模型或模型文件转换为json格式文件的路径。

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

不涉及

--om

当mode为1时必填。

需要转换为json格式的离线模型或模型文件的路径。例如/home/username/test/out/caffe_resnet18.om或/home/username/test/resnet18.prototxt

说明:

路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)

不涉及

--op_name_map

算子映射配置文件路径,网络中包含DetectionOutput算子时需要指定。

例如:不同的网络中DetectionOutput算子的功能不同,可能指定DetectionOutput(Davinci模型中的算子)到如下算子的映射:

  • FSRDetectionOutput:fasterrcnn网络中的算子
  • SSDDetectionOutput:SSD网络中的算子。
  • RefinedetDetectionOutput:Refinedet网络中的算子。
说明:
  • 路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)
  • 算子映射配置文件的内容示例如下:

    DetectionOutput:SSDDetectionOutput。

不涉及

--out_nodes

指定输出节点。

如果不指定输出节点(算子名称),则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,既可以在模型转换时通过该参数指定输出某层算子,模型转换后,在相应.om模型文件最后一层即可以看到指定输出算子的参数信息,如果通过.om模型文件无法查看,则可以将.om模型文件转换成json格式后查看。

例如:“node_name1:0;node_name1:1;node_name2:0”。

node_name必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如node_name1:0,表示节点名称为node_name1的第0个输出。

不涉及

--plugin_path

自定义算子插件路径。

例如:"/home/a1/b1;/home/a2/b2;/home/a3/b3"

说明:

自定义算子插件路径中可以包含多个路径,两个路径之间以分号分割,每个路径内不能包含分号,否则将导致解析得到的路径与预期不符。

./plugin

--target

当前仅支持设置为“mini”

mini:量化中eltwise算子支持双输出;量化中roipooling算子支持int8输出;量化中conv算子支持混合精度。

mini

--ddk_version

指定自定义算子运行需要匹配的ddk环境的版本号。

不涉及

--net_format

指定网络算子优先选用的数据格式,ND(N<=4)和5D。仅在网络中算子的输入数据同时支持ND和5D两种格式时,指定该参数才生效。

  • ND:模型中算子按NCHW转换成通用格式。
  • 5D:模型中算子按华为自研的5维转换成华为格式。

不涉及

--insert_op_conf

输入预处理算子的配置文件路径,例如aipp算子。

说明:
  • 路径部分:支持大小写字母、数字,下划线;文件名部分:支持大小写字母、数字,下划线和点(.)
  • 配置文件的内容示例如下:

    aipp_op {

    aipp_mode: static

    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配置

不涉及

--fp16_high_prec

指定是否生成高精度FP16 Davinci模型。

  • 0:默认值,生成普通FP16 Davinci模型,推理性能更好。
  • 1:生成高精度FP16 Davinci模型,推理精度更好。

高精度当前仅支持如下算子Caffe:Convolution,Pooling,FullConnection;TensorFlow:tf.nn.conv2d,tf.nn.max_poo算子。

0

--output_type

网络输出数据类型:

  • FP32:默认值,推荐分类网络、检测网络使用。
  • UINT8:图像超分辨率网络,推荐使用,推理性能更好。

FP32

--enable_l2dynamic

L2动态优化开关,该参数可能会影响网络模型的推理性能,如果性能不满足要求,可以尝试关闭该开关,验证性能影响。

  • true:是,打开L2动态优化开关。
  • false:否,关闭L2动态优化开关。

true

分享:

    相关文档

    相关产品