本文档记录 anydoclayout 文档布局检测模型在华为昇腾 Ascend 910B NPU 上的适配、部署与验证结果。
anydoclayout 是基于 Ultralytics YOLO11s 架构的文档布局检测模型,支持检测 8 种文档元素:header(页眉)、title(标题)、text(文本)、table(表格)、figure(图片)、formula(公式)、footer(页脚)、pagenum(页码)。
适配要点:
torch_npu 将 YOLO11s PyTorch 模型迁移至 Ascend NPU相关获取地址:
| 组件 | 版本 |
|---|---|
| CANN | 8.5.1 |
| torch | 2.9.0 |
| torch-npu | 2.9.0.post1 |
| ultralytics | 8.4.51 |
| Python | 3.11.14 |
| NPU | Ascend 910B(1 卡,64GB HBM) |
| 操作系统 | Linux 5.10.0 aarch64 |
| 属性 | 说明 |
|---|---|
| 模型名称 | anydoclayout |
| 任务类型 | 文档布局检测 (Document Layout Detection) |
| 模型框架 | PyTorch (Ultralytics YOLO11s) |
| 输入格式 | 图像 (RGB, 1280x1280) |
| 输出格式 | 检测框 (边界框坐标 + 类别 + 置信度) |
| 模型文件 | anydoclayout-yolo11s-imgsz1280.pt |
| 模型大小 | ~18.4 MB |
检测类别:
| 类别 ID | 类别名 | 说明 |
|---|---|---|
| 0 | header | 页眉 |
| 1 | title | 标题 |
| 2 | text | 文本 |
| 3 | table | 表格 |
| 4 | figure | 图片 |
| 5 | formula | 公式 |
| 6 | footer | 页脚 |
| 7 | pagenum | 页码 |
# 安装依赖
pip install modelscope ultralytics torch torch_npu numpy
# 确认 NPU 环境
npu-smi info
python -c "import torch; import torch_npu; print(torch.npu.is_available())"from modelscope import snapshot_download
model_dir = snapshot_download('anyforge/anydoclayout')CPU 推理:
python inference.py --image test_image.jpg --device cpuNPU 推理:
python inference.py --image test_image.jpg --device npuimport 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}')使用同一张测试图片分别在 CPU 和 NPU 上运行推理,对比检测结果:
| 指标 | CPU | NPU | 差异 |
|---|---|---|---|
| 检测目标数 | 1 | 1 | 0 |
| 检测类别 | figure | figure | 一致 |
| 置信度 | 0.3325 | 0.3326 | 0.000063 |
| 边界框 | [22.45, 35.29, 214.35, 227.13] | [22.46, 35.29, 214.36, 227.13] | IoU=0.9999 |
| 推理耗时 | 1.730s | 0.039s | 加速 ~44x |
| 类别 | CPU 置信度 | NPU 置信度 | 置信度差异 | IoU |
|---|---|---|---|---|
| figure | 0.3325 | 0.3326 | 0.000063 | 0.9999 |
精度测试结论:NPU 与 CPU 推理结果误差为 0.006%,精度符合误差小于 1% 的要求。
| 设备 | 平均耗时 | 最快 | 最慢 |
|---|---|---|---|
| CPU (10次) | 1.730s | 1.694s | 1.915s |
| NPU (10次) | 0.039s | 0.014s | 0.262s |
NPU 相比 CPU 推理加速约 44 倍(预热后)。

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 上推理成功。