本文记录一下自己标注的数据,到训练后模型转换的流程;本文只训练识别模型。
版本数据
Python == 3.8
Paddlepaddle >=2.0
PaddleOCR >= 2.0
这里数据使用的是中科院手写数据集及网上开数据;整合后处理尺寸最大为640*32;训练24w,测试1.7w;可直接用于paddleOCR的训练。
数据下载链接:
https://aistudio.baidu.com/aistudio/datasetdetail/102884
流程
- 首先使用PPOCRLabel工具标注。
- 数据合成工具Style-Text(看需求使用)。
- 编写脚本变更训练所需要的数据格式。
- 修改训练cfg,下载预训练模型,开始训练。
- 模型转换,推理测试。
标注
- 这里需要先安装PyQt5等其他依赖项
cd ./PPOCRLabel
python PPOCRLabel.py --lang ch
- 标注后会在图片路径下保存一个label.txt,格式如图:
- 实际train.txt需要将以上格式转化为SimpleDataSet格式(并且对应需要将图片切出 320*32 大小):
- 注意路径与标签的分隔需要使用 \t 分割
- 最终目录格式如下
训练
- 下载预训练模型
- 修改配置文件cfg,附:配置文件参数表
- 主要修改数据路径,添加预训练模型,epoch,batch等
- 所有路径的 ‘:’ 后面需要先加一个空格,否则会报错。
- 开始训练:
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
我这里训练的手写体数据,原来的打印体精度变差很多。。。
遇到报错
- win10下报错 OMP: Error****************** ;需在代码前加上一下代码:
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'TRUE'
- 配置文件下,所有路径的 ‘:’ 后面需要先加一个空格,否则会报错。
参考
https://github.com/PaddlePaddle/PaddleOCR
http://www.nlpr.ia.ac.cn/databases/handwriting/Download.html