Opt

  1. class Opt;

Opt模型离线优化接口,Paddle原生模型需经opt优化图结构后才能在Paddle-Lite上运行。

示例:

假设待转化模型问当前文件夹下的mobilenet_v1,可以使用以下脚本转换

  1. # 引用Paddlelite预测库
  2. from paddlelite.lite import *
  3. # 1. 创建opt实例
  4. opt=Opt()
  5. # 2. 指定输入模型地址
  6. opt.set_model_dir("./mobilenet_v1")
  7. # 3. 指定转化类型: arm、x86、opencl、npu
  8. opt.set_valid_places("arm")
  9. # 4. 指定模型转化类型: naive_buffer、protobuf
  10. opt.set_model_type("naive_buffer")
  11. # 4. 输出模型地址
  12. opt.set_optimize_out("mobilenetv1_opt")
  13. # 5. 执行模型优化
  14. opt.run()

set_model_dir(model_dir)

设置模型文件夹路径,当需要从磁盘加载非combined模型时使用。

参数:

  • model_dir(str) - 模型文件夹路径

返回:None

set_model_file(model_file)

设置模型文件路径,加载combined形式模型时使用。

参数:

  • model_file(str) - 模型文件路径

set_param_file(param_file)

设置模型参数文件路径,加载combined形式模型时使用。

参数:

  • param_file(str) - 模型文件路径

set_model_type(type)

设置模型的输出类型,当前支持naive_bufferprotobuf两种格式,移动端预测需要转化为naive_buffer

naive_buffer的优化后模型为以.nb名称结尾的单个文件。protobuf的优化后模型为文件夹下的modelparams两个文件。将model重命名为__model__Netron打开,即可查看优化后的模型结构。

参数:

  • type(str) - 模型格式(naive_buffer/protobuf)

set_valid_places(valid_places)

设置可用的places列表。

参数:

  • valid_places(str) - 可用place列表,不同place用,隔开

示例:

  1. # 引用Paddlelite预测库
  2. from paddlelite.lite import *
  3. # 1. 创建opt实例
  4. opt=Opt()
  5. # 2. 指定转化类型: arm、x86、opencl、npu
  6. opt.set_valid_places("arm,opencl")
  7. # opt.set_valid_places("arm,npu")

set_optimize_out(optimized_model_name)

设置优化后模型的名称,优化后模型文件以.nb作为文件后缀。

参数:

  • optimized_model_name(str)

set_quant_model(quant_model)

设置是否使用 opt 中的动态离线量化功能。

参数:

  • quant_model(bool)

set_quant_type(quant_type)

设置动态离线量化的方式,支持两种量化方式(QUANT_INT16QUANT_INT8),即分别量化为int16int8。量化为int8对模型精度有一点影响,模型体积大概减小4倍。量化为int16对模型精度基本没有影响,模型体积大概减小2倍。

参数:

  • quant_type(str)-支持设置为QUANT_INT16QUANT_INT8

run()

执行模型优化,用以上接口设置完 模型路径model_typeoptimize_outvalid_places后,执行run()接口会根据以上设置转化模型,转化后模型保存在当前路径下。

run_optimize(model_dir, model_file, param_file, type, valid_places, optimized_model_name)

执行模型优化,无需设置以上接口,直接指定 模型路径model_typeoptimize_outvalid_places并执行模型转化。

参数:

  • model_dir(str) - 模型文件夹路径

  • model_file(str) - 模型文件路径

  • param_file(str) - 模型文件路径

  • type(str) - 模型格式(naive_buffer/protobuf)

  • valid_places(str) - 可用place列表,不同place用,隔开

  • optimized_model_name(str)

  1. # 引用Paddlelite预测库
  2. from paddlelite.lite import *
  3. # 1. 创建opt实例
  4. opt=Opt()
  5. # 2. 执行模型优化
  6. opt.run_optimize("./mobilenet_v1","","","arm","mobilenetv1_opt");