本文档记录 microsoft/conditional-detr-resnet-50 Conditional DETR 目标检测模型在昇腾 NPU(Ascend 910B3)上的迁移适配、精度评测与性能验证结果。
Conditional DETR 是 DETR 的改进变体,通过条件空间查询(conditional spatial query)加速训练收敛。ResNet-50 backbone + 6 层 Transformer Encoder-Decoder,在 COCO 数据集上预训练,支持 91 类目标检测。比原始 DETR 训练快 6-10×。
相关获取地址:
| 组件 | 版本 |
|---|---|
torch | 2.8.0 |
torch_npu | 2.8.0.post4 |
transformers | 5.8.1 |
timm | 1.0.27 |
CANN | 8.5.1 |
8 × Ascend 910B3timm 库(TimmBackbone)conda create -n conditional-detr-resnet-50 python=3.11 -y
conda activate conditional-detr-resnet-50
pip install torch==2.8.0 torch_npu==2.8.0.post4 timm \
-i https://pypi.tuna.tsinghua.edu.cn/simple
pip install transformers torchvision pillow numpy \
-i https://pypi.tuna.tsinghua.edu.cn/simplepython inference.py --image photo.jpg --device npufrom inference import DetrDetector
detector = DetrDetector(model_path="./conditional-detr-resnet-50", device="npu")
results = detector.detect(["photo.jpg"], threshold=0.5)python inference.py --image photo.jpg --device npu预期输出:检测到的对象 bounding boxes、类别和置信度,无运行时错误。
测试条件:4 张合成 640×480 图像,batch_size=2,NPU 预热 1 轮。
| 指标 | 数值 |
|---|---|
| CPU 吞吐量 | 0.3 img/s |
| NPU 吞吐量 | 11.2 img/s |
| CPU/NPU 加速比 | 36.7 × |
分别在 CPU 和 NPU 上推理 4 张合成图像,比较 100 个 object query 分类 logits 展平后的余弦相似度。
| 指标 | 数值 |
|---|---|
| 平均余弦相似度 | 1.000000 |
| 精度误差率 | 0.0001% |
结论:精度误差率 0.0001%,NPU 与 CPU 输出完全一致,评测通过。
ConditionalDetrForObjectDetection.from_pretrained() 加载(注意类名不同于 DETR)timm 库model.to("npu:0") 迁移from transformers import AutoImageProcessor, ConditionalDetrForObjectDetection
model = ConditionalDetrForObjectDetection.from_pretrained("conditional-detr-resnet-50").to("npu:0")
processor = AutoImageProcessor.from_pretrained("conditional-detr-resnet-50")
inputs = processor(images=image, return_tensors="pt")
inputs = {k: v.to("npu:0") for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)ConditionalDetrForObjectDetection,非 DetrForObjectDetectionpip install timm