qq_34566203/nvidia--segformer-b0-finetuned-ade-512-512-ascend
模型介绍文件和版本Pull Requests讨论分析

SegFormer-B0 (ADE20K) on Ascend NPU

1. 简介

本文档记录 nvidia/segformer-b0-finetuned-ade-512-512 在 Ascend 910B3 NPU 环境下的适配与验证结果。该模型基于 SegFormer-B0 架构,在 ADE20K 数据集上微调,支持 150 类语义分割。

本仓库提供:

  • inference.py:NPU 推理脚本,支持单张/批量图片语义分割
  • eval.py:精度与性能评测脚本,对比 NPU 与 CPU 的逐像素预测一致性
  • log.txt:评测运行日志

相关获取地址:

  • 模型权重(HuggingFace):https://huggingface.co/nvidia/segformer-b0-finetuned-ade-512-512
  • 镜像加速:https://hf-mirror.com

2. 验证环境

组件版本
torch2.8.0
torch_npu2.8.0.post4
transformers4.57.6
  • NPU:Ascend 910B3,1 逻辑卡
  • 模型架构:SegformerForSemanticSegmentation(4 阶段,hidden_sizes=[32,64,160,256])
  • 输入尺寸:512x512 RGB 图像
  • 分类数:150 类(ADE20K)

3. 推理启动

环境准备

pip install torch torch_npu transformers Pillow
export ASCEND_RT_VISIBLE_DEVICES=0

单张图片分割

python inference.py --image path/to/image.jpg

批量分割

python inference.py --image-dir path/to/images/

输出格式

{
  "model": "nvidia--segformer-b0-finetuned-ade-512-512",
  "device": "npu:0",
  "num_images": 1,
  "results": [
    {
      "image": "scene.jpg",
      "segmentation_shape": [128, 128],
      "num_classes_found": 8,
      "classes": {
        "sky": {"class_id": 2, "pixel_count": 4096, "percentage": 25.0},
        "building": {"class_id": 1, "pixel_count": 8192, "percentage": 50.0},
        ...
      }
    }
  ]
}

4. Smoke 验证

python inference.py --image test_images/outdoor_landscape.jpg

5. 性能参考

指标CPUNPU
平均推理时间2.2497 s0.0804 s
吞吐量1.78 img/s49.77 img/s
加速比-27.98x

6. 精度评测

精度评测采用逐像素预测一致率作为指标。

指标数值
测试图片数4
总像素数65,536
匹配像素数65,470
像素一致率99.90%
错误率0.10%
精度要求(错误率 < 1%)通过

结论:NPU 与 CPU 的逐像素分割结果一致率达 99.90%,错误率 0.10% 低于 1% 阈值,精度通过验证。

7. 注意事项

  1. 输出分辨率:模型输出分割图为输入尺寸的 1/4(512→128),每个像素代表 4x4 区域。
  2. ADE20K 类别:支持 150 个语义类别,包括建筑、天空、道路、树木、人等常见类别。
  3. 显存占用:512x512 输入需要约 1.5GB 显存,批量推理时注意 NPU 显存限制。
下载使用量0