PaddleOCR 自己修改了训练模型,转换为推理模型后预测出问题
收藏
E0411 21:58:01.988416 19264 analysis_config.cc:91] Please compile with gpu to EnableGpu() Traceback (most recent call last): File "D:\PythonProject\PaddleOCR\OCR.py", line 101, in det_rec result = ocr.ocr(img_path, cls=False) File "D:\PythonProject\PaddleOCR\paddleocr.py", line 343, in ocr dt_boxes, rec_res = self.__call__(img, cls) File "D:\PythonProject\PaddleOCR\tools\infer\predict_system.py", line 60, in __call__ dt_boxes, elapse = self.text_detector(img) File "D:\PythonProject\PaddleOCR\tools\infer\predict_det.py", line 195, in __call__ self.predictor.run() RuntimeError: In user code: File "tools/export_model.py", line 123, in main() File "tools/export_model.py", line 119, in main export_single_model(model, arch_config, save_path, logger) File "tools/export_model.py", line 74, in export_single_model paddle.jit.save(model, save_path) File "D:\creatTool\anaconda\lib\site-packages\decorator.py", line 232, in fun return caller(func, *(extras + args), **kw) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\wrapped_decorator.py", line 25, in __impl__ return wrapped_func(*args, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\base.py", line 51, in __impl__ return func(*args, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\jit.py", line 743, in save concrete_program = static_func.concrete_program_specify_input_spec( File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 516, in concrete_program_specify_input_spec concrete_program, _ = self.get_concrete_program( File "D:\creatTool\anaconda\lib\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 "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 723, in __getitem__ self._caches[item] = self._build_once(item) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 709, in _build_once concrete_program = ConcreteProgram.from_func_spec( File "D:\creatTool\anaconda\lib\site-packages\decorator.py", line 232, in fun return caller(func, *(extras + args), **kw) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\wrapped_decorator.py", line 25, in __impl__ return wrapped_func(*args, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\base.py", line 51, in __impl__ return func(*args, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\program_translator.py", line 662, in from_func_spec outputs = static_func(*inputs) File "D:\PythonProject\PaddleOCR\ppocr\modeling\architectures\base_model.py", line 75, in forward x = self.backbone(x) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 917, in __call__ return self._dygraph_call_func(*inputs, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 907, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "C:\Users\ASONEM~1\AppData\Local\Temp\tmpiuk4fa_e.py", line 20, in forward [x, __for_loop_var_index_0] = paddle.jit.dy2static.convert_while_loop( File "D:\creatTool\anaconda\lib\site-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 "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\dygraph_to_static\convert_operators.py", line 59, in _run_py_while loop_vars = body(*loop_vars) File "D:\PythonProject\PaddleOCR\ppocr\modeling\backbones\det_mobilenet_v3_CA.py", line 152, in forward x = stage(x) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 917, in __call__ return self._dygraph_call_func(*inputs, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 907, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\container.py", line 98, in forward input = layer(input) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 917, in __call__ return self._dygraph_call_func(*inputs, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 907, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "C:\Users\ASONEM~1\AppData\Local\Temp\tmpsr0_2m_9.py", line 15, in forward x = paddle.jit.dy2static.convert_ifelse(self.if_ca, true_fn_7, File "D:\creatTool\anaconda\lib\site-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 "D:\creatTool\anaconda\lib\site-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 "D:\PythonProject\PaddleOCR\ppocr\modeling\backbones\det_mobilenet_v3_CA.py", line 241, in forward x = self.mid_ca(x) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 917, in __call__ return self._dygraph_call_func(*inputs, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 907, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "D:\PythonProject\PaddleOCR\ppocr\modeling\backbones\CA.py", line 28, in forward x_h = self.pool_h(x) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 917, in __call__ return self._dygraph_call_func(*inputs, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\dygraph\layers.py", line 907, in _dygraph_call_func outputs = self.forward(*inputs, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\nn\layer\pooling.py", line 772, in forward return F.adaptive_avg_pool2d( File "D:\creatTool\anaconda\lib\site-packages\paddle\nn\functional\pooling.py", line 1153, in adaptive_avg_pool2d helper.append_op( File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\layer_helper.py", line 43, in append_op return self.main_program.current_block().append_op(*args, **kwargs) File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\framework.py", line 3178, in append_op op = Operator( File "D:\creatTool\anaconda\lib\site-packages\paddle\fluid\framework.py", line 2224, in __init__ for frame in traceback.extract_stack(): PreconditionNotMetError: The Tensor's element number must be equal or greater than zero. The Tensor's shape is [1, 40, -1, 1] now [Hint: Expected numel() >= 0, but received numel():-40 < 0:0.] (at C:\home\workspace\Paddle_release\paddle\fluid\framework\tensor.cc:59) [operator < pool2d > error]
自己训练时,修改了模型,在骨干网络MV3模型上进行了修改,还使用了MV3的large预训练模型,训练时有模型不匹配的问题,但是不影响训练,训练模型可以测试效果,转换为推理模型后,出现以下问题
0
收藏
请登录后评论
模型结构没问题的话,就是数据预处理了
我改变了MobileNetV3中的SE模块,新添加的注意力机制测试shape前后一致,原SE模块加入使用没问题,目前感觉predict_rec.py和infer_rec.py的图片预处理有所区别,我找找看
多次尝试后,将export_model.py中infer_shape改为固定值
并且在predict_det.py中pre_process_list中添加'image_shape:[(与export_model.py中shape必须一样)]',才能成功运行
但是原来自由尺度却无法使用 paddleocr里面可以解决这个问题吗

加se会固定模型输出尺寸,如果是全卷积网络输出尺寸就不是固定的