FastDeploy icon indicating copy to clipboard operation
FastDeploy copied to clipboard

yolov7模型转换成paddlepaddle模型出错

Open lifw555 opened this issue 3 years ago • 1 comments

Environment

OS Platform: Windows x64 Hardware: CPU Program Language: e.g. Python 3.9

fastdeploy-tools 0.0.1 x2paddle 1.3.9 paddlepaddle 2.4.0

Problem description

说明:转换的onnx模型,是从yolov7的pt模型转换过来的,使用的方法,在git的yolov7 repo的根目录下执行:

python export.py --grid --dynamic --weights weight/yolov7-finetune.pt

然后,再执行如下命令,报错信息如下:

(x2paddle) E:\git_workspace\yolov7>fastdeploy convert --framework onnx --model yolov7-finetune.onnx --save_dir pd_model
Traceback (most recent call last):
  File "D:\anaconda3\envs\x2paddle\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "D:\anaconda3\envs\x2paddle\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "D:\anaconda3\envs\x2paddle\Scripts\fastdeploy.exe\__main__.py", line 7, in <module>
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\common_tools\common_tools.py", line 109, in main
    onnx2paddle(
TypeError: onnx2paddle() got an unexpected keyword argument 'input_shape_dict'

lifw555 avatar Dec 02 '22 14:12 lifw555

@lifw555 可以手动安装一下X2Paddle最新版本解决这个问题

git clone https://github.com/PaddlePaddle/X2Paddle.git
cd X2Paddle
python setup.py install

我们这周会发布新的X2Paddle的包~

wjj19950828 avatar Dec 05 '22 07:12 wjj19950828

还是不好使。报一样的错误。

不过,我暂时不用了,重新使用paddlepaddle训练了。

lifw555 avatar Dec 21 '22 00:12 lifw555

@wjj19950828 直接使用xpaddle执行,x2paddle是develop分支,本地 pip setup.py install 安装的。

最新的报错信息如下:

(x2paddle) E:\git_workspace\X2Paddle>x2paddle --framework onnx --model test.onnx --save_dir pd_model
model ir_version: 7, op version: 12
Shape inferencing ...
Stopping at incomplete shape inference at EfficientNMS_TRT: x2paddle_num_dets
node inputs:
name: "x2paddle__end2end_Slice_output_0"
type {
  tensor_type {
    elem_type: 1
    shape {
      dim {
        dim_value: 1
      }
      dim {
        dim_value: 25200
      }
      dim {
        dim_value: 4
      }
    }
  }
}

name: "x2paddle__end2end_Mul_output_0"
type {
  tensor_type {
    elem_type: 1
    shape {
      dim {
        dim_value: 1
      }
      dim {
        dim_value: 25200
      }
      dim {
        dim_value: 33
      }
    }
  }
}

node outputs:
name: "x2paddle_num_dets"
type {
  tensor_type {
    elem_type: 0
  }
}

name: "x2paddle_det_boxes"
type {
  tensor_type {
    elem_type: 0
  }
}

name: "x2paddle_det_scores"
type {
  tensor_type {
    elem_type: 0
  }
}

name: "x2paddle_det_classes"
type {
  tensor_type {
    elem_type: 0
  }
}

!!!!!!!!!!
Shape inferenced.
D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\decoder\onnx_decoder.py:362: DeprecationWarning: `mapping.TENSOR_TYPE_TO_NP_TYPE` is now deprecated and will be removed in the next release or so.To silence this warning, please use `helper.{self._future_function}` instead.
  TENSOR_TYPE_TO_NP_TYPE[item.type.tensor_type.elem_type],
Traceback (most recent call last):
  File "D:\anaconda3\envs\x2paddle\Scripts\x2paddle-script.py", line 33, in <module>
    sys.exit(load_entry_point('x2paddle==1.3.9', 'console_scripts', 'x2paddle')())
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\convert.py", line 489, in main
    onnx2paddle(
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\convert.py", line 303, in onnx2paddle
    model = ONNXDecoder(model_path, input_shape_dict, enable_onnx_checker)
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\decoder\onnx_decoder.py", line 402, in __init__
    self.graph = ONNXGraph(onnx_model, input_shape_dict)
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\decoder\onnx_decoder.py", line 197, in __init__
    self.collect_value_infos()
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\decoder\onnx_decoder.py", line 362, in collect_value_infos
    TENSOR_TYPE_TO_NP_TYPE[item.type.tensor_type.elem_type],
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\onnx\mapping.py", line 105, in __getitem__
    return super().__getitem__(key)
KeyError: 0

本地安装的组件如下:

(x2paddle) E:\git_workspace\X2Paddle>pip list
Package                      Version
---------------------------- ---------
absl-py                      1.3.0
astor                        0.8.1
astunparse                   1.6.3
brotlipy                     0.7.0
cachetools                   5.2.0
certifi                      2022.9.24
cffi                         1.15.1
charset-normalizer           2.0.4
coloredlogs                  15.0.1
cryptography                 38.0.1
decorator                    5.1.1
fastdeploy-tools             0.0.1
flatbuffers                  22.11.23
gast                         0.4.0
google-auth                  2.15.0
google-auth-oauthlib         0.4.6
google-pasta                 0.2.0
grpcio                       1.51.1
h5py                         3.7.0
humanfriendly                10.0
idna                         3.4
importlib-metadata           5.2.0
keras                        2.11.0
libclang                     14.0.6
Markdown                     3.4.1
MarkupSafe                   2.1.1
mkl-fft                      1.3.1
mkl-random                   1.2.2
mkl-service                  2.4.0
mpmath                       1.2.1
numpy                        1.23.3
oauthlib                     3.2.2
onnx                         1.13.0
onnxruntime                  1.13.1
opt-einsum                   3.3.0
packaging                    22.0
paddle-bfloat                0.1.7
paddlepaddle                 2.4.0
Pillow                       9.2.0
pip                          22.2.2
protobuf                     3.20.3
pyasn1                       0.4.8
pyasn1-modules               0.2.8
pycparser                    2.21
pyOpenSSL                    22.0.0
pyreadline3                  3.4.1
PySocks                      1.7.1
requests                     2.28.1
requests-oauthlib            1.3.1
rsa                          4.9
setuptools                   65.5.0
six                          1.16.0
sympy                        1.11.1
tensorboard                  2.11.0
tensorboard-data-server      0.6.1
tensorboard-plugin-wit       1.8.1
tensorflow                   2.11.0
tensorflow-estimator         2.11.0
tensorflow-intel             2.11.0
tensorflow-io-gcs-filesystem 0.29.0
termcolor                    2.1.1
torch                        1.13.0
torchaudio                   0.13.0
torchvision                  0.14.0
typing_extensions            4.3.0
urllib3                      1.26.12
Werkzeug                     2.2.2
wheel                        0.37.1
win-inet-pton                1.1.0
wincertstore                 0.2
wrapt                        1.14.1
x2paddle                     1.3.9
zipp                         3.11.0

lifw555 avatar Dec 28 '22 07:12 lifw555

导出 onnx时, 去掉 --dynamic 参数就可以了 这里的例子参数有问题:https://github.com/PaddlePaddle/FastDeploy/tree/develop/examples/vision/detection/yolov7#%E5%AF%BC%E5%87%BAonnx%E6%A8%A1%E5%9E%8B

可以正常转换的onnx导出命令,如下:

python models/export.py --grid --weights PATH/TO/yolov7.pt

lifw555 avatar Dec 28 '22 08:12 lifw555

@wjj19950828 直接使用xpaddle执行,x2paddle是develop分支,本地 pip setup.py install 安装的。

最新的报错信息如下:

(x2paddle) E:\git_workspace\X2Paddle>x2paddle --framework onnx --model test.onnx --save_dir pd_model
model ir_version: 7, op version: 12
Shape inferencing ...
Stopping at incomplete shape inference at EfficientNMS_TRT: x2paddle_num_dets
node inputs:
name: "x2paddle__end2end_Slice_output_0"
type {
  tensor_type {
    elem_type: 1
    shape {
      dim {
        dim_value: 1
      }
      dim {
        dim_value: 25200
      }
      dim {
        dim_value: 4
      }
    }
  }
}

name: "x2paddle__end2end_Mul_output_0"
type {
  tensor_type {
    elem_type: 1
    shape {
      dim {
        dim_value: 1
      }
      dim {
        dim_value: 25200
      }
      dim {
        dim_value: 33
      }
    }
  }
}

node outputs:
name: "x2paddle_num_dets"
type {
  tensor_type {
    elem_type: 0
  }
}

name: "x2paddle_det_boxes"
type {
  tensor_type {
    elem_type: 0
  }
}

name: "x2paddle_det_scores"
type {
  tensor_type {
    elem_type: 0
  }
}

name: "x2paddle_det_classes"
type {
  tensor_type {
    elem_type: 0
  }
}

!!!!!!!!!!
Shape inferenced.
D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\decoder\onnx_decoder.py:362: DeprecationWarning: `mapping.TENSOR_TYPE_TO_NP_TYPE` is now deprecated and will be removed in the next release or so.To silence this warning, please use `helper.{self._future_function}` instead.
  TENSOR_TYPE_TO_NP_TYPE[item.type.tensor_type.elem_type],
Traceback (most recent call last):
  File "D:\anaconda3\envs\x2paddle\Scripts\x2paddle-script.py", line 33, in <module>
    sys.exit(load_entry_point('x2paddle==1.3.9', 'console_scripts', 'x2paddle')())
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\convert.py", line 489, in main
    onnx2paddle(
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\convert.py", line 303, in onnx2paddle
    model = ONNXDecoder(model_path, input_shape_dict, enable_onnx_checker)
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\decoder\onnx_decoder.py", line 402, in __init__
    self.graph = ONNXGraph(onnx_model, input_shape_dict)
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\decoder\onnx_decoder.py", line 197, in __init__
    self.collect_value_infos()
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\x2paddle-1.3.9-py3.9.egg\x2paddle\decoder\onnx_decoder.py", line 362, in collect_value_infos
    TENSOR_TYPE_TO_NP_TYPE[item.type.tensor_type.elem_type],
  File "D:\anaconda3\envs\x2paddle\lib\site-packages\onnx\mapping.py", line 105, in __getitem__
    return super().__getitem__(key)
KeyError: 0

本地安装的组件如下:

(x2paddle) E:\git_workspace\X2Paddle>pip list
Package                      Version
---------------------------- ---------
absl-py                      1.3.0
astor                        0.8.1
astunparse                   1.6.3
brotlipy                     0.7.0
cachetools                   5.2.0
certifi                      2022.9.24
cffi                         1.15.1
charset-normalizer           2.0.4
coloredlogs                  15.0.1
cryptography                 38.0.1
decorator                    5.1.1
fastdeploy-tools             0.0.1
flatbuffers                  22.11.23
gast                         0.4.0
google-auth                  2.15.0
google-auth-oauthlib         0.4.6
google-pasta                 0.2.0
grpcio                       1.51.1
h5py                         3.7.0
humanfriendly                10.0
idna                         3.4
importlib-metadata           5.2.0
keras                        2.11.0
libclang                     14.0.6
Markdown                     3.4.1
MarkupSafe                   2.1.1
mkl-fft                      1.3.1
mkl-random                   1.2.2
mkl-service                  2.4.0
mpmath                       1.2.1
numpy                        1.23.3
oauthlib                     3.2.2
onnx                         1.13.0
onnxruntime                  1.13.1
opt-einsum                   3.3.0
packaging                    22.0
paddle-bfloat                0.1.7
paddlepaddle                 2.4.0
Pillow                       9.2.0
pip                          22.2.2
protobuf                     3.20.3
pyasn1                       0.4.8
pyasn1-modules               0.2.8
pycparser                    2.21
pyOpenSSL                    22.0.0
pyreadline3                  3.4.1
PySocks                      1.7.1
requests                     2.28.1
requests-oauthlib            1.3.1
rsa                          4.9
setuptools                   65.5.0
six                          1.16.0
sympy                        1.11.1
tensorboard                  2.11.0
tensorboard-data-server      0.6.1
tensorboard-plugin-wit       1.8.1
tensorflow                   2.11.0
tensorflow-estimator         2.11.0
tensorflow-intel             2.11.0
tensorflow-io-gcs-filesystem 0.29.0
termcolor                    2.1.1
torch                        1.13.0
torchaudio                   0.13.0
torchvision                  0.14.0
typing_extensions            4.3.0
urllib3                      1.26.12
Werkzeug                     2.2.2
wheel                        0.37.1
win-inet-pton                1.1.0
wincertstore                 0.2
wrapt                        1.14.1
x2paddle                     1.3.9
zipp                         3.11.0

请问一下这个问题解决了吗,我现在也遇到了同样的问题

Sun-Happy-YKX avatar Feb 08 '23 10:02 Sun-Happy-YKX

没尝试了。

lifw555 avatar Feb 09 '23 13:02 lifw555