本项目将 timm/convnext_base.clip_laiona_320 图像特征提取模型适配到华为昇腾 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 | 1024 |
| max_abs_error | 0.011336 |
| mean_abs_error | 0.002107 |
| relative_error | 0.8107% |
| cosine_similarity | 0.999978 |
| 阈值 | relative_error < 1.0% AND cosine_similarity >= 0.999 |
| 结果 | PASS |
CPU与NPU输出的embedding向量余弦相似度达到 0.999978,相对误差 0.8107%,精度验证PASS。
python benchmark.py| 指标 | 数值 |
|---|---|
| Avg latency | 18.27 ms |
| Min latency | 17.09 ms |
| P50 latency | 17.49 ms |
| Throughput | 54.74 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) 创建模型