专栏算法工具链如何导出 地平线的BEV 的onnx模型

如何导出 地平线的BEV 的onnx模型

已解决
海平面ovo2023-01-18
149
12

用户您好,请详细描述您所遇到的问题。

1.硬件获取渠道:

2.当前系统镜像版本:

3.当前天工开物版本:

4.问题定位:

5.开发的demo/案例:

6.需要提供的解决方案:

算法工具链
评论2
0/1000
  • 颜值即正义
    Lv.2
    您好,可以在config文件中添加onnx_cfg参数组 来导出:

    导出 float onnx,config添加:

    使用以下命令:

    python3 tools/export_onnx.py --config /workspace/bev_config_path.py

    注:导出的bev onnx包含plugin算子

    2023-01-30
    0
    10
    • 海平面ovo回复颜值即正义:

      修改了,但发送了一下错误

      "is desired. ".format(mode)

      Traceback (most recent call last):

      File "tools/export_onnx.py", line 86, in

      export_to_onnx(model, (example_input, {}), file_path, **kwargs)

      File "/usr/local/lib64/python3.6/site-packages/horizon_plugin_pytorch/utils/onnx_helper.py", line 196, in export_to_onnx

      custom_opsets=custom_opsets,

      File "/root/.local/lib/python3.6/site-packages/torch/onnx/__init__.py", line 320, in export

      custom_opsets, enable_onnx_checker, use_external_data_format)

      File "/root/.local/lib/python3.6/site-packages/torch/onnx/utils.py", line 111, in export

      custom_opsets=custom_opsets, use_external_data_format=use_external_data_format)

      File "/root/.local/lib/python3.6/site-packages/torch/onnx/utils.py", line 729, in _export

      dynamic_axes=dynamic_axes)

      File "/root/.local/lib/python3.6/site-packages/torch/onnx/utils.py", line 493, in _model_to_graph

      graph, params, torch_out, module = _create_jit_graph(model, args)

      File "/root/.local/lib/python3.6/site-packages/torch/onnx/utils.py", line 437, in _create_jit_graph

      graph, torch_out = _trace_and_get_graph_from_model(model, args)

      File "/root/.local/lib/python3.6/site-packages/torch/onnx/utils.py", line 388, in _trace_and_get_graph_from_model

      torch.jit._get_trace_graph(model, args, strict=False, _force_outplace=False, _return_inputs_states=True)

      File "/root/.local/lib/python3.6/site-packages/torch/jit/_trace.py", line 1166, in _get_trace_graph

      outs = ONNXTracedModule(f, strict, _force_outplace, return_inputs, _return_inputs_states)(*args, **kwargs)

      File "/usr/local/lib/python3.6/site-packages/hat/utils/module_patch.py", line 46, in _wrap

      return fn(self, *args, **kwargs)

      File "/root/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl

      return forward_call(*input, **kwargs)

      File "/root/.local/lib/python3.6/site-packages/torch/jit/_trace.py", line 95, in forward

      in_vars, in_desc = _flatten(args)

      RuntimeError: Only tuples, lists and Variables are supported as JIT inputs/outputs. Dictionaries and strings are also accepted, but their usage is not recommended. Here, received an input of unsupported type: placeholder

      2023-02-13
      0
    • 颜值即正义回复海平面ovo:

      deploy_inputs = { "img": torch.randn(6,3,512,960), "points": torch.rand(6, 128, 128, 2) } ,因为placeholder需要输入 没有输入会报错 可以固定住shape

      2023-02-15
      0
    • 海平面ovo回复颜值即正义:

      sorry, 我发现你可能误解我的意思了,我们的错误是数据类型错误,

      2023-02-20
      0
    • 颜值即正义回复海平面ovo:
      是的,bev的config中类型是placeholder,导出时将deploy_inputs 的value改为普通tensor即可。

      改为:

      您尝试了如果还有报错可以贴出来哦。

      2023-02-20
      0
    • 海平面ovo回复颜值即正义:

      可以导出了 ,有什么 地平线 对应的 bev 和 hat 学习的链接推荐吗?

      2023-02-27
      0
    • 颜值即正义回复海平面ovo:
      2023-02-27
      0
    • 海平面ovo回复颜值即正义:

      导出的 float.onnx 模型,的两个输入 [6x3x512x960] [6x128x128x2] 第一个是rgb 输出吗? 第二个输入需要量化或者反量化吗? 输出的37 个结果 需要反量化吗?

      2023-03-01
      0
    • 颜值即正义回复海平面ovo:

      1.第一个输入是rgb图片;

      2.第二个输入需按照featuremap形式准备数据,需要做量化和反量化,如果align_shape和valid_shape不同还需要做padding,见PTQ&QAT方案板端验证注意事项 (horizon.ai) QAT featuremap输入;

      3.根据hrt_model_exec model_info --model_file XXX.hbm 查看是否有quanti type和scale值以及输出类型判断,根据scale值做反量化。

      2023-03-01
      0
    • 海平面ovo回复颜值即正义:

      有个问题,我导出的不是 浮点模型吗? 为什么第二个输入还要量化呢?

      2023-03-02
      0
    • 颜值即正义回复海平面ovo:

      单纯是浮点模型的话不需要量化,就是一个普通的onnx,但是里面包含了地平线的算子,可以查看一下grid_sample。

      2023-03-02
      0
  • 颜值即正义
    Lv.2
    2023-04-24
    0
    0