ConvMixer 是一种基于卷积的混合架构,使用逐层卷积(depthwise convolution)和逐点卷积(pointwise convolution)交替堆叠,以类似 ViT 的方式处理图像 patch。768/32 表示隐藏维度 768、patch 大小 32,在 ImageNet-1K 上预训练。
本项目将 timm/convmixer_768_32.in1k 适配到单卡昇腾 NPU (Ascend910),使用 ModelScope snapshot_download 下载权重,timm.create_model(pretrained=False) 加载本地权重。
python inference.py输出示例:
=== ConvMixer 768/32 Inference on NPU ===
Model: timm/convmixer_768_32.in1k
Device: npu:0
Image: assets/test.jpg
Top-1: handkerchief (0.35%)
Top-2: envelope (0.35%)
Top-3: sunscreen (0.32%)
Top-4: can opener (0.28%)
Top-5: toilet seat (0.26%)
Output shape: torch.Size([1, 1000])
Top-1 class: handkerchief对单张测试图片进行 CPU 与 NPU 一致性验证:
| 指标 | 数值 |
|---|---|
| max_abs_error | 0.015085 |
| mean_abs_error | 0.003345 |
| relative_error | 0.3778% |
| cosine_similarity | 0.999990 |
| threshold | 1.0% |
| 结果 | PASS |
| 指标 | 数值 |
|---|---|
| avg latency | 16.45 ms |
| min latency | 16.42 ms |
| max latency | 16.50 ms |
| p50 latency | 16.44 ms |
| p90 latency | 16.49 ms |
| p95 latency | 16.50 ms |
| throughput | 60.80 images/sec |
本项目包含单图 smoke consistency 验证,非官方 ImageNet 完整验证集评测。详细指标见第 4 节。
见 screenshots/self_verification.png
logs/inference.log - 推理输出日志logs/accuracy.log - 精度验证日志logs/benchmark.log - 性能基准测试日志