Ascend-SACT/RT-DETR-L_wired_table_cell_det-300I-Duo
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

RT-DETR-L_wired_table_cell_det —— 300I-Duo环境推理指导(Paddle 模型 -> ONNX -> OM)

RT-DETR-L_wired_table_cell_det: 表格单元检测模块是表格识别任务中的关键组件,负责定位和标记表格图像中的每个单元格区域。该模块的性能直接影响整个表格识别过程的准确性和效率。表格单元检测模块通常输出每个单元格区域的边界框,这些边界框随后作为输入传递给表格识别流水线进行进一步处理。

本文档介绍了Ascend-SACT/RT-DETR-L_wired_table_cell_det模型的部署流程,包括推理环境准备、模型部署、功能验证,旨在帮助用户快速完成模型在300I-Duo环境部署和验证。

概述

推理环境准备

配套版本
固件与驱动25.2.RC1
CANN8.3.RC2
Python3.11
推荐使用镜像cann8.3.rc2-310p-ubuntu22.04

快速上手

环境配置

1.安装依赖

git clone https://atomgit.com/zDaPao/Ascend-SACT/RT-DETR-L_wired_table_cell_det-OM.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.whl

3.配置CANN环境变量

执行以下命令激活CANN环境变量。注意:该命令中文件路径仅供参考,请以实际安装环境配置环境变量。

source /usr/local/Ascend/ascend-toolkit/set_env.sh

获取权重

下载PP-OCRv4_server_seal_det模型权重,并放置于本地目录PP-OCRv4_server_seal_det

mkdir RT-DETR-L_wired_table_cell_det
modelscope download --model PaddlePaddle/RT-DETR-L_wired_table_cell_det --local_dir ./RT-DETR-L_wired_table_cell_det

模型推理

模型转换

1.导出onnx模型

paddlex --paddle2onnx --paddle_model_dir RT-DETR-L_wired_table_cell_det/ --onnx_model_dir RT-DETR-L_wired_table_cell_det

转onnx的必要性:

1.Paddle 格式 不能直接在昇腾 310P 上运行

2.ONNX 是通用中间格式

3.这是转 OM 模型必须的第一步

2.onnx模型优化 通过auto_optimizer对onnx模型进行改图优化。

python3 -m auto_optimizer optimize RT-DETR-L_wired_table_cell_det/inference.onnx RT-DETR-L_wired_table_cell_det/inference_opt.onnx

优化的必要性:

1.原始 ONNX 有冗余算子、低效结构

2.昇腾对优化后的 ONNX 兼容性更好

3.优化后:推理更快 + 成功率更高 + 性能更高

4.不优化 可能转 OM 失败、推理变慢

3.导出om模型

参照ATC工具指导 ,执行npu-smi info查看芯片名称,并赋值为${soc_version},执行ATC命令,生成PP-OCRv4_server_seal_det的om模型,文件名为inference_{arch}.om,模型{arch}后缀为当前使用的CPU操作系统。

atc --model=RT-DETR-L_wired_table_cell_det/inference_opt.onnx \
--framework=5 \
--output=RT-DETR-L_wired_table_cell_det/inference \
--soc_version=Ascend310P3 \
--input_shape "im_shape:-1,2;image:-1,3,640,640;scale_factor:-1,2"

参数说明:

参数取值详细解释
--modelRT-DETR-L_wired_table_cell_det/inference_opt.onnx指定待转换的ONNX 模型文件路径,为转换的原始输入模型
--framework5源模型框架标识,5 代表 ONNX 框架;0=Caffe、3=TensorFlow、5=ONNX
--outputRT-DETR-L_wired_table_cell_det/inference输出 OM 模型前缀路径,工具自动补.om后缀,生成最终推理模型文件
--soc_versionAscend310P3指定适配的昇腾芯片型号,必须与硬件实际芯片完全匹配
--input_shapeim_shape:-1,2;image:-1,3,640,640;scale_factor:-1,2多输入模型维度定义:・im_shape:-1,2:-1 = 动态 batch,2 = 包含 2 个值(原始图片高度、宽度)・image:-1,3,640,640:-1 = 动态 batch,3=RGB 三通道,640 = 模型输入高度,640 = 模型输入宽度・scale_factor:-1,2:-1 = 动态 batch,2 = 包含 2 个值(高度缩放比例、宽度缩放比例)
--loginfo日志输出级别,info 为输出常规编译信息,方便排查转换报错

运行推理脚本

示例图像test_rt.png已存放在工作路径,执行推理脚本,脚本通过调用PaddleOCR接口进行产线推理。

python infer.py --image_dir ./test_rt.png

推理执行完成后,解析结果存放于output目录,目录包含可视化结果图像。

推理结果: 示例图片

性能测试

1.下载测试集:

mkdir -p dataset
# 下载官方 demo 数据集(公开、可用)
wget https://paddle-model-ecology.bj.bcebos.com/paddlex/data/table-rec-v2-pipe_practical_datasets.tar -P ./dataset
tar -xf ./dataset/table-rec-v2-pipe_practical_datasets.tar -C ./dataset/

2.执行性能测试:

python perf_rtdetr.py

3.执行结果:

==============================================
      RT-DETR-L 表格单元格检测 性能测试
==============================================
测试图片数量 : 8000 张
总耗时       : 494.64 s
平均耗时     : 61.83 ms/张
FPS          : 16.17
==============================================