本项目将 timm/samvit_base_patch16.sa1b 图像特征提取模型适配到华为昇腾 NPU(Ascend910B4-1)上运行。
安装依赖:
pip install -r requirements.txtpython inference.py推理结果示例(单张测试图片):
推理代码:
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)python eval_accuracy.py对单张测试图片进行 CPU 与 NPU embedding 一致性验证:
| 指标 | 数值 |
|---|---|
| feature_dim | 256 |
| max_abs_error | 0.000668 |
| mean_abs_error | 0.000086 |
| relative_error | 0.1193% |
| cosine_similarity | 0.999999 |
| 阈值 | relative_error < 3.0% AND cosine_similarity >= 0.999 |
| 结果 | PASS |
CPU与NPU输出的embedding向量余弦相似度达到 0.999999,相对误差 0.1193%,精度验证PASS。
python benchmark.py| 指标 | 数值 |
|---|---|
| Avg latency | 75.10 ms |
| Min latency | 74.78 ms |
| P50 latency | 75.30 ms |
| Throughput | 13.32 embeddings/sec |
本项目包含单图 smoke consistency 验证,非完整验证集评估。
| 文件 | 说明 |
|---|---|
inference.py | NPU 特征提取推理脚本 |
eval_accuracy.py | CPU-NPU 精度一致性验证脚本 |
benchmark.py | 性能基准测试脚本 |
model_utils.py | 模型加载与预处理工具 |
logs/inference.log | 推理结果日志 |
logs/accuracy.log | 精度验证日志 |
logs/benchmark.log | 性能测试日志 |
assets/test.jpg | 测试图片 |
timm.create_model(name, pretrained=False, num_classes=0) 创建模型