Pytochモデル変換、pth->onnx->trt(TensorRT engine)
2710 ワード
pth->onnx
##
torch.onnx onnx , 。
** :**
, torch.onnx 。 :
heads {'hm': 1, 'wh': 2, 'hps': 34, 'reg': 2, 'hm_hp': 17, 'hp_offset': 2}
Centerpose onnx , , 。
##tensor.size(dim) onnx Gather[0]
tensor.size(dim) tensor.shape[1] , onnx Gather[0] , , TensorRT 。
** :**
, tensor, 。
## onnx
‘%’ , ATen , torch/onnx/symbolic_opset9.py 。
/usr/local/lib/python3.6/dist-packages/torch/onnx/utils.py:562: UserWarning: ONNX export failed on ATen operator remainder because torch.onnx.symbolic_opset9.remainder does not exist
.format(op_name, opset_version, op_name))
Traceback (most recent call last):
File "transfer_centernet_dlav0_to_onnx2.py", line 65, in
onnx_module = torch.onnx.export(model,img,'multipose_dlav0_1x_modellast_process.onnx',verbose=True)
File "/usr/local/lib/python3.6/dist-packages/torch/onnx/__init__.py", line 132, in export
strip_doc_string, dynamic_axes)
File "/usr/local/lib/python3.6/dist-packages/torch/onnx/utils.py", line 64, in export
example_outputs=example_outputs, strip_doc_string=strip_doc_string, dynamic_axes=dynamic_axes)
File "/usr/local/lib/python3.6/dist-packages/torch/onnx/utils.py", line 329, in _export
_retain_param_name, do_constant_folding)
File "/usr/local/lib/python3.6/dist-packages/torch/onnx/utils.py", line 225, in _model_to_graph
_disable_torch_constant_prop=_disable_torch_constant_prop)
File "/usr/local/lib/python3.6/dist-packages/torch/onnx/utils.py", line 127, in _optimize_graph
graph = torch._C._jit_pass_onnx(graph, operator_export_type)
File "/usr/local/lib/python3.6/dist-packages/torch/onnx/__init__.py", line 163, in _run_symbolic_function
return utils._run_symbolic_function(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/torch/onnx/utils.py", line 563, in _run_symbolic_function
op_fn = sym_registry.get_registered_op(op_name, '', opset_version)
File "/usr/local/lib/python3.6/dist-packages/torch/onnx/symbolic_registry.py", line 91, in get_registered_op
return _registry[(domain, version)][opname]
KeyError: 'remainder'
** :**
torch/onnx/symbolic_opset9.py remainder ,
@parse_args( 'v', 'v')
def remainder(g,input,division):
return g.op("Remainder",input,division)