v
v50_/timm-efficientnet_el_pruned.in1k-FE-NPU
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

timm/efficientnet_el_pruned.in1k on Ascend NPU - Feature Extraction

1. 简介

本项目将 timm/efficientnet_el_pruned.in1k 图像特征提取模型适配到华为昇腾 NPU(Ascend910B4)上运行。

  • 原始模型:timm/efficientnet_el_pruned.in1k
  • 模型类型:图像特征提取(输出 1536 维 embedding 向量)
  • 适配方式:ModelScope snapshot_download 下载权重,timm.create_model(pretrained=False, num_classes=0) 创建结构并加载本地权重
  • 运行设备:单卡 Ascend NPU

2. 验证环境

  • NPU: Ascend910B4
  • torch: 2.10.0
  • torch_npu: 2.10.0
  • timm: 1.0.27

安装依赖:

pip install -r requirements.txt

3. 推理运行

python inference.py

推理结果示例(单张测试图片):

  • Feature dim: 1536
  • Embedding L2 norm: 见 logs/inference.log
  • 状态: SUCCESS

推理代码:

import torch
from PIL import Image
import model_utils

model, model_dir, weights_path, missing, unexpected = model_utils.load_model()
model = model.to("npu:0").eval()

image = Image.open("test.jpg").convert("RGB")
inputs = model_utils.preprocess(image, model).to("npu:0")

with torch.no_grad():
    embedding = model(inputs)
    normalized = torch.nn.functional.normalize(embedding, p=2, dim=-1)

4. 精度验证

python eval_accuracy.py

对单张测试图片进行 CPU 与 NPU embedding 一致性验证:

指标数值
feature_dim1536
max_abs_error0.005857
mean_abs_error0.000200
relative_error0.1474%
cosine_similarity0.999999
阈值relative_error < 1.0% AND cosine_similarity >= 0.999
结果PASS

CPU与NPU输出的embedding向量余弦相似度达到 0.999999,相对误差 0.1474%,精度验证PASS。

5. 性能参考

python benchmark.py
指标数值
Avg latency13.03 ms
Min latency12.95 ms
P50 latency13.05 ms
Throughput76.75 embeddings/sec

6. 精度评测说明

本项目包含单图 smoke consistency 验证,非完整验证集评估。

7. 项目文件

文件说明
inference.pyNPU 特征提取推理脚本
eval_accuracy.pyCPU-NPU 精度一致性验证脚本
benchmark.py性能基准测试脚本
model_utils.py模型加载与预处理工具
logs/inference.log推理结果日志
logs/accuracy.log精度验证日志
logs/benchmark.log性能测试日志
assets/test.jpg测试图片

8. 注意事项

  • 使用 timm.create_model(name, pretrained=False, num_classes=0) 创建模型
  • 特征提取输出 embedding 向量,非分类标签
  • CPU-NPU embedding cosine_similarity >= 0.999