Skip to content

对faster rcnn 进行export_model报错 #9075

@Ochre-amber

Description

@Ochre-amber

问题确认 Search before asking

  • 我已经搜索过问题,但是没有找到解答。I have searched the question and found no related answer.

请提出你的问题 Please ask your question

为了将faster rcnn转为onnx模型,考虑先使用export_model.py导出,运行命令:
python tools/export_model.py -c configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.yml -o weights=output/frcnn/model_final.pdparams export_onnx=True --output_dir=output_inference/frcnn/但出现报错

[07/28 01:10:02] ppdet.utils.checkpoint INFO: Finish loading model weights: frcnn/model_final.pdparams
[07/28 01:10:02] ppdet.engine WARNING: Exporting RCNN model to ONNX only support batch_size = 1
[07/28 01:10:02] ppdet.data.source.category WARNING: anno_file '/aidata/CYHan/project_benke/mmdetection-main/data/coco/annotations/instances_val2017.json' is None or not set or not exist, please recheck TrainDataset/EvalDataset/TestDataset.anno_path, otherwise the default categories will be used by metric_type.
[07/28 01:10:02] ppdet.data.source.category WARNING: metric_type: COCO, load default categories of COCO.
[07/28 01:10:02] ppdet.engine INFO: Export inference config file to output_inference/frcnn/faster_rcnn_r50_fpn_1x_coco/infer_cfg.yml
Traceback (most recent call last):
  File "tools/export_model.py", line 118, in <module>
    main()
  File "tools/export_model.py", line 114, in main
    run(FLAGS, cfg)
  File "tools/export_model.py", line 80, in run
    trainer.export(FLAGS.output_dir, for_fd=FLAGS.for_fd)
  File "/project/PaddleDetection-develop/ppdet/engine/trainer.py", line 1257, in export
    static_model, pruned_input_spec = self._get_infer_cfg_and_input_spec(
  File "/project/PaddleDetection-develop/ppdet/engine/trainer.py", line 1209, in _get_infer_cfg_and_input_spec
    input_spec, static_model.forward.main_program,
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/jit/dy2static/program_translator.py", line 1062, in main_program
    concrete_program = self.concrete_program
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/jit/dy2static/program_translator.py", line 941, in concrete_program
    return self.concrete_program_specify_input_spec(input_spec=None)
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/jit/dy2static/program_translator.py", line 986, in concrete_program_specify_input_spec
    concrete_program, _ = self.get_concrete_program(
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/jit/dy2static/program_translator.py", line 875, in get_concrete_program
    concrete_program, partial_program_layer = self._program_cache[
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/jit/dy2static/program_translator.py", line 1648, in __getitem__
    self._caches[item_id] = self._build_once(item)
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/jit/dy2static/program_translator.py", line 1575, in _build_once
    concrete_program = ConcreteProgram.from_func_spec(
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/decorator.py", line 232, in fun
    return caller(func, *(extras + args), **kw)
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/base/wrapped_decorator.py", line 26, in __impl__
    return wrapped_func(*args, **kwargs)
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/base/dygraph/base.py", line 68, in __impl__
    return func(*args, **kwargs)
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/jit/dy2static/program_translator.py", line 1346, in from_func_spec
    error_data.raise_new_exception()
  File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/jit/dy2static/error.py", line 452, in raise_new_exception
    raise new_exception from None
IndexError: In transformed code:

    File "/project/PaddleDetection-develop/ppdet/modeling/architectures/meta_arch.py", line 59, in forward
        if self.training:
    File "/project/PaddleDetection-develop/ppdet/modeling/architectures/meta_arch.py", line 69, in forward
        for inp in inputs_list:
    File "/project/PaddleDetection-develop/ppdet/modeling/architectures/meta_arch.py", line 76, in forward
        outs.append(self.get_pred())
    File "/project/PaddleDetection-develop/ppdet/modeling/architectures/faster_rcnn.py", line 122, in get_pred
        if self.use_extra_data:
    File "/project/PaddleDetection-develop/ppdet/modeling/architectures/faster_rcnn.py", line 130, in get_pred
        bbox_pred, bbox_num = self._forward()
    File "/project/PaddleDetection-develop/ppdet/modeling/architectures/faster_rcnn.py", line 79, in _forward
        if self.training:
    File "/project/PaddleDetection-develop/ppdet/modeling/architectures/faster_rcnn.py", line 89, in _forward
        bbox, bbox_num, nms_keep_idx = self.bbox_post_process(
    File "/project/PaddleDetection-develop/ppdet/modeling/post_process.py", line 69, in __call__
        if self.nms is not None:
    File "/project/PaddleDetection-develop/ppdet/modeling/post_process.py", line 70, in __call__
        bboxes, score = self.decode(head_out, rois, im_shape, scale_factor)
    File "/project/PaddleDetection-develop/ppdet/modeling/layers.py", line 464, in __call__
        if self.export_onnx:
    File "/project/PaddleDetection-develop/ppdet/modeling/layers.py", line 465, in __call__
        if self.export_onnx:
            onnx_rois_num_per_im = rois_num[0]
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
            origin_shape = paddle.expand(im_shape[0, :],
                                         [onnx_rois_num_per_im, 2])

    File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/base/framework.py", line 2500, in __getitem__
        return _getitem_static(self, item)
    File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/base/variable_index.py", line 800, in _getitem_static
        ) = parse_index(x, indices)
    File "/home/nvidia/plugs/yes/envs/paddle/lib/python3.8/site-packages/paddle/base/variable_index.py", line 300, in parse_index
        and x.shape[dim] is not None

    IndexError: tuple index out of range

请问如何正确导出faster rcnn?

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions