YOLOX 是 Megvii (旷视) 推出的高性能目标检测模型,采用 Anchor-Free 的设计。本仓库适配的是 YOLOX-S (Small) 模型,在 COCO 数据集上预训练。
目标检测 (Object Detection) — 80 类 COCO 物体检测
[batch, 3, 640, 640],BGR 图像,填充值 114,保持宽高比(letterbox resize)[x1, y1, x2, y2] 坐标,已缩放回原图尺寸obj_conf * cls_confYOLOX 基于 PyTorch 框架开发,因此 NPU 适配无需模型转换。
model.to("npu:0") 将模型移至 NPU 设备# 设置 YOLOX 源码路径
export PYTHONPATH=/tmp/YOLOX:$PYTHONPATH
# 安装依赖
pip install -r requirements.txtnumpy>=1.21.0
opencv-python-headless>=4.6.0
torch>=2.0.0
torch_npu>=2.0.0python3 inference.py --device cpu --image test.jpgpython3 inference.py --device npu --image test.jpgpython3 compare_cpu_npu.py --image test.jpg

精度对比脚本 compare_cpu_npu.py 执行以下步骤:

| 物体 | CPU 置信度 | NPU 置信度 | IoU | 匹配 |
|---|---|---|---|---|
| bicycle | 0.9545 | 0.9546 | 1.0000 | ✅ |
| dog | 0.9131 | 0.9131 | 1.0000 | ✅ |
| bicycle | 0.6151 | 0.6149 | 0.9992 | ✅ |
| truck | 0.6119 | 0.6124 | 0.9996 | ✅ |
| potted plant | 0.4388 | 0.4394 | 1.0000 | ✅ |
| potted plant | 0.1029 | 0.1027 | 1.0000 | ✅ |
| ... 共 21 个匹配 |
| 指标 | CPU (PyTorch) | NPU (torch_npu) |
|---|---|---|
| 推理耗时 | 0.6722s | 0.7244s |
| 检测物体数 | 21 | 21 |
| 匹配率 | — | 100.00% |
| 平均检测框 IoU | — | 0.9998 |
| 平均置信度差异 | — | 0.10% |
| 指标 | CPU | NPU |
|---|---|---|
| 推理耗时 | 0.6722s | 0.7244s |
| 推理框架 | PyTorch (CPU) | PyTorch (NPU) |
NPU 推理耗时略高于 CPU,主要由于 NPU 模型加载和内存传输开销。对于批量推理场景,NPU 的并行计算优势会更明显。
本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:
# NPU 推理
python3 inference.py --device npu
# CPU 推理
python3 inference.py --device cpu推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。
#+NPU #+目标检测 #+CV #+昇腾 #+YOLOX #+YOLOX-S #+COCO
| 文件 | 说明 |
|---|---|
| inference.py | CPU/NPU 推理脚本 |
| compare_cpu_npu.py | CPU vs NPU 精度对比脚本 |
| requirements.txt | Python 依赖 |
| yolox_s_cpu.pth | YOLOX-S 预训练权重 |
| test.jpg | 测试图片 (YOLOX 官方 dog 图片) |
| cpu_inference.png | CPU 推理截图 |
| npu_inference.png | NPU 推理截图 |
| compare_screenshot.png | 精度对比截图 |