PaddleOCR 使用总结一:文本检测、识别过程的推理

603 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 ————————————————————————————————————————————————————————

文本检测、识别过程的推理

首先,需要明确的是,对于训练完成后所生成的权重(其一般存在在output文件夹下),是可以直接用于推理的,当然也可以将训练权重进行转换,转化为推理权重,接下来就对这部分内容进行详细阐述。

文本检测过程的推理

1、直接利用训练模型进行推理

执行下面的命令利用训练模型进行推理

python tools/infer_det.py -c configs/det/det_mv3_db.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy"

其中,Global.infer_img 是待推理图片的绝对路径或者待推理图片所在文件夹的绝对路径(也可以用相对路径,前提是要设置工程目录为根目录,为了一劳永逸,个人建议用绝对路径);Gloabl.pretrained_model 是训练权重的绝对路径,值得注意的是,best_accuracy是训练权重名称,后面需要文件类型后缀。

2、将训练模型转换为推理模型进行推理

1、执行下面的命令进行模型的转换

python tools/export_model.py -c configs/det/det_mv3_db.yml -o Global.pretrained_model="./output/det_db/best_accuracy" Global.save_inference_dir="./output/det_db_inference/"

2、执行下面的命令利用推理模型进行推理

python tools/infer/predict_det.py --det_algorithm="DB" --det_model_dir="./output/det_db_inference/" --image_dir="./doc/imgs/"

需要注意的是,这里的yml文件和训练时配置的yml文件是相同的,避免出现彼此不对应的情况。倘若其彼此不对应强行转换,后面的推理模型在实际推理过程中可能报错,推理结果也会出现问题,最典型的例子就是训练后的推理结果还不如训练前的推理结果。

文本识别过程的推理

1、直接利用训练模型推理

执行下面的命令利用训练模型进行推理

python tools/infer_rec.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.pretrained_model={path/to/weights}/best_accuracy  Global.infer_img=doc/imgs_words/en/word_1.png

需要注意的是,这里的yml文件和训练时配置的yml文件也是相同的。

2、将训练模型转换为推理模型进行推理

1、执行下面的命令进行模型的转换

python tools/export_model.py -c configs/rec/PP-OCRv3/en_PP-OCRv3_rec.yml -o Global.pretrained_model=./pretrain_models/en_PP-OCRv3_rec_train/best_accuracy  Global.save_inference_dir=./inference/en_PP-OCRv3_rec/

2、执行下面的命令利用推理模型进行推理

python tools/infer/predict_rec.py --image_dir="./doc/imgs_words_en/word_336.png" --rec_model_dir="./your inference model" --rec_image_shape="3, 48, 320" --rec_char_dict_path="your text dict path"

需要注意的是,这里的 rec_image_shape 需要根据模型进行调整,例如PP-OCRv2和PP-OCRv3中的 rec_image_shape 就是不相同的,中文和英文又是不同的,此外关于 rec_char_dict_path ,需要跟训练过程中所使用的 rec_char_dict 路径保持一致,不然预测结果会出现乱码的情况。