PP-yolo环境搭建及问题

一、环境搭建

二、问题

1、PP-yolo进行视频检测问题

(1)使用下面命令生成(导出)检测模型:

python tools/export_model.py -c configs/ppyolo/ppyolov2_r50vd_dcn_365e_coco.yml  -o weights=weights/ppyolo/ppyolov2_r50vd_dcn_365e_coco.pdparams

出现以下问题:

usage: infer.py [-h] [-c CONFIG] [-o [OPT [OPT ...]]] [--infer_dir INFER_DIR]
                [--infer_img INFER_IMG] [--output_dir OUTPUT_DIR]
                [--draw_threshold DRAW_THRESHOLD] [--slim_config SLIM_CONFIG]
                [--use_vdl USE_VDL] [--vdl_log_dir VDL_LOG_DIR]
                [--save_txt SAVE_TXT]
infer.py: error: unrecognized arguments: --camera=demo/20201019130222_Channel4.avi
root@d87b6a408088:/data/my_docker/lyy/object-detection/PaddleDetection-release-2.1# python tools/export_model.py -c configs/ppyolo/ppyolov2_r50vd_dcn_365e_coco.yml  -o weights=weights/ppyolo/ppyolov2_r50vd_dcn_365e_coco.pdparams 
[07/13 09:46:14] ppdet.utils.checkpoint INFO: Finish loading model weights: weights/ppyolo/ppyolov2_r50vd_dcn_365e_coco.pdparams
[07/13 09:46:14] ppdet.engine INFO: Export inference config file to output_inference/ppyolov2_r50vd_dcn_365e_coco/infer_cfg.yml
Traceback (most recent call last):
  File "tools/export_model.py", line 108, in <module>
    main()
  File "tools/export_model.py", line 104, in main
    run(FLAGS, cfg)
  File "tools/export_model.py", line 72, in run
    trainer.export(FLAGS.output_dir)
  File "/usr/local/lib/python3.6/dist-packages/paddledet-2.1.0-py3.6.egg/ppdet/engine/trainer.py", line 505, in export
    input_spec, static_model.forward.main_program,
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 534, in main_program
    concrete_program = self.concrete_program
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 454, in concrete_program
    return self.concrete_program_specify_input_spec(input_spec=None)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 488, in concrete_program_specify_input_spec
    *desired_input_spec)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 402, in get_concrete_program
    concrete_program, partial_program_layer = self._program_cache[cache_key]
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 711, in __getitem__
    self._caches[item] = self._build_once(item)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 702, in _build_once
    class_instance=cache_key.class_instance)
  File "<decorator-gen-65>", line 2, in from_func_spec
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/wrapped_decorator.py", line 25, in __impl__
    return wrapped_func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/base.py", line 40, in __impl__
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 620, in from_func_spec
    static_func = convert_to_static(dygraph_function)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 141, in convert_to_static
    static_func = _FUNCTION_CACHE.convert_with_cache(function)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 78, in convert_with_cache
    static_func = self._convert(func)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 116, in _convert
    root_wrapper = self._dygraph_to_static.get_static_ast(root)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/ast_transformer.py", line 61, in get_static_ast
    self.transfer_from_node_type(self.static_analysis_root)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/ast_transformer.py", line 92, in transfer_from_node_type
    self._apply(transformer, node_wrapper, log_level=index + 1)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/ast_transformer.py", line 65, in _apply
    transformer(node_wrapper).transform()
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py", line 55, in transform
    self.visit(self.root)
  File "/usr/lib/python3.6/ast.py", line 253, in visit
    return visitor(node)
  File "/usr/lib/python3.6/ast.py", line 308, in generic_visit
    value = self.visit(value)
  File "/usr/lib/python3.6/ast.py", line 253, in visit
    return visitor(node)
  File "/usr/lib/python3.6/ast.py", line 308, in generic_visit
    value = self.visit(value)
  File "/usr/lib/python3.6/ast.py", line 253, in visit
    return visitor(node)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py", line 63, in visit_If
    true_func_node, false_func_node)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/ifelse_transformer.py", line 548, in create_convert_ifelse_node
    _, cond_node = create_assign_node(return_name_ids, convert_ifelse_layer)
  File "/usr/local/lib/python3.6/dist-packages/paddle/fluid/dygraph/dygraph_to_static/utils.py", line 446, in create_assign_node
    assign_node = gast.Assign(targets=[targets], value=node)
  File "/usr/local/lib/python3.6/dist-packages/gast/gast.py", line 19, in create_node
    format(Name, nbparam, len(Fields))
AssertionError: Bad argument number for Assign: 2, expecting 3
 

解决方式:

查看gast版本,降低为pip install gast==0.3.3

出现以下语句则成功导出模型,

[07/13 09:56:09] ppdet.utils.checkpoint INFO: Finish loading model weights: weights/ppyolo/ppyolov2_r50vd_dcn_365e_coco.pdparams
[07/13 09:56:09] ppdet.engine INFO: Export inference config file to output_inference/ppyolov2_r50vd_dcn_365e_coco/infer_cfg.yml
W0713 09:56:12.549374  2440 device_context.cc:404] Please NOTE: device: 0, GPU Compute Capability: 7.5, Driver API Version: 11.0, Runtime API Version: 10.2
W0713 09:56:12.549412  2440 device_context.cc:422] device: 0, cuDNN Version: 8.0.
[07/13 09:56:38] ppdet.engine INFO: Export model and saved in output_inference/ppyolov2_r50vd_dcn_365e_coco

对应文件夹下生成如下文件:

(2)使用下面命令执行视频检测:

python deploy/python/infer.py --model_dir=output_inference/ppyolov2_r50vd_dcn_365e_coco --video_file=demo/test.avi --use_gpu=False

不使用GPU 可以成功检测,并输出检测结果,若--use_gpu=True 则报以下错:

--------------------------------------
C++ Traceback (most recent call last):
--------------------------------------
0   paddle::framework::SignalHandle(char const*, int)
1   paddle::platform::GetCurrentTraceBackString[abi:cxx11]()

----------------------
Error Message Summary:
----------------------
FatalError: `Segmentation fault` is detected by the operating system.
  [TimeInfo: *** Aborted at 1626153133 (unix time) try "date -d @1626153133" if you are using GNU date ***]
  [SignalInfo: *** SIGSEGV (@0x0) received by PID 2860 (TID 0x7fd191de9740) from PID 0 ***]

Segmentation fault (core dumped)

解决方式:

(1)查看cuda与cudnn版本:与官方提供版本一致,注意cudnn版本。

(2)确认paddlepaddle下载版本是cpu还是gpu版本。注意' 2.1.1.post110'

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值