PaddleOCR icon indicating copy to clipboard operation
PaddleOCR copied to clipboard

use custom trained layout analysis model

Open Mahmuod1 opened this issue 2 years ago • 4 comments

请提供下述完整信息以便快速定位问题/Please provide the following information to quickly locate the problem

  • 系统环境/System Environment: ubuntu 18

  • 版本号/Version: Paddle:2.3.0 PaddleOCR: 问题相关组件/Related components: 2.6.0.1

  • 运行指令/Command Code:

  • from paddleocr import PPStructure

  • structure_model=PPStructure(layout_model_dir='/home/administrator/PPStructure_model/picodet_lcnet_x1_0_layout/')

  • this path have the inference model I exported after training a custom layout analysis

  • when load the model have no problem

  • but when i use it and pass an image to it get this error

  • 完整报错/Complete Error Message: In user code:

    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 "/content/PaddleDetection/ppdet/engine/trainer.py", line 1060, in export save_dir) File "/content/PaddleDetection/ppdet/engine/trainer.py", line 1019, in _get_infer_cfg_and_input_spec input_spec, static_model.forward.main_program, File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 580, in main_program concrete_program = self.concrete_program File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 488, in concrete_program return self.concrete_program_specify_input_spec(input_spec=None) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 528, in concrete_program_specify_input_spec *desired_input_spec, with_hook=with_hook) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 436, in get_concrete_program concrete_program, partial_program_layer = self._program_cache[cache_key] File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 801, in getitem self._caches[item_id] = self._build_once(item) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 790, in _build_once **cache_key.kwargs) File "", line 2, in from_func_spec

    File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/wrapped_decorator.py", line 25, in impl return wrapped_func(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/base.py", line 51, in impl return func(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 733, in from_func_spec outputs = static_func(*inputs) File "/tmp/tmpps2bubkn.py", line 101, in forward false_fn_5, (), (inputs, self), (out,)) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 211, in convert_ifelse out = _run_py_ifelse(pred, true_fn, false_fn, true_args, false_args) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 257, in _run_py_ifelse return true_fn(*true_args) if pred else false_fn(*false_args) File "/tmp/tmpps2bubkn.py", line 84, in false_fn_5 for_loop_body_0, [inputs_list, __for_loop_var_index_0]) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 45, in convert_while_loop loop_vars = _run_py_while(cond, body, loop_vars) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 59, in _run_py_while loop_vars = body(*loop_vars) File "/tmp/tmpps2bubkn.py", line 79, in for_loop_body_0 dy2static.convert_call(self.get_pred)()) File "/tmp/tmpqqnnudw1.py", line 46, in get_pred __return_value_0,)) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 211, in convert_ifelse out = _run_py_ifelse(pred, true_fn, false_fn, true_args, false_args) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 257, in _run_py_ifelse return true_fn(*true_args) if pred else false_fn(*false_args) File "/tmp/tmpqqnnudw1.py", line 41, in false_fn_7 __return_value_0, self), (__return_value_0, output)) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 211, in convert_ifelse out = _run_py_ifelse(pred, true_fn, false_fn, true_args, false_args) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/dygraph_to_static/convert_operators.py", line 257, in _run_py_ifelse return true_fn(*true_args) if pred else false_fn(*false_args) File "/content/PaddleDetection/ppdet/modeling/architectures/picodet.py", line 89, in get_pred bbox_pred, bbox_num = self._forward() File "/content/PaddleDetection/ppdet/modeling/architectures/picodet.py", line 64, in _forward body_feats = self.backbone(self.inputs) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/layers.py", line 930, in call return self._dygraph_call_func(*inputs, **kwargs) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/layers.py", line 915, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "/content/PaddleDetection/ppdet/modeling/backbones/lcnet.py", line 256, in forward x = self.conv1(x) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/layers.py", line 930, in call return self._dygraph_call_func(*inputs, **kwargs) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/layers.py", line 915, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "/content/PaddleDetection/ppdet/modeling/backbones/lcnet.py", line 95, in forward x = self.conv(x) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/layers.py", line 930, in call return self._dygraph_call_func(*inputs, **kwargs) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/dygraph/layers.py", line 915, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "/usr/local/lib/python3.7/dist-packages/paddle/nn/layer/conv.py", line 678, in forward use_cudnn=self._use_cudnn) File "/usr/local/lib/python3.7/dist-packages/paddle/nn/functional/conv.py", line 169, in _conv_nd type=op_type, inputs=inputs, outputs=outputs, attrs=attrs) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/layer_helper.py", line 44, in append_op return self.main_program.current_block().append_op(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/framework.py", line 3621, in append_op attrs=kwargs.get("attrs", None)) File "/usr/local/lib/python3.7/dist-packages/paddle/fluid/framework.py", line 2635, in init for frame in traceback.extract_stack():

    InvalidArgumentError: The conv2d Op's Input Variable Input contains uninitialized Tensor. [Hint: Expected t->IsInitialized() == true, but received t->IsInitialized():0 != true:1.] (at /paddle/paddle/fluid/framework/operator.cc:2004) [operator < conv2d > error] File "/home/administrator/Music/use_ppstruction/main.py", line 9, in res=structure_model(img)

Mahmuod1 avatar Oct 17 '22 13:10 Mahmuod1

from paddleocr import PPStructure structure_model=PPStructure(layout_model_dir='/home/administrator/PPStructure_model/picodet_lcnet_x1_0_layout/') this path have the inference model I exported after training a custom layout analysis when load the model have no problem

The default layout analysis model is OK. Can you provide the commands for you to train and export the model?

LDOUBLEV avatar Oct 18 '22 02:10 LDOUBLEV

I Use this instructions the training command is: !export CUDA_VISIBLE_DEVICES=0 !python3 tools/train.py
-c configs/picodet/legacy_model/application/layout_analysis/picodet_lcnet_x1_0_layout.yml
--eval

and export inference model command is :
!python3 tools/export_model.py
-c configs/picodet/legacy_model/application/layout_analysis/picodet_lcnet_x1_0_layout.yml
--slim_config configs/picodet/legacy_model/application/layout_analysis/picodet_lcnet_x2_5_layout.yml
-o weights=./output/picodet_lcnet_x1_0_layout/best_model
--output_dir=output_inference/

Mahmuod1 avatar Oct 18 '22 08:10 Mahmuod1

@LDOUBLEV LDOUBLEV any help

Mahmuod1 avatar Oct 19 '22 11:10 Mahmuod1

when i run the eval command it runs normally without any error and also the inference command

Mahmuod1 avatar Oct 20 '22 13:10 Mahmuod1

This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs. Thank you for your contributions.

github-actions[bot] avatar Jul 08 '23 02:07 github-actions[bot]