本文档记录 TahaDouaji/detr-doc-table-detection 在 Ascend 910B3 NPU 环境下的适配与验证结果。
该模型基于 DETR(DEtection TRansformer,Facebook Research)架构,使用 ResNet-50 作为 backbone,在 ICDAR2019 数据集上微调,用于文档图像中的表格检测。模型支持检测有边框(bordered)和无边框(borderless)两种类型的表格。
DETR 是一种端到端的目标检测模型,将检测任务视为集合预测问题,无需锚框、NMS 等后处理步骤,简化了检测流程。
本仓库提供:
相关获取地址:
参考文档:
| 组件 | 版本 |
|---|---|
torch | 2.8.0 |
torch_npu | 2.8.0.post4 |
transformers | 4.57.6 |
timm | 1.0.27 |
Ascend 910B3,1 逻辑卡DetrForObjectDetection(ResNet-50 backbone)66825610041M1(table)启动前可先检查 NPU 可用性:
python3 -c "import torch; print(f'NPU available: {torch.npu.is_available()}')"环境准备:
# 安装依赖(timm 是 DETR 的 ResNet backbone 所需)
pip install torch torch_npu transformers timm Pillow
# 设置 NPU 可见设备
export ASCEND_RT_VISIBLE_DEVICES=0已验证通过的推理命令:
单张图片检测:
python inference.py --image path/to/document.jpg批量检测:
python inference.py --image-dir path/to/images/调整检测阈值:
python inference.py --image doc.jpg --threshold 0.3CPU 推理(参考基准):
python inference.py --device cpu --image doc.jpg输出格式:
{
"model": "TahaDouaji--detr-doc-table-detection",
"device": "npu:0",
"num_images": 1,
"inference_time_seconds": 0.25,
"results": [
{
"image": "document.jpg",
"detections": [
{
"box": [50.12, 80.34, 400.56, 300.78],
"score": 0.9821,
"label": "table"
}
]
}
]
}边界框格式:[x1, y1, x2, y2](左上角和右下角坐标,单位:像素)。
python inference.py --image test_images/doc_with_table.jpg预期输出:
detections 数组包含检测到的表格边界框box、score、label 字段验证结果:
测试条件:4 张文档图片,threshold=0.5。
| 指标 | CPU | NPU |
|---|---|---|
avg_time | 4.1366 s | 0.2388 s |
speedup | - | 17.32x |
注:DETR 模型计算量较大(backbone + transformer encoder-decoder),NPU 加速效果显著。CPU 推理需 4 秒以上,NPU 仅需约 0.24 秒。
精度评测采用检测框一致率和坐标误差作为指标。
| 指标 | 数值 |
|---|---|
| 测试图片数 | 4 |
| 总检测框数 | 8 |
| 匹配检测框数 | 8 |
| 检测一致率 | 100.00% |
| 最大坐标偏差 | 0.48 px |
| 精度要求(错误率 < 1%) | 通过 |
结论:NPU 与 CPU 检测到相同的表格区域,边界框坐标差异最大仅 0.48 像素(远小于 1 像素),精度通过验证。
timm 库,需提前安装(pip install timm)。--threshold 参数调整。阈值越低,召回越高但可能引入误检。[x1, y1, x2, y2] 绝对坐标,可直接用于在图像上绘制检测框。