目录
一、环境安装配置
1.基本环境配置:torch与paddlepaddle安装
2.专精任务配置:PaddleX与PaddleOCR插件安装
3.测试数据配置:测试数据集下载与验证
二、模型基础使用
1.使用OCR模型预测
2.使用Detect检测模型
3.使用Recognition识别模型
一、环境安装配置
1.基本环境配置:torch与paddlepaddle安装
参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/installation/paddlepaddle_install.md
如果无法访问,只需复制地址,将其中github改为国内gitee即可,下述同理。
国内gitee访问:https://gitee.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/installation/paddlepaddle_install.md
首先创建基本的虚拟环境,安装必要的torch计算平台和paddlepaddle库gpu版本。
# 虚拟环境
conda create -n paddledet python=3.9
conda activate paddle
# 安装pytorch基于CUDA11.8
pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu118
# 安装paddlepaddle基于CUDA11.8
pip install paddlepaddle-gpu==3.0.0b1 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
2.专精任务配置:PaddleX与PaddleOCR插件安装
参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/installation/installation.md
百度开源的paddle项目包含多个领域的深度学习应用,而本文主要是记录其中负责OCR任务的模型和模块。
要使用Paddle中强大的模型库以及训练都基于一个集成的平台PaddleX。
PaddleX平台Github地址:https://github.com/PaddlePaddle/PaddleX
推荐直接使用Git Clone指令从Github上克隆PaddleX项目源码并安装。pip install -e 代表当前项目的PaddleX源码修改会同时作用在conda安装的env虚拟环境包内,这样方便调试修改。注意一定要在虚拟环境激活的情况下,安装PaddleX。
# 克隆并安装PaddleX命令行指令
# 首先要cd到自己项目地址
cd xxx
## 国外github地址:慢
git clone https://github.com/PaddlePaddle/PaddleX.git
## 国内gitee地址:快
git clone https://gitee.com/PaddlePaddle/PaddleX.git
cd PaddleX
pip install -e .
还需要补充安装一下ujson包,不过不装影响也不大,只是在装插件时会有警告。
# 补充安装依赖包——为后续插件安装准备
pip install ujson
安装好PaddleX工具平台以后,就可以安装特定任务的模型了,官方文档给出了安装指令和不同任务对应的插件模型名称。
# 安装特定插件模型指令
paddlex --install PaddleXXX
# example:文本检测识别任务
paddlex --install PaddleOCR
3.测试数据配置:测试数据集下载与验证
参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/module_usage/tutorials/ocr_modules/text_detection.md
下载官方提供的数据集测试环境安装是否成功。
# web下载官方数据集压缩包到项目路径下dataset目录
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/data/ocr_det_dataset_examples.tar -P ./dataset
# 解压
tar -xf ./dataset/ocr_det_dataset_examples.tar -C ./dataset/
paddlex提供了验证数据集是否构建正确的工具,只需命令行指令就可以运行,这对后续微调训练提供了便利。下面使用官方数据集测试是否能成功运行。
命令行参数:其中 -c 后对应数据集对应训练模型配置文件地址,第一个 -o 对应模式是检验数据集(check_dataset),第二个 -o 对应数据集地址。
python main.py -c paddlex/configs/text_detection/PP-OCRv4_mobile_det.yaml -o Global.mode=check_dataset -o Global.dataset_dir=./dataset/ocr_det_dataset_examples
如果数据集没有问题会报绿字,并生成数据集统计结果。
二、模型基础使用
PaddleX提供了非常强大的命令行和 python 脚本接口使用方法。下述使用方法只需修改图片路径即可直接检测部署到自己的数据上。OCR实际存在两个阶段的任务:首先是定位到文本框的检测模型 Det,再将检测小图框识别为文字的识别模型 Rec。下面先记录完整ocr直接使用,再记录单独使用(单独使用是为了后续提升精度的微调训练准备)。
1.使用OCR模型预测
参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/pipeline_usage/tutorials/ocr_pipelines/OCR.md
直接使用命令行或者Python脚本的效果是一样的。只需替换 xxx 为实际需要预测图片的地址即可复用。
# 命令行使用
paddlex --pipeline OCR --input xxx --device gpu:0 --save_path ./output/
## 官方数据集测试 xxx = ./dataset/ocr_det_dataset_examples/images
paddlex --pipeline OCR --input ./dataset/ocr_det_dataset_examples/imagess --device gpu:0
# Python脚本
from paddlex import create_pipeline
pipeline = create_pipeline(pipeline="ocr")
output = pipeline.predict("xxx")
for res in output:
res.print()
res.save_to_img("./output/")
第一次使用会自动下载官方模型到本地,要记住下载地址,后续可以将模型地址修改到其他盘以释放C盘压力,或者使用自己训练的模型地址。
PaddleOCR是基于像素级的检测算法,支持斜方框的检测结果。
2.使用Detect检测模型
参考官方文档地址:https://github.com/PaddlePaddle/PaddleX/blob/release/3.0-beta1/docs/module_usage/tutorials/ocr_modules/text_detection.md
PaddleX也支持单独使用其中模型的操作,这方便了实际部署中的调整,比如如果使用官方模型出现漏字就单独微调训练检测模型即可,如果出现字识别成别的字则训练识别模型。
使用 python 脚本就可以直接调用官方模型,如果想要自己训练的模型,只需修改create_model 中传入的模型地址即可,默认官方模型第一次使用会下载保存到C盘(如使用OCR模型所示,所有下载的官方模型都保存在此处)。我们可以将其剪贴到当前项目目录,那么传入python脚本的改为加上路径的模型地址。
# 官方模型下载本地保存地址
C:\Users\Administrator\.paddlex\official_models
# 本地部署测试代码
from paddlex import create_model
model = create_model("./official_models/PP-OCRv4_server_det")
output = model.predict("./PaddleX/dataset/ocr_det_dataset_examples/images/train_img_7.jpg", batch_size=1)
for res in output:
res.print(json_format=False)
res.save_to_img("./output/")
res.save_to_json("./output/res.json")
3.使用Recognition识别模型
参考官方文档地址:https://github.com/paddlepaddle/PaddleX/blob/release/3.0-beta1/docs/module_usage/tutorials/ocr_modules/text_recognition.md
下载参考测试的图片到本地,下载地址:https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_rec_001.png
其使用方法和检测模型没有什么区别,沿用检测模型那一套得到结果即可。代码如下。
from paddlex import create_model
model = create_model("./official_models/PP-OCRv4_server_rec")
output = model.predict("./PaddleX/dataset/ocr_det_dataset_examples/images/general_ocr_rec_001.png", batch_size=1)
for res in output:
res.print(json_format=False)
#res.save_to_img("./output/") #文本识别不支持生成图片
res.save_to_json("./output/res.json")
PaddleOCR的安装和基本使用到此大致完成,下一篇文章集中精力记录Paddle微调训练部分,包括构建Paddle要求的训练数据格式,以及如何简单使用命令行训练自己的模型参数。