本模型是基于 ResNet50 架构的植物图像分类模型,在 plants 数据集上训练了 18 个 epochs。模型能够识别 30 种不同植物类别,包括 aloevera(芦荟)、banana(香蕉)、coconut(椰子)、corn(玉米)等。
图像分类 - 30 类植物分类
PyTorch + torchvision
本模型已成功适配华为昇腾 Ascend910 NPU。使用 torch_npu 将模型加载至 NPU 设备即可运行。NPU 推理结果与 CPU 推理结果误差极小,最大相对误差 < 1%。
# 安装依赖
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch torchvision numpy Pillow
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch_npu# 1. 生成测试图片
python3 generate_test_image.py
# 2. CPU 推理
python3 inference.py test_inputs/test_plant.jpg cpu
# 3. NPU 推理
python3 inference.py test_inputs/test_plant.jpg npu:0
# 4. CPU vs NPU 精度对比
python3 compare_cpu_npu.py=== Top-5 Predictions ===
paddy (id=18): 48.73%
pineapple (id=21): 29.73%
waterapple (id=28): 7.68%
bilimbi (id= 2): 3.50%
mango (id=15): 1.60%=== Top-5 Predictions ===
paddy (id=18): 48.74%
pineapple (id=21): 29.72%
waterapple (id=28): 7.68%
bilimbi (id= 2): 3.49%
mango (id=15): 1.60%CPU 与 NPU 的 Top-5 预测结果完全一致,概率值几乎完全相同。
pytorch_model.ptinference.py 脚本加载模型并进行推理cpu 或 npu:0# 快速部署示例
from inference import load_model, preprocess_image, inference, get_predictions
import torch
device = torch.device("npu:0")
model = load_model(device)
image_tensor = preprocess_image("test.jpg")
outputs, elapsed = inference(model, image_tensor, device)
results, _ = get_predictions(outputs, CLASSES)
for r in results:
print(f"{r['class']}: {r['probability']*100:.2f}%")使用 compare_cpu_npu.py 脚本进行精度对比:
| 指标 | 值 |
|---|---|
| 最大绝对误差 (概率) | 1.06 × 10⁻⁴ |
| 平均绝对误差 (概率) | 4.99 × 10⁻⁶ |
| 最大相对误差 | 8.16 × 10⁻⁴ |
| 余弦相似度 | 0.9999998212 |
| Top-1 一致率 | 100.00% |
| Top-5 一致率 | 100.00% |
| CPU 推理耗时 (10 images) | 1914.59 ms |
| NPU 推理耗时 (10 images) | 6.79 ms |
| NPU/CPU 加速比 | 281.81× |
NPU 与 CPU 推理结果最大相对误差 = 0.08% < 1%,精度满足要求。
| 测试项 | CPU | NPU | 加速比 |
|---|---|---|---|
| 单张推理耗时 | ~203.17 ms | ~142.17 ms | 1.43× |
| 批量推理 (10张) | 1914.59 ms | 6.79 ms | 281.81× |
注:批量推理时 NPU 的并行计算优势明显,加速比达 281×。

| 文件 | 说明 |
|---|---|
inference.py | CPU/NPU 推理脚本 |
compare_cpu_npu.py | CPU vs NPU 精度对比脚本 |
requirements.txt | Python 依赖 |
generate_test_image.py | 测试图片生成脚本 |
readme.md | 中文文档 (本文件) |
screenshot_inference.png | 推理结果截图 |
基于现有评测数据,CPU 与 NPU 的 余弦相似度 精度误差为 0.0%,小于 1% 的精度要求。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。