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

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

模型介绍

en_ppocr_mobile_v2.0_table_rec_infer 是 PaddleOCR 的英文表格识别模型,基于 MobileNetV2 骨干网络和 Sequence-to-Sequence 识别头。该模型用于识别表格单元格中的文本内容以及表格结构,输出每个时间步的字符/结构 token 预测。

  • 原始模型地址: ModelScope - en_ppocr_mobile_v2.0_table_rec_infer
  • 任务类型: OCR 识别 (ocr-recognition)
  • 模型框架: PyTorch (导出为 ONNX)
  • 输入格式: 图片,预处理为 [1, 3, 32, W] float32 张量(高度固定为 32,宽度可变)
  • 输出格式: Logits [1, seq_len, 279] float32 张量,包含 279 个字符/结构 token 类别的预测分数

依赖环境

  • 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. 输入规格: 模型固定输入高度为 32,宽度可变,支持多种宽度输入
  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_rec_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) 作为测试图片,预处理后输入形状为 [1, 3, 32, 163]。

指标CPUNPU
推理耗时12.21 ms1.56 ms
Logits 范围[0.0000, 0.9087][0.0000, 0.9087]
预测序列长度4141
字符类别数279279

NPU 推理运行截图

NPU推理截图

CPU/NPU 精度测试

测试方法

使用 ONNX Runtime 的 CPUExecutionProvider 和 CANNExecutionProvider 分别对同一张测试图片进行推理,对比输出的 Logits 张量和 Argmax 预测结果。通过以下指标评估精度:

  1. Logits 数值差异(绝对误差、余弦相似度)
  2. Argmax 预测一致率(预测类别是否一致)
  3. Softmax 概率分布差异(KL 散度)

精度指标

指标值
最大绝对误差 (Max Abs Error)0.003807
平均绝对误差 (Mean Abs Error)0.000007
均方误差 (MSE)< 0.000001
余弦相似度 (Cosine Similarity)0.999999
归一化相对误差0.0008%
Argmax 预测一致率100.0000%
概率平均绝对误差< 0.000001
KL 散度-0.000001

结论

NPU 与 CPU 推理结果误差为 0.0008%,符合精度误差小于 1% 的要求。 余弦相似度达到 0.999999,Argmax 预测类别完全一致(一致率 100%),NPU 和 CPU 的预测结果完全相同。

性能测试结果

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

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

推理成功证据

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

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

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

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

模型标签

#+NPU #+OCR #+CV #+表格识别 #+昇腾 #+PPOCR #+MobileNet