1:下载paddleocr

develop和release分支都可以,这里以release为例

下载地址:https://github.com/PaddlePaddle/PaddleOCR

paddleocr项目结构如下

2:跟其他框架一样,我们只需要标注好数据然后配置yml文件,就可以正常训练模型了

首先需要进行数据标注,打开自带的标注工具PPOCRLabel

cd .\PPOCRLabel\

python .\PPOCRLabel.py –lang ch

注意:

1:标注完成后选择文件-导出标注结果,原图和Label.txt在det训练时要用到,这个默认保存的Simpledata格式,不需要转换,只需要分割数据集

2:标注完成后选择文件-导出识别结果,分割出的文字轮廓图像和rec_gt.txt在rec训练时用到,这种需要转换,在使用icdar15数据集不需要,使用mv3时需要转为LMDB格式

3:LMDB转换

使用下述代码进行转换,

数据路径如下

转换命令如下

python .\transform.py –data_root_dir ./rec_data –label_file_paths ./rec_data/rec_test.txt –delimiter tab –lmdb_out_dir ./rec_data/val

4:det模型训练

模型下载

MobileNetV3预训练模型连接:

https://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV3_large_x0_5_pretrained.tar

ResNet18_vd预训练模型连接:

https://paddle-imagenet-models-name.bj.bcebos.com/ResNet18_vd_pretrained.tar

ResNet50_vd预训练模型连接:

https://paddle-imagenet-models-name.bj.bcebos.com/ResNet50_vd_ssld_pretrained.tar

下载完解压到 pretrain_models目录

这里有3种检测的网络结构,百度推荐的时db模型,所以这里用db模型

新建个自己的yml文件,把det_mv3_db.yml文字复制进去

需要修改以下内容

修改完成后可以测试下, 修改tools/train.py把main注释掉,test注释取消

运行下

python tools/train.py -c configs/det/det_mv3_db.yml

出现这个表示模型加载成功,可以进行训练

python .\tools\train.py -c .\configs\det\det_mv3_db.yml 2>&1 | tee train_det.log

5:训练rec模型

前面已经讲过simpledata转lmdb格式,这里不再赘述

预训练模型下载

https://paddleocr.bj.bcebos.com/rec_mv3_none_bilstm_ctc.tar

这几个模型都是中文模型,只是结构不一样,rec_icdar15_train前面讲过了使用crop_img和rec_gt.txt数据训练就可以,rec_mv3_none_bilstm_ctc.yml,因为这里用到的MV3而且是中文模型,百度推荐的RCNN结构,所以选择这个文件

输入命令训练

python tools/train.py -c configs/rec/rec_mv3_none_bilstm_ctc.yml

这是输出的模型

6:模型测试和导出inference模型

rec模型导出

pythontools/export_model.py -c ./configs/rec/rec_mv3_none_bilstm_ctc.yml -o Global.checkpoints=./output/rec/best_accuracy Global.save_inference_dir=./inference/rec_crnn/

rec模型测试

pythontools/infer/predict_rec.py –image_dir=”./doc/imgs/00018069.jpg” –rec_model_dir=”./inference/rec_crnn/”

det模型导出

pythontools/export_model.py -c ./configs/det/det_mv3_db.yml -o Global.checkpoints=./output/det/best_accuracy Global.save_inference_dir=./inference/det_db/

det模型测试

pythontools/infer/predict_det.py –image_dir=”./doc/imgs/00018069.jpg” –det_model_dir=”./inference/det_db/”

综合测试

python tools/infer/predict_system.py –image_dir=”./train_data/ic_data/aaa/test/fgq_bq (1)_crop_2.jpg” –det_model_dir=”./inference_results/ch_PP-OCRv2_det_infer/” –rec_model_dir
=”./inference_results/ch_PP-OCRv2_rec_infer/” –cls_model_dir=”./inference_results/ch_ppocr_mobile_v2.0_cls_slim_infer/” –use_angle_cls=True –use_space_char=True –use_gpu=False –rec_char_dict_path=”./ppocr/utils/ppocr_keys_v1.
txt”

7:转nb模型(android部署)

安装paddlelite

pip install paddlelite

官方给了转换的demo

# 引用Paddlelite预测库from paddlelite.lite import *# 1. 创建opt实例opt=Opt()# 2. 指定输入模型地址 opt.set_model_dir("./inference/rec")# 3. 指定转化类型: arm、x86、opencl、npuopt.set_valid_places("arm")# 4. 指定模型转化类型: naive_buffer、protobufopt.set_model_type("naive_buffer")# 4. 输出模型地址opt.set_optimize_out("mobilenetv3_opt")# 5. 执行模型优化opt.run()

生成的nb模型

可以参考,训练到评估过程讲的很详细(9条消息) 2_paddleOCR训练自己的模型_stefan-567的博客-CSDN博客_paddleocr训练自己的模型