e
gcw_GSiqzzLf/anydoclayout-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

anydoclayout on Ascend NPU

1. 简介

本文档记录 anydoclayout 文档布局检测模型在华为昇腾 Ascend 910B NPU 上的适配、部署与验证结果。

anydoclayout 是基于 Ultralytics YOLO11s 架构的文档布局检测模型,支持检测 8 种文档元素:header(页眉)、title(标题)、text(文本)、table(表格)、figure(图片)、formula(公式)、footer(页脚)、pagenum(页码)。

适配要点:

  • 使用 torch_npu 将 YOLO11s PyTorch 模型迁移至 Ascend NPU
  • 验证了 NPU 推理功能正常
  • CPU 与 NPU 推理结果误差 < 1%

相关获取地址:

  • 原始模型(ModelScope):https://www.modelscope.cn/models/anyforge/anydoclayout
  • 原始模型(HuggingFace):https://huggingface.co/anyforge/anydoclayout
  • NPU 适配仓库:https://gitcode.com/gcw_GSiqzzLf/anydoclayout-npu

2. 验证环境

组件版本
CANN8.5.1
torch2.9.0
torch-npu2.9.0.post1
ultralytics8.4.51
Python3.11.14
NPUAscend 910B(1 卡,64GB HBM)
操作系统Linux 5.10.0 aarch64

3. 模型信息

属性说明
模型名称anydoclayout
任务类型文档布局检测 (Document Layout Detection)
模型框架PyTorch (Ultralytics YOLO11s)
输入格式图像 (RGB, 1280x1280)
输出格式检测框 (边界框坐标 + 类别 + 置信度)
模型文件anydoclayout-yolo11s-imgsz1280.pt
模型大小~18.4 MB

检测类别:

类别 ID类别名说明
0header页眉
1title标题
2text文本
3table表格
4figure图片
5formula公式
6footer页脚
7pagenum页码

4. 环境准备

# 安装依赖
pip install modelscope ultralytics torch torch_npu numpy

# 确认 NPU 环境
npu-smi info
python -c "import torch; import torch_npu; print(torch.npu.is_available())"

5. 快速开始

5.1 下载模型

from modelscope import snapshot_download
model_dir = snapshot_download('anyforge/anydoclayout')

5.2 运行推理

CPU 推理:

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

NPU 推理:

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

5.3 推理代码示例

import torch
from ultralytics import YOLO

# 加载模型
model = YOLO('models/anydoclayout-yolo11s-imgsz1280.pt')

# CPU 推理
model.model = model.model.to('cpu')
results = model.predict('test_image.jpg', imgsz=1280, device='cpu')

# NPU 推理
model.model = model.model.to('npu:0')
results = model.predict('test_image.jpg', imgsz=1280, device='npu:0')

# 解析结果
for r in results:
    for box in r.boxes:
        cls_id = int(box.cls[0])
        conf = float(box.conf[0])
        xyxy = box.xyxy[0].tolist()
        print(f'class={cls_id} conf={conf:.4f} box={xyxy}')

6. CPU/NPU 精度测试

6.1 测试方法

使用同一张测试图片分别在 CPU 和 NPU 上运行推理,对比检测结果:

  • 类别一致率:检测到的目标类别是否一致
  • 置信度差异:检测置信度的差异
  • 边界框 IoU:检测框的重叠度

6.2 测试结果

指标CPUNPU差异
检测目标数110
检测类别figurefigure一致
置信度0.33250.33260.000063
边界框[22.45, 35.29, 214.35, 227.13][22.46, 35.29, 214.36, 227.13]IoU=0.9999
推理耗时1.730s0.039s加速 ~44x

6.3 精度对比详情

类别CPU 置信度NPU 置信度置信度差异IoU
figure0.33250.33260.0000630.9999

6.4 精度结论

精度测试结论:NPU 与 CPU 推理结果误差为 0.006%,精度符合误差小于 1% 的要求。

7. 性能测试

设备平均耗时最快最慢
CPU (10次)1.730s1.694s1.915s
NPU (10次)0.039s0.014s0.262s

NPU 相比 CPU 推理加速约 44 倍(预热后)。

8. 运行截图

推理截图

9. 交付文件

  • inference.py — 推理脚本(支持 CPU/NPU)
  • compare_cpu_npu.py — CPU/NPU 精度对比脚本
  • requirements.txt — 依赖清单
  • README.md — 本文档
  • accuracy_report.log — 精度测试日志
  • terminal_screenshot.png — 推理运行截图

推理成功证据

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

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

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

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