PaddleOCR 手写识别模型:标注到训练

目录

    • 版本数据
    • 流程
    • 标注
    • 训练
    • 转换
    • 推理
    • 遇到报错
    • 参考

本文记录一下自己标注的数据,到训练后模型转换的流程;本文只训练识别模型。

版本数据

Python == 3.8
Paddlepaddle >=2.0
PaddleOCR >= 2.0

这里数据使用的是中科院手写数据集及网上开数据;整合后处理尺寸最大为640*32;训练24w,测试1.7w;可直接用于paddleOCR的训练。

数据下载链接:
https://aistudio.baidu.com/aistudio/datasetdetail/102884

流程

  1. 首先使用PPOCRLabel工具标注。
  2. 数据合成工具Style-Text(看需求使用)。
  3. 编写脚本变更训练所需要的数据格式。
  4. 修改训练cfg,下载预训练模型,开始训练。
  5. 模型转换,推理测试。

标注

  • 这里需要先安装PyQt5等其他依赖项
cd ./PPOCRLabel
python PPOCRLabel.py --lang ch

PaddleOCR 手写识别模型:标注到训练_第1张图片

  • 标注后会在图片路径下保存一个label.txt,格式如图:

在这里插入图片描述

  • 实际train.txt需要将以上格式转化为SimpleDataSet格式(并且对应需要将图片切出 320*32 大小):
  • 注意路径与标签的分隔需要使用 \t 分割

PaddleOCR 手写识别模型:标注到训练_第2张图片

  • 最终目录格式如下

PaddleOCR 手写识别模型:标注到训练_第3张图片

训练

  1. 下载预训练模型
  2. 修改配置文件cfg,附:配置文件参数表
  3. 主要修改数据路径,添加预训练模型,epoch,batch等
  4. 所有路径的 ‘:’ 后面需要先加一个空格,否则会报错。
  5. 开始训练:
python tools/train.py -c ./configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml 2>&1 | tee train_rec.log

转换

  • 训练好的模型文件不能直接使用,需要经过转换
python ./tools/export_model.py 
-c ./configs/rec/ch_ppocr_v2.0/rec_chinese_lite_train_v2.0.yml 
-o Global.pretrained_model=./ch/best_accuracy 
Global.load_static_weights=False 
Global.save_inference_dir=./out/

推理

python tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/"  --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True

我这里训练的手写体数据,原来的打印体精度变差很多。。。
PaddleOCR 手写识别模型:标注到训练_第4张图片

遇到报错

  1. win10下报错 OMP: Error****************** ;需在代码前加上一下代码:
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
  1. 配置文件下,所有路径的 ‘:’ 后面需要先加一个空格,否则会报错。

参考

https://github.com/PaddlePaddle/PaddleOCR
http://www.nlpr.ia.ac.cn/databases/handwriting/Download.html

你可能感兴趣的:(机器学习,python,深度学习)