PaddlePaddle / PaddleDetection

Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.
Apache License 2.0
12.75k stars 2.88k forks source link

导出dino_swin失败 #8416

Open RobinHan24 opened 1 year ago

RobinHan24 commented 1 year ago

问题确认 Search before asking

请提出你的问题 Please ask your question

命令:python tools/export_model.py -c configs/dianwang/dino/dino_swin_coco.yml --output_dir=./inference_model_dianwang_0708_dinoSwin -o weights=output_dianwang_dino_swin_0707/dino_swin_coco/best_model

报错: Traceback (most recent call last): File "/data/qilibin/project/PaddleDetection/tools/export_model.py", line 116, in main() File "/data/qilibin/project/PaddleDetection/tools/export_model.py", line 112, in main run(FLAGS, cfg) File "/data/qilibin/project/PaddleDetection/tools/export_model.py", line 79, in run trainer.export(FLAGS.output_dir) File "/data/qilibin/project/PaddleDetection/ppdet/engine/trainer.py", line 1177, in export static_model, pruned_input_spec = self._get_infer_cfg_and_input_spec( File "/data/qilibin/project/PaddleDetection/ppdet/engine/trainer.py", line 1137, in _get_infer_cfg_and_input_spec input_spec, static_model.forward.main_program, File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 734, in main_program concrete_program = self.concrete_program File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 537, in concrete_program return self.concrete_program_specify_input_spec(input_spec=None) File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 577, in concrete_program_specify_input_spec concreteprogram, = self.get_concrete_program( File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 485, in get_concrete_program concrete_program, partial_program_layer = self._program_cache[cache_key] File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 955, in getitem self._caches[item_id] = self._build_once(item) File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 939, in _build_once concrete_program = ConcreteProgram.from_func_spec( File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/decorator.py", line 232, in fun return caller(func, *(extras + args), kw) File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/wrapped_decorator.py", line 26, in impl return wrapped_func(*args, *kwargs) File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/base.py", line 67, in impl return func(args, kwargs) File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 895, in from_func_spec error_data.raise_new_exception() File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/dygraph/dygraph_to_static/error.py", line 350, in raise_newexception six.exec("raise new_exception from None") File "", line 1, in TypeError: In transformed code:

File "/data/qilibin/project/PaddleDetection/ppdet/modeling/architectures/meta_arch.py", line 59, in forward
    if self.training:
File "/data/qilibin/project/PaddleDetection/ppdet/modeling/architectures/meta_arch.py", line 69, in forward
    for inp in inputs_list:
File "/data/qilibin/project/PaddleDetection/ppdet/modeling/architectures/meta_arch.py", line 76, in forward
    outs.append(self.get_pred())
File "/data/qilibin/project/PaddleDetection/ppdet/modeling/architectures/detr.py", line 116, in get_pred
    return self._forward()
File "/data/qilibin/project/PaddleDetection/ppdet/modeling/architectures/detr.py", line 79, in _forward
    body_feats = self.backbone(self.inputs)
File "/data/qilibin/project/PaddleDetection/ppdet/modeling/backbones/swin_transformer.py", line 722, in forward
    x = self.patch_embed(x['image'])
File "/data/qilibin/project/PaddleDetection/ppdet/modeling/backbones/swin_transformer.py", line 551, in forward
    if W % self.patch_size[1] != 0:
File "/data/qilibin/project/PaddleDetection/ppdet/modeling/backbones/swin_transformer.py", line 552, in forward
    # assert [H, W] == self.img_size[:2], "Input image size ({H}*{W}) doesn't match model ({}*{}).".format(H, W, self.img_size[0], self.img_size[1])
    if W % self.patch_size[1] != 0:
        x = F.pad(x, [0, self.patch_size[1] - W % self.patch_size[1], 0, 0])
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
    if H % self.patch_size[0] != 0:
        x = F.pad(x, [0, 0, 0, self.patch_size[0] - H % self.patch_size[0]])

File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/nn/functional/common.py", line 1728, in pad
    helper.append_op(
File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/layer_helper.py", line 45, in append_op
    return self.main_program.current_block().append_op(*args, **kwargs)
File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/framework.py", line 4040, in append_op
    op = Operator(
File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/framework.py", line 3012, in __init__
    self._update_desc_attr(attr_name, attr_val)
File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/framework.py", line 3362, in _update_desc_attr
    self._update_desc_plain_attr(name, val)
File "/home/qilibin/miniconda3/envs/paddle/lib/python3.9/site-packages/paddle/fluid/framework.py", line 3386, in _update_desc_plain_attr
    desc._set_int32s_attr(name, val)

TypeError: _set_int32s_attr(): incompatible function arguments. The following argument types are supported:
1. (self: paddle.fluid.libpaddle.OpDesc, arg0: str, arg1: List[int]) -> None

Invoked with: <paddle.fluid.libpaddle.OpDesc object at 0x7f77800d8330>, 'paddings', [0, var tmp_6 : LOD_TENSOR.shape(1,).dtype(int32).stop_gradient(False), 0, 0, 0, 0]

lyuwenyu commented 1 year ago

paddle什么版本

RobinHan24 commented 1 year ago

2.4.2.post117

lrp123456 commented 1 year ago

https://github.com/PaddlePaddle/Paddle/issues/52392,使用这个方式可以解决你的问题,但是我用swin做主干网络的Cascade RCNN网络导出后无法推理 报错如下: File "H:\lrp\PaddleDetection-release-2.6\deploy\python\infer.py", line 206, in predict self.predictor.run() ValueError: (InvalidArgument) Shape of Input(Paddings) should be equal to [6], but received [10]. [Hint: Expected paddings.size() == 6, but received paddings.size():10 != 6:6.] (at ..\paddle\phi\infermeta\unary.cc:2548) [operator < pad3d > error]

lrp123456 commented 1 year ago

@lyuwenyu 请问这个如何解决

lyuwenyu commented 8 months ago

用最新的试一下,,pad不应该有问题啊