基于PaddleOCR解决文本检测训练模型与inference模型预测效果不一致的问题

目的

       此类问题出现较多,问题多是trained model预测时候的预处理、后处理参数和inference model预测的时候的预处理、后处理参数不一致导致的。官方DBnet检测模型提供的yml文件自行训练时候需要进行相应的修改才可以训练模型训练。

解决

一、根据官方说明进行调整

官方这块也有说明:PaddleOCR/detection.md at release/2.5 · PaddlePaddle/PaddleOCR (github.com)

根据官网部署预测模型代码推测,yml配置情况如下

      - DetResizeForTest:
          limit_side_len: 960
          limit_type: max

二、经过自己测试进行调整

        在训练银行卡、车牌号、身份证等文本检测模型的时候,按上面的配置实际训练效果不好,通过固定图片大小的情况效果就非常好,如下修改:

方式一:

1、修改yml文件

      - DetResizeForTest:
          limit_side_len: 960
          limit_type: resize_long

2、将后面预测的params.py也按照上面两个参数进行改写,将“max”换成“resize_long”

方式二:

1、修改yml文件

      - DetResizeForTest:
          resize_long: 960

2、tools/infer/utility.py文件中添加如下参数

 3、tools/infer/predict_det.py文件中修改如下

4、其他文件:修改部署预测文件,以hubserving部署为例:

deploy/hubserving/ocr_system/params.py

总结        

         以上修改效果,可以查看我之前的前几篇文章的银行卡车牌号身份证文本检测训练结果,在垂类效果上比通用的文本检测模型效果要好很多。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
您好!要将PaddleOCR训练的模型转换为ONNX格式,您可以按照以下步骤进行操作: 1. 安装依赖: ```bash pip install paddlepaddle paddleocr onnxruntime ``` 2. 导入PaddleOCR和相关库: ```python import paddleocr import paddle.fluid as fluid import onnx import onnxruntime ``` 3. 加载PaddleOCR训练的模型: ```python paddleocr.OCR(rec_img_shapes=[3, 32, 320], rec_char_type='ch', \ use_gpu=False, use_angle_cls=True) model_path = 'your_model_path' model = paddleocr.load_model(model_path) ``` 4. 定义输入和输出的变量: ```python input_names = ['image'] output_names = ['ctc_greedy_decoder_0.tmp_0'] input_spec = fluid.core.VarDesc.VarType.LOD_TENSOR output_spec = fluid.core.VarDesc.VarType.LOD_TENSOR ``` 5. 创建PaddlePaddle的Executor,并加载模型参数: ```python exe = fluid.Executor(fluid.CPUPlace()) [inference_program, feed_target_names, fetch_targets] = \ fluid.io.load_inference_model(dirname=model_path, executor=exe) ``` 6. 使用PaddlePaddle的Fluid框架将模型转换为ONNX格式: ```python paddle.onnx.export( inference_program, path="model.onnx", input_spec=[(input_names[0], input_spec)], output_spec=[(output_names[0], output_spec)], opset_version=11, enable_onnx_checker=True) ``` 7. 至此,您已经成功将PaddleOCR训练的模型转换为ONNX格式,并保存为"model.onnx"文件。 请确保您按照上述步骤操作,并将"your_model_path"替换为您的模型路径。如果您使用的是GPU,请将"use_gpu"参数设置为True,同时将"fluid.CPUPlace()"替换为"fluid.CUDAPlace(0)"。 希望对您有所帮助!如有更多疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番茄小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值