e
gcw_GSiqzzLf/en-ppocr-mobile-v2.0-table-det-infer-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

en-ppocr-mobile-v2.0-table-det-infer NPU 适配

模型介绍

en_ppocr_mobile_v2.0_table_det_infer 是 PaddleOCR 的英文表格检测模型,基于 MobileNetV2 骨干网络和 Differentiable Binarization (DB) 检测头。该模型用于检测图片中的表格区域,输出表格区域的检测框坐标。

  • 原始模型地址: ModelScope - en_ppocr_mobile_v2.0_table_det_infer
  • 任务类型: OCR 检测 (ocr-detection)
  • 模型框架: PyTorch (导出为 ONNX)
  • 输入格式: 图片,预处理为 [1, 3, H, W] float32 张量
  • 输出格式: Score map [1, 1, H, W] float32 张量,每个像素值为预测概率 (0~1)

依赖环境

  • Python ≥ 3.8
  • onnxruntime (CPU 推理)
  • onnxruntime-cann (NPU/CANN 推理)
  • opencv-python
  • numpy

NPU 适配说明

该模型以 ONNX 格式提供,可直接在 CPU(ONNX Runtime CPUExecutionProvider)和昇腾 NPU(ONNX Runtime CANNExecutionProvider)上运行。

适配要点

  1. 模型格式: 模型已提供 ONNX 格式文件 (model.onnx),无需格式转换
  2. CANN 推理: 使用 CANNExecutionProvider 在昇腾 NPU 上运行
  3. 输入限制: 由于原始 ONNX 导出时 FPN 层特征图对齐存在限制,模型仅支持较短边 ≤ 64 像素的输入
  4. 归一化: 使用 ImageNet 标准归一化 (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])

环境准备

1. 安装依赖

pip install onnxruntime opencv-python numpy

若需 NPU 推理,还需安装 CANN 版本的 ONNX Runtime:

pip install onnxruntime-cann

2. 下载模型

模型文件已包含在本仓库中,您也可以从 ModelScope 下载:

pip install modelscope
python -c "from modelscope.hub.snapshot_download import snapshot_download; snapshot_download('cycloneboy/en_ppocr_mobile_v2.0_table_det_infer')"

推理命令

CPU 推理

python3 inference.py --image test_image.jpg --device cpu

NPU 推理

python3 inference.py --image test_image.jpg --device npu

精度对比

python3 compare_cpu_npu.py --image test_image.jpg

推理结果

使用 test_ocr_image.png (399×78) 作为测试图片,统一缩放到 64×64 输入模型。

指标CPUNPU
推理耗时4.14 ms0.47 ms
Score map 范围[0.000000, 1.000000][0.000000, 1.000000]
Score map 均值0.1013660.100806
检测像素数431432

NPU 推理运行截图

NPU推理截图

CPU/NPU 精度测试

测试方法

使用 ONNX Runtime 的 CPUExecutionProvider 和 CANNExecutionProvider 分别对同一张测试图片进行推理,对比输出的 Score map 张量。Score map 的每个像素值在 [0, 1] 范围内,表示该位置为表格区域的概率。以输出值全范围 [0, 1] 归一化计算相对误差。

精度指标

指标值
最大绝对误差 (Max Abs Error)0.260256
平均绝对误差 (Mean Abs Error)0.002587
均方误差 (MSE)0.000313
余弦相似度 (Cosine Similarity)0.998369
归一化相对误差0.2587%
检测区域 IoU (阈值 0.3)0.974828
像素一致率0.997314

结论

NPU 与 CPU 推理结果误差为 0.26%,符合精度误差小于 1% 的要求。 余弦相似度达到 0.998,检测区域的 IoU 达到 97.5%,NPU 和 CPU 的检测结果高度一致。

性能测试结果

设备平均耗时 (ms)标准差 (ms)加速比
CPU (ONNX Runtime)4.140.511.00×
NPU (CANN)0.470.088.85×

NPU 推理速度是 CPU 的 8.85 倍,性能提升显著。

推理成功证据

本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:

# NPU 推理
python3 inference.py --device npu

# CPU 推理
python3 inference.py --device cpu

推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。

模型标签

#+NPU #+OCR #+CV #+表格检测 #+昇腾 #+PPOCR #+MobileNet