PP-DocLayout_plus-L 是 PaddleOCR 推出的基于RT-DETR-L,在包含中英文论文、多栏杂志、报纸、PPT、合同、书本、试卷、研报、古籍、日文文档、竖版文字文档等场景的自建数据集训练的更高精度版面区域定位模型。
本文档介绍了PP-DocLayout_plus-L模型的部署流程,包括推理环境准备、模型部署、功能验证,旨在帮助用户快速完成模型300I-Duo环境部署和验证。
| 配套 | 版本 |
|---|---|
| 固件与驱动 | 25.2.RC1 |
| CANN | 8.3.RC2 |
| Python | 3.11 |
| 推荐使用镜像 | cann8.3.rc2-310p-ubuntu22.04 |
1.安装依赖
git clone https://atomgit.com/zDaPao/PP-DocLayout_plus-L.git
pip install -r requirements.txt
workdir=$(pwd)
source_path=$(pip show paddlex | grep Location | awk '{print $2}')
cd ${source_path}/paddlex
patch -p1 < ${workdir}/paddlex.patch
cd ${workdir}2.安装msit工具以及相关组件
pip install msit
msit install surgeon
wget https://aisbench.obs.myhuaweicloud.com/packet/ais_bench_infer/0.0.2/ait/ais_bench-0.0.2-py3-none-any.whl
wget https://aisbench.obs.myhuaweicloud.com/packet/ais_bench_infer/0.0.2/ait/aclruntime-0.0.2-cp311-cp311-linux_aarch64.whl
pip install ais_bench-0.0.2-py3-none-any.whl
pip install aclruntime-0.0.2-cp311-cp311-linux_aarch64.whl3.配置CANN环境变量
执行以下命令激活CANN环境变量。注意:该命令中文件路径仅供参考,请以实际安装环境配置环境变量。
source /usr/local/Ascend/ascend-toolkit/set_env.sh下载PP-LCNet_x1_0_table_cls模型权重,并放置于本地目录PP-DocLayout_plus-L
mkdir PP-DocLayout_plus-L
modelscope download --model PaddlePaddle/PP-DocLayout_plus-L --local_dir ./PP-DocLayout_plus-L1.导出onnx模型
paddlex --paddle2onnx --paddle_model_dir PP-DocLayout_plus-L/ --onnx_model_dir PP-DocLayout_plus-L转onnx的必要性:
1.Paddle 格式 不能直接在昇腾 310P 上运行
2.ONNX 是通用中间格式
3.这是转 OM 模型必须的第一步
2.onnx模型优化 通过auto_optimizer对onnx模型进行改图优化。
python3 -m auto_optimizer optimize PP-DocLayout_plus-L/inference.onnx PP-DocLayout_plus-L/inference_opt.onnx优化的必要性:
1.原始 ONNX 有冗余算子、低效结构
2.昇腾对优化后的 ONNX 兼容性更好
3.优化后:推理更快 + 成功率更高 + 性能更高
4.不优化 可能转 OM 失败、推理变慢
3.导出om模型
参照ATC工具指导 ,执行npu-smi info查看芯片名称,并赋值为${soc_version},执行ATC命令,生成PP-LCNet_x1_0_table_cls的om模型,文件名为inference_{arch}.om,模型{arch}后缀为当前使用的CPU操作系统。
atc --model=PP-DocLayout_plus-L/inference_opt.onnx \
--framework=5 \
--output=PP-DocLayout_plus-L/inference_linux_arch64 \
--soc_version=Ascend310P3 \
--input_shape="x:-1,3,800,800" \
--log=info参数含义:
| 参数 | 取值 | 详细解释 |
|---|---|---|
| --model | PP-LCNet_x1_0_table_cls/inference_opt.onnx | 指定待转换的ONNX 模型文件路径,为转换的原始输入模型 |
| --framework | 5 | 源模型框架标识,5 代表 ONNX 框架;0=Caffe、3=TensorFlow、5=ONNX |
| --output | PP-DocLayout_plus-L/inference_linux_arch64 | 输出 OM 模型前缀路径,工具自动补.om后缀,生成最终推理模型文件 |
| --soc_version | Ascend310P3 | 指定适配的昇腾芯片型号,必须与硬件实际芯片完全匹配 |
| --input_shape | x:-1,3,800,800 | 模型输入维度配置:・x:输入节点名称・-1:动态 batch,支持任意数量图片同时推理・3:RGB 三通道・800:模型输入高度・800:模型输入宽度 |
| --log | info | 日志输出级别,info 为输出常规编译信息,方便排查转换报错 |
| 注意:atc工具失效可能是python动态库配置问题,参考如下指令添加动态库路径,具体设置以实际python路径为准 |
export LD_LIBRARY_PATH=/usr/local/python3.11.10/lib:$LD_LIBRARY_PATH获取示例图像存放在工作路径,并执行推理脚本,脚本通过调用PaddleOCR接口进行产线推理,通过指定文本检测模块以及文本识别模块,解决了文本识别任务,将图片中的文字信息以文本形式输出。
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/seal_text_det.png -O test_seal.png
python3 infer.py推理执行完成后结果如下,解析结果存放于output目录,目录包含存有各项中间结果的json文件以及可视化结果图像。
root@guomao-310p-02:/workspace/PP-DocLayout_plus-L# python infer.py --image_dir test_Doclayout_plus.png
/usr/local/python3.11.13/lib/python3.11/site-packages/requests/__init__.py:113: RequestsDependencyWarning: urllib3 (2.5.0) or chardet (7.4.3)/charset_normalizer (3.4.4) doesn't match a supported version!
warnings.warn(
/usr/local/python3.11.13/lib/python3.11/site-packages/paddle/utils/cpp_extension/extension_utils.py:718: UserWarning: No ccache found. Please be aware that recompiling all source files may be required. You can download and install ccache from: https://github.com/ccache/ccache/blob/master/doc/INSTALL.md
warnings.warn(warning_message)
{'res': {'input_path': 'test_Doclayout_plus.png', 'page_index': None, 'boxes': [{'cls_id': 2, 'label': 'text', 'score': 0.987019419670105, 'coordinate': [34.10015, 349.85034, 358.59302, 611.07904]}, {'cls_id': 2, 'label': 'text', 'score': 0.9865998029708862, 'coordinate': [34.497723, 647.1586, 358.2951, 848.66974]}, {'cls_id': 2, 'label': 'text', 'score': 0.9846625328063965, 'coordinate': [385.7108, 497.4089, 711.2244, 697.84515]}, {'cls_id': 8, 'label': 'table', 'score': 0.984123170375824, 'coordinate': [73.76765, 105.947624, 321.95178, 298.8482]}, {'cls_id': 8, 'label': 'table', 'score': 0.9834218621253967, 'coordinate': [436.9544, 105.81434, 662.7154, 313.48615]}, {'cls_id': 2, 'label': 'text', 'score': 0.9832204580307007, 'coordinate': [385.62436, 346.22742, 710.1007, 458.7701]}, {'cls_id': 2, 'label': 'text', 'score': 0.9816057085990906, 'coordinate': [385.77817, 735.19165, 710.56104, 849.97424]}, {'cls_id': 6, 'label': 'figure_title', 'score': 0.9577596783638, 'coordinate': [34.417892, 20.056555, 358.71283, 76.53577]}, {'cls_id': 6, 'label': 'figure_title', 'score': 0.9505584239959717, 'coordinate': [385.72342, 20.054249, 711.2912, 74.92777]}, {'cls_id': 0, 'label': 'paragraph_title', 'score': 0.900121808052063, 'coordinate': [386.45773, 477.03308, 699.4055, 490.07675]}, {'cls_id': 0, 'label': 'paragraph_title', 'score': 0.8845474720001221, 'coordinate': [35.413162, 627.73553, 185.58348, 640.52563]}, {'cls_id': 0, 'label': 'paragraph_title', 'score': 0.883712649345398, 'coordinate': [387.17154, 716.34326, 524.7857, 729.2565]}, {'cls_id': 0, 'label': 'paragraph_title', 'score': 0.8508898019790649, 'coordinate': [35.49101, 331.18387, 141.65002, 344.8138]}]}}推理结果:
