PaddleOCR icon indicating copy to clipboard operation
PaddleOCR copied to clipboard

用quick start推理实现检测和识别 InvalidArgumentError: Broadcast dimension mismatch

Open XinAn9508 opened this issue 7 months ago • 0 comments

问题描述 / Problem Description

InvalidArgumentError: Broadcast dimension mismatch. Operands could not be broadcast together with the shape of X = [6, 96, 3, 12] and the shape of Y = [6, 96, 4, 12]. Received [3] in X is not equal to [4] in Y at i:2.
      [Hint: Expected x_dims_array[i] == y_dims_array[i] || x_dims_array[i] <= 1 || y_dims_array[i] <= 1 == true, but received x_dims_array[i] == y_dims_array[i] || x_dims_array[i] <= 1 || y_dims_array[i] <= 1:0 != true:1.] (at /paddle/paddle/phi/kernels/funcs/common_shape.h:86)
      [operator < elementwise_add > error]

运行环境 / Runtime Environment

  • OS: CentOS
  • python=3.9
  • cuda 11.8

复现代码 / Reproduction Code

from paddleocr import PaddleOCR, draw_ocr
import cv2
from PIL import Image
import os

ocr = PaddleOCR(lang="ch", ocr_version="PP-OCRv3", use_angle_cls=True)
img_path = './imgs/11.jpg'
result = ocr.ocr(img_path, cls=True)
for idx in range(len(result)):
    res = result[idx]
    for line in res:
        print(line)

from PIL import Image
result = result[0]
image = Image.open(img_path).convert('RGB')
boxes = [line[0] for line in result]
txts = [line[1][0] for line in result]
scores = [line[1][1] for line in result]
im_show = draw_ocr(image, boxes, txts, scores, font_path='./fonts/simfang.ttf')
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

显示结果

[2024/07/11 21:24:08] ppocr DEBUG: dt_boxes num : 9, elapsed : 1.3459770679473877

完整报错 / Complete Error Message

Traceback (most recent call last):
  File "/xxxxx/PP-OCR/2.py", line 41, in <module>
    result = ocr.ocr(img_path, cls=True)
  File "/data/miniconda3/envs/ocr/lib/python3.9/site-packages/paddleocr/paddleocr.py", line 729, in ocr
    dt_boxes, rec_res, _ = self.__call__(img, cls, slice)
  File "/data/miniconda3/envs/ocr/lib/python3.9/site-packages/paddleocr/tools/infer/predict_system.py", line 134, in __call__
    img_crop_list, angle_list, elapse = self.text_classifier(img_crop_list)
  File "/data/miniconda3/envs/ocr/lib/python3.9/site-packages/paddleocr/tools/infer/predict_cls.py", line 114, in __call__
    self.predictor.run()
ValueError: In user code:

    File "tools/export_model.py", line 172, in <module>
      main()
    File "tools/export_model.py", line 165, in main
      sub_model_save_path, logger)
    File "tools/export_model.py", line 99, in export_single_model
      paddle.jit.save(model, save_path)
    File "<decorator-gen-101>", line 2, in save
      
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 25, in __impl__
      return wrapped_func(*args, **kwargs)
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 51, in __impl__
      return func(*args, **kwargs)
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/jit.py", line 744, in save
      inner_input_spec)
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 517, in concrete_program_specify_input_spec
      *desired_input_spec)
    File "/usr/local/lib/python3.7/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 "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 723, in __getitem__
      self._caches[item] = self._build_once(item)
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 714, in _build_once
      **cache_key.kwargs)
    File "<decorator-gen-99>", line 2, in from_func_spec
      
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/wrapped_decorator.py", line 25, in __impl__
      return wrapped_func(*args, **kwargs)
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/base.py", line 51, in __impl__
      return func(*args, **kwargs)
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/dygraph_to_static/program_translator.py", line 662, in from_func_spec
      outputs = static_func(*inputs)
    File "/tmp/tmpmmf1gn4e.py", line 29, in forward
      false_fn_1, (x,), (x,), (x,))
    File "/usr/local/lib/python3.7/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 "/usr/local/lib/python3.7/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 "/paddle/debug/PaddleOCR/ppocr/modeling/architectures/base_model.py", line 82, in forward
      x = self.neck(x)
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 917, in __call__
      return self._dygraph_call_func(*inputs, **kwargs)
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/dygraph/layers.py", line 907, in _dygraph_call_func
      outputs = self.forward(*inputs, **kwargs)
    File "/paddle/debug/PaddleOCR/ppocr/modeling/necks/db_fpn.py", line 247, in forward
      in5, scale_factor=2, mode="nearest", align_mode=1)  # 1/16
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/layers/math_op_patch.py", line 347, in __impl__
      attrs={'axis': axis})
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/framework.py", line 3184, in append_op
      attrs=kwargs.get("attrs", None))
    File "/usr/local/lib/python3.7/site-packages/paddle/fluid/framework.py", line 2224, in __init__
      for frame in traceback.extract_stack():

    InvalidArgumentError: Broadcast dimension mismatch. Operands could not be broadcast together with the shape of X = [6, 96, 3, 12] and the shape of Y = [6, 96, 4, 12]. Received [3] in X is not equal to [4] in Y at i:2.
      [Hint: Expected x_dims_array[i] == y_dims_array[i] || x_dims_array[i] <= 1 || y_dims_array[i] <= 1 == true, but received x_dims_array[i] == y_dims_array[i] || x_dims_array[i] <= 1 || y_dims_array[i] <= 1:0 != true:1.] (at /paddle/paddle/phi/kernels/funcs/common_shape.h:86)
      [operator < elementwise_add > error]

可能解决方案 / Possible solutions

i checked github issues and they say that changing image size to a multiple of 16 or 32 would solve the issue so i changed the size of image to 512*512 but still getting the error.

XinAn9508 avatar Jul 12 '24 08:07 XinAn9508