Skip to content

Mgeconvert Python Api Doc

daisycx edited this page Aug 3, 2022 · 10 revisions

How To系列:How To Use Mgeconvert Python Api:memo:


TraceModule 系列(ONNX,CAFFE,TFLTIE)

tracemodule 系列转换主要负责处理ONNX,CAFFE和TFLITE等后端框架

ONNX:zap:

from mgeconvert.converters.tm_to_onnx import tracedmodule_to_onnx 
tracedmodule_to_onnx(
    traced_module, # tracemodule 文件
    output="out.onnx", # 输出文件路径
    graph_name="graph", # graph的名称
    opset=8, # 支持的opset 8 -12 
    outspec=None, # 指定模型的end points, 只转换end points依赖的部分
    input_data_type: str = None, # 输入的dtype
    input_scales: Union[float, List[float]] = None, # 输入的 scale
    input_zero_points: Union[int, List[int]] = None, # 输入的 zero_points
    require_quantize=False, # 对于QAT模型是否需要真量化,如果不做真量化则生成量化参数文件
    param_fake_quant=False, # 是否需要对weight等常量进行假量化
    quantize_file_path="quant_params.json", # 量化文件输出位置
)

执行该段代码后,会在输出out.onnx的onnx文件,转换结束

CAFFE:fire:

from mgeconvert.converters.tm_to_caffe import tracedmodule_to_caffe  
tracedmodule_to_caffe(
    traced_module, # tracemodule 文件
    prototxt="out.prototxt", # 输出的caffe proto的文件名
    caffemodel="out.caffemodel", # 输出caffemodel 的文件名
    outspec=None, # 指定模型的end points, 只转换end points依赖的部分
    use_empty_blobs=False, # 是否保存params
    input_data_type: str = None, # 输入的类型 
    input_scales: Union[float, List[float]] = None, # 输入的scales
    input_zero_points: Union[int, List[int]] = None, # 输入的zero_points
    require_quantize=False, # 对于QAT模型是否需要真量化,如果不做真量化则生成量化参数文件
    param_fake_quant=False, # 是否需要对weight等常量进行假量化
    split_conv_relu=False, # 是否需要分离 conv 和relu ,将relu去掉
    quantize_file_path="quant_params.json", # 输出的量化文件地址
    convert_backend: BackEnd = BackEnd.CAFFE, # 使用caffe 格式转换的后端  1 = caffe,2 = snpe,3 = trt
)

TFLITE:wrench:

from mgeconvert.converters.tm_to_tflite import tracedmodule_to_tflite 
tracedmodule_to_tflite(
    traced_module, # tracemodule 文件
    output="out.tflite", # 输出的名称
    input_data_type: str = None, # 输入的dtype
    input_scales: Union[float, List[float]] = None, # 输入的scale
    input_zero_points: Union[int, List[int]] = None, # 输入的 zero_points
    require_quantize=False, # 对于QAT模型是否需要真量化,如果不做真量化则生成量化参数文件
    param_fake_quant=False, # 是否需要对weight等常量进行假量化
    quantize_file_path="quant_params.json", # 导出的json 文件名称
    graph_name="graph", # 图名称
    mtk=False, # 是否是mtk 平台
    outspec=None, # 指定模型的end points, 只转换end points依赖的部分
)

Mge 系列(ONNX,CAFFE,TFLTIE)

ONNX:zap:

from mgeconvert.converters.mge_to_onnx import mge_to_onnx
mge_to_onnx(
    mge_fpath, #mge 文件
    output="out.onnx", # 输出文件名称
    graph_name="graph", # graph的名称
    opset=8, # opset 的版本
    outspec=None # 指定模型的end points, 只转换end points依赖的部分
)

CAFFE:fire:

from mgeconvert.converters.mge_to_caffe import mge_to_caffe
mge_to_caffe(
    mge_fpath, # mge 文件路径
    prototxt="out.prototxt", # 指定的输出文件
    caffemodel="out.caffemodel", # caffe的模型文件
    outspec=None, # 指定模型的end points, 只转换end points依赖的部分
    use_empty_blobs=False, # 是否使用空blob
    convert_backend: BackEnd = BackEnd.CAFFE, # 转换的后端
)

TFLITE:wrench:

from mgeconvert.converters.mge_to_tflite import mge_to_tflite   
mge_to_tflite(
    mge_fpath, # 指定的mge路径 
    output="out.tflite", # 指定的输出文件
    graph_name="graph", # 图的名称
    mtk=False, # 是否mtk 平台
    disable_nhwc=False, # 是否禁用nhwc
    outspec=None, # 指定模型的end points, 只转换end points依赖的部分
)                                                                                                                                                                                                                                                                                                     

see Readme for details