在使用paddleocr转onnx后,推理遇到的问题解决

报错

if img_h is not None and img_w is not None and img_h > 0 and img_w > 0:
TypeError: '>' not supported between instances of 'str' and 'int'

定位一下问题可以看到

import onnxruntime as ort
sess = ort.InferenceSession("inference/det_onnx/model.onnx")
sess.get_inputs()[0].shape
获取的输入维度如下,不是固定的输入
['p2o.DynamicDimension.0', 3, 'p2o.DynamicDimension.1', 'p2o.DynamicDimension.2']

解决办法:

1、删掉代码

predict_det.py line144

        # if self.use_onnx:
        #     img_h, img_w = self.input_tensor.shape[2:]
        #     if img_h is not None and img_w is not None and img_h > 0 and img_w > 0:
        #         pre_process_list[0] = {
        #             'DetResizeForTest': {
        #                 'image_shape': [img_h, img_w]
        #             }
        #         }

predict_rec.py line174

        # if self.use_onnx:
        #     w = self.input_tensor.shape[3:][0]
        #     if w is not None and w > 0:
        #         imgW = w

对以上报错的部分代码进行注释掉,再运行就正常运行了。

2、将动态输入维度转固定输入维度

在转onnx之前对原paddle模型进行处理,处理成固定输入, 原输入是动态维度,只要运行paddle_infer_shape.py,固定模型输入之后,再转onnx并且进行推理就不会出错了。

具体自己操作一下吧,这两种办法我都试过,都可以。

你可能感兴趣的:(OCR,深度学习)