lucasjinreal / yolov7_d2

🔥🔥🔥🔥 (Earlier YOLOv7 not official one) YOLO with Transformers and Instance Segmentation, with TensorRT acceleration! 🔥🔥🔥
GNU General Public License v3.0
3.13k stars 483 forks source link

Transfer swin_transfomer to ONNX failed #165

Closed TangJiamin closed 2 years ago

TangJiamin commented 2 years ago

Thanks for your awesome projects! But I met a problem, I trained a swin transfomer small model using train_custom.py, when I tried to using export_onnx.py to transfer .pth to onnx, it failed, the error as follow: Traceback (most recent call last): File "export_onnx.py", line 290, in output_names=["outs"]) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/onnx/init.py", line 309, in export export_modules_as_functions) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/onnx/utils.py", line 122, in export custom_opsets=custom_opsets, export_modules_as_functions=export_modules_as_functions) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/onnx/utils.py", line 724, in _export dynamic_axes=dynamic_axes) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/onnx/utils.py", line 499, in _model_to_graph graph, params, torch_out, module = _create_jit_graph(model, args) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/onnx/utils.py", line 440, in _create_jit_graph graph, torch_out = _trace_and_get_graph_from_model(model, args) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/onnx/utils.py", line 391, in _trace_and_get_graph_from_model torch.jit._get_trace_graph(model, args, strict=False, _force_outplace=False, _return_inputs_states=True) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/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 "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl return forward_call(*input, kwargs) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/jit/_trace.py", line 132, in forward self._force_outplace, File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/jit/_trace.py", line 118, in wrapper outs.append(self.inner(trace_inputs)) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl return forward_call(input, kwargs) File "/home/tangjiamin/anaconda3/envs/yolov7/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1098, in _slow_forward result = self.forward(*input, kwargs) File "/home/tangjiamin/3_projects/yolov7/yolov7/modeling/meta_arch/yolov7.py", line 296, in forward batched_inputs, self.training File "/home/tangjiamin/3_projects/yolov7/yolov7/modeling/meta_arch/yolov7.py", line 230, in preprocess_image images = [x["image"].to(self.device) for x in batched_inputs] File "/home/tangjiamin/3_projects/yolov7/yolov7/modeling/meta_arch/yolov7.py", line 230, in images = [x["image"].to(self.device) for x in batched_inputs] IndexError: too many indices for tensor of dimension 3

How can I solve this problem?

lucasjinreal commented 2 years ago

sinw not support onnx

TangJiamin commented 2 years ago

Fine, thanks for your reply!