PaddleX 模型产线开发流程图
graph LR
select_pipeline(选择产线) --> online_experience[快速体验]
online_experience --> online_ok{效果满意?}
online_ok --不满意--> select_model[选择模型]
select_model --> model_finetune[模型微调]
online_ok --满意--> development_integration(开发集成/部署)
model_finetune --> pipeline_test[产线测试]
pipeline_test --> test_ok{效果满意?}
test_ok --不满意--> select_model
test_ok --满意--> development_integration
PaddleX 提供了丰富的模型产线,模型产线由一个或多个模型组合实现,每个模型产线都能够解决特定的场景任务问题。PaddleX 所提供的模型产线均支持快速体验,如果效果不及预期,也同样支持使用私有数据微调模型,并且 PaddleX 提供了 Python API,方便将产线集成到个人项目中。在使用之前,您首先需要安装 PaddleX, 安装方式请参考PaddleX 安装。此处以一个车牌识别的任务为例子,介绍模型产线工具的使用流程。
2.【快速体验】PaddleX 提供了两种体验的方式,一种是可以直接通过 PaddleX wheel 包在本地体验,另外一种是可以在AI Studio 星河社区上体验。
本地体验方式:
paddlex --pipeline OCR --model PP-OCRv4_mobile_det PP-OCRv4_mobile_rec --input https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png --device gpu:0
注: 通用 OCR 产线是一个多模型串联的产线,包含文本检测模型(如 PP-OCRv4_mobile_det)和文本识别模型(如 PP-OCRv4_mobile_rec),因此需要指定两个模型进行体验。
星河社区体验方式:前往AI Studio 星河社区,点击【创建产线】,创建通用 OCR 产线进行快速体验;
3.【选择模型】(可选)当体验完该产线之后,需要确定产线是否符合预期(包含精度、速度等),产线包含的模型是否需要继续微调,如果模型的速度或者精度不符合预期,则需要根据模型选择选择可替换的模型继续测试,确定效果是否满意。如果最终效果均不满意,则需要微调模型。在确定微调的模型时,需要根据测试的情况确定微调其中的哪个模型,如发现文字的定位不准,则需要微调文本检测模型,如果发现文字的识别不准,则需要微调文本识别模型。
4.【模型微调】(可选)在第 3 步选择好对应的模型后,即可使用单模型开发工具以低代码的方式进行模型微调训练和优化,如此处需要优化文本识别模型(PP-OCRv4_mobile_rec),则只需要完成【数据校验】和【模型训练】,二者命令如下:
# 数据校验
python main.py -c paddlex/configs/text_recognition/PP-OCRv4_mobile_rec.yaml \
-o Global.mode=check_dataset \
-o Global.dataset_dir=your/dataset_dir
# 模型训练
python main.py -c paddlex/configs/text_recognition/PP-OCRv4_mobile_rec.yaml \
-o Global.mode=train \
-o Global.dataset_dir=your/dataset_dir
关于模型更多的训练和优化内容,请参考PaddleX 单模型开发工具;
5.【产线测试】(可选)将产线中的模型替换为微调后的模型进行测试,如:
paddlex --pipeline OCR --model PP-OCRv4_mobile_det PP-OCRv4_mobile_rec --model_dir None "your/model_dir" --input https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png --device gpu:0
此处更多内容,参考模型产线推理预测,此处如果效果满意,可以跳到第 6 步,如果效果不满意,则可以回到第 4 步继续微调模型。
6.【开发集成/部署】
此处提供轻量级的 PaddleX Python API 的集成方式,也提供高性能推理/服务化部署的方式部署模型。 PaddleX Python API 的集成方式如下:
import cv2
from paddlex import OCRPipeline
from paddlex import PaddleInferenceOption
from paddlex.pipelines.OCR.utils import draw_ocr_box_txt
# 实例化 PaddleInferenceOption 设置推理配置
kernel_option = PaddleInferenceOption()
kernel_option.set_device("gpu:0")
pipeline = OCRPipeline(
'PP-OCRv4_mobile_det',
'PP-OCRv4_mobile_rec',
text_det_kernel_option=kernel_option,
text_rec_kernel_option=kernel_option,)
result = pipeline.predict(
{"input_path": "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_ocr_002.png"},
)
draw_img = draw_ocr_box_txt(result['original_image'], result['dt_polys'], result["rec_text"])
cv2.imwrite("ocr_result.jpg", draw_img[:, :, ::-1])
其他产线的 Python API 集成方式可以参考PaddleX 模型产线推理预测。
PadleX 同样提供了高性能的离线部署和服务化部署方式,具体参考基于 FastDeploy 的模型产线部署。