PaddleDetection icon indicating copy to clipboard operation
PaddleDetection copied to clipboard

使用PaddleDetection2.5报错:AttributeError: module 'paddle.vision.ops' has no attribute 'generate_proposals'

Open weiluonika opened this issue 2 years ago • 2 comments

问题确认 Search before asking

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

请提出你的问题 Please ask your question

Load load_state_dict.... [09/15 09:15:48] ppdet.utils.checkpoint INFO: Finish loading model weights: /lzl/PaddleDetection-release-2.5/output/cascade_rcnn_vit_base_hrfpn_cae_1x_coco/best_model.pdparams loading annotations into memory... Done (t=0.04s) creating index... index created! [09/15 09:15:48] ppdet.engine INFO: Export inference config file to ./output_inference/cascade_rcnn_vit_base_hrfpn_cae_1x_coco/infer_cfg.yml Traceback (most recent call last): File "tools/export_model.py", line 108, in main() File "tools/export_model.py", line 104, in main run(FLAGS, cfg) File "tools/export_model.py", line 73, in run trainer.export(FLAGS.output_dir) File "/lzl/PaddleDetection-release-2.5/ppdet/engine/trainer.py", line 1060, in export save_dir) File "/lzl/PaddleDetection-release-2.5/ppdet/engine/trainer.py", line 1019, in _get_infer_cfg_and_input_spec input_spec, static_model.forward.main_program, File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 563, in main_program concrete_program = self.concrete_program File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 479, in concrete_program return self.concrete_program_specify_input_spec(input_spec=None) File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 517, in concrete_program_specify_input_spec *desired_input_spec) File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 427, in get_concrete_program concrete_program, partial_program_layer = self._program_cache[cache_key] File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 723, in getitem self._caches[item] = self._build_once(item) File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 714, in build_once **cache_key.kwargs) File "/Envs/lzl/lib/python3.6/site-packages/decorator.py", line 232, in fun return caller(func, *(extras + args), **kw) File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/wrapped_decorator.py", line 25, in impl return wrapped_func(*args, **kwargs) File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/base.py", line 51, in impl return func(*args, **kwargs) File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 668, in from_func_spec error_data.raise_new_exception() File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/error.py", line 336, in raise_new_exception six.exec("raise new_exception from None") File "", line 1, in AttributeError: In transformed code:

File "/lzl/PaddleDetection-release-2.5/ppdet/modeling/architectures/cascade_rcnn.py", line 136, in get_pred
    bbox_pred, bbox_num, mask_pred = self._forward()
File "/lzl/PaddleDetection-release-2.5/ppdet/modeling/architectures/cascade_rcnn.py", line 104, in _forward
    rois, rois_num, _ = self.rpn_head(body_feats, self.inputs)
File "/lzl/PaddleDetection-release-2.5/ppdet/modeling/proposal_generator/rpn_head.py", line 141, in forward
    rois, rois_num = self._gen_proposal(scores, deltas, anchors, inputs)
File "/lzl/PaddleDetection-release-2.5/ppdet/modeling/proposal_generator/rpn_head.py", line 198, in _gen_proposal
    # Generate proposals for each level and each batch.
    # Discard batch-computing to avoid sorting bbox cross different batches.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <--- HERE
    for i in range(batch_size):
        rpn_rois_list = []

File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/convert_call_func.py", line 258, in convert_call
    converted_call = convert_to_static(call_func)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 140, in convert_to_static
    static_func = _FUNCTION_CACHE.convert_with_cache(function)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 77, in convert_with_cache
    static_func = self._convert(func)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 115, in _convert
    root_wrapper = self._dygraph_to_static.get_static_ast(root)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/ast_transformer.py", line 58, in get_static_ast
    self.static_analysis_visitor = StaticAnalysisVisitor(root)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/static_analysis.py", line 207, in __init__
    self.run(ast_root)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/static_analysis.py", line 215, in run
    self.dfs_visit(ast_root)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/static_analysis.py", line 241, in dfs_visit
    func_type = self.dfs_visit(child)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/static_analysis.py", line 244, in dfs_visit
    self.dfs_visit(child)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/static_analysis.py", line 244, in dfs_visit
    self.dfs_visit(child)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/static_analysis.py", line 244, in dfs_visit
    self.dfs_visit(child)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/static_analysis.py", line 247, in dfs_visit
    cur_wrapper.node_var_type = self._get_node_var_type(cur_wrapper)
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/static_analysis.py", line 359, in _get_node_var_type
    if is_dygraph_api(node):
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/utils.py", line 201, in is_dygraph_api
    if is_api_in_module(node, DYGRAPH_TO_STATIC_MODULE_PREFIX):
File "/Envs/lzl/lib/python3.6/site-packages/paddle/fluid/dygraph/dygraph_to_static/utils.py", line 193, in is_api_in_module
    module_prefix))
File "<string>", line 1, in <module>


AttributeError: module 'paddle.vision.ops' has no attribute 'generate_proposals'

+++++++++++++++++++++ 在使用[PaddleDetection2.5版本的时候 使用cascade_rcnn_vit_base_hrfpn_cae_1x_coco进行训练然后 进行导出模型的时候报错。使用环境paddle2.2.2 python3.6.8 命令使用:python tools/export_model.py -c configs/vitdet/cascade_rcnn_vit_base_hrfpn_cae_1x_coco.yml --output_dir=./output_inference -o weights=/lzl/PaddleDetection-release-2.5/output/cascade_rcnn_vit_base_hrfpn_cae_1x_coco/best_model.pdparams 请问是什么原因

weiluonika avatar Sep 15 '22 01:09 weiluonika

请拉取最新代码。 https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/tutorials/INSTALL.md https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.5/ppdet/modeling/proposal_generator/proposal_generator.py#L65

nemonameless avatar Sep 15 '22 04:09 nemonameless

请拉取最新代码。 https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/tutorials/INSTALL.md https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.5/ppdet/modeling/proposal_generator/proposal_generator.py#L65

########## 拉取新版本后 依旧报错 错误还是一样的,请问有解决办法吗?

weiluonika avatar Sep 15 '22 05:09 weiluonika

一样的报错,有办法解决了吗

mrljwlm avatar Oct 19 '22 08:10 mrljwlm

https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.4/ppdet/modeling/proposal_generator/proposal_generator.py#L65 paddle2.2.2版本太低了,ppdet请换到2.4分支使用

nemonameless avatar Oct 20 '22 03:10 nemonameless

https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.4/ppdet/modeling/proposal_generator/proposal_generator.py#L65 paddle2.2.2版本太低了,ppdet请换到2.4分支使用

我也是同样问题,用paddle2.2.2是因为,用paddle2.4会报内存不够的错误。ppdet现在是2.5, 您是让换到2.4?用2.2.2的paddle+2.4的ppdet? 我参考您分享的链接(https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.4/ppdet/modeling/proposal_generator/proposal_generator.py#L65),把您标注的部分粘到对应的文件,同时注释了 if else部分。 结果报错从没有'generate_proposals', 变成了没有'distribute_fpn_proposals'

cunjing56 avatar Dec 29 '22 09:12 cunjing56

https://github.com/PaddlePaddle/PaddleDetection/blob/develop/docs/tutorials/INSTALL.md 请先尝试按照这个版本说明去安装环境。 自测cascade rcnn训练测试导出均ok:PaddleDetection 2.5,paddle 2.3.2,linux。 此外develop分支的PaddleDetection + develop版本的paddle每天都是有CI流程监测的肯定是没问题的。可以参考下。

nemonameless avatar Dec 29 '22 10:12 nemonameless