在搭载 NPU 的 AMD AI PC 上部署端到端对象检测模型

Jan 24, 2026

简介

设备端 AI 时代正在加速到来,而采用 AMD Ryzen AI 的 PC 正处在这场变革的前沿。凭借专用的神经处理单元 (NPU)、集成 GPU 和高性能 CPU,开发者如今可以在本地部署复杂的计算机视觉模型,实现低延迟推理,而无需依赖云端。

对象检测是众多 AI 应用(从自动驾驶系统到零售分析)的基石。要在边缘设备上高效运行此类工作负载,需要进行细致的优化。关于如何在 AMD AI PC 上部署对象检测模型,本博客提供了一个按每一步详细说明的端到端工作流程,具体涵盖:

  • 将模型导出为 ONNX 格式,实现跨平台兼容性
  • 使用 AMD Quark 工具进行量化,减小模型大小并提升 NPU 吞吐量
  •  利用 AMD ONNX Runtime 和 NPU 加速进行部署
  • 评估准确性、延迟和效率

我们将以 YOLO-World 为例,展示如何在保持准确性的同时充分提升 NPU 性能,为开发者提供实用的 AI 应用落地方案。

环境 

硬件要求

  • AMD 锐龙 AI 系列处理器,NPU 驱动程序版本为 32.0.203.280 或更高 
  • Windows 11 x86-64(建议更新至最新版本)

软件要求

创建和克隆新的 conda 环境:

		conda create --name ryzen-ai-1.6.1-yoloworld --clone ryzen-ai-1.6.1 

conda activate ryzen-ai-1.6.1-yoloworld 
	

代码和模型

浮点模型概述

本演示采用经过训练的 Yolo World 模型,其规格如下:

  • 版本Yolov8s-worldv2
  • 输入分辨率:640×640
  • 格式:FP32
  • 基准精度
    • AP50-95:0.415
    • AP50:0.498

该模型将作为量化和性能评估的参考基准。

将 Yolo World 导出为 ONNX

YoloWorld 支持直接导出为 ONNX 格式。可使用 Python 脚本直接导出。

导出命令

		python .\ultra_yolo_to_onnx.py --pt-model .\models\yolov8s-worldv2 --input-size 640 
	

关键注意事项

  • 使用 opset ≥ 20
  • 导出后,使用 Netron 验证模型

支持的算子

确保模型中的所有算子均受 AMD NPU 支持。 

YOLO World 中支持的主要算子包括:

 

算子 支持
Conv Y
Batchnormal Fuse
Sigmoid Y
Exp Y
Add/Mul Y
Transpose Y
Reshape Y
Clip Y
Softmax Y
Cast Y
Normalize Y
Div Y
Mul Y
Maxpool Y
Resize Y
Slice Y
Einsum Y
NMS 在 CPU 上

如需详细了解所有受支持的算子,请访问:AMD Ryzen AI 文档

量化工作流程

准备校准数据集

校准数据集必须:

  • 能够代表实际的部署数据
  • 覆盖光照、目标尺寸和类别分布
  • 包含 100–1000 张图像

运行量化工具

示例(特定于平台的命令):

		python quark_quant.py --onnx yolo-world-models/yolov8s-world.onnx ^ 
       --quant A16W8_ADAROUND ^ 
       -exclude-post 
	

关键配置字段:

字段 说明
quant 量化类型,可使用 A8W8/A16W8 及其他类型
exclide-post 建议用于激活操作
num-calib-images 用于校准的图像数量(默认 512)
lr 学习率(默认 0.1)
iters 迭代次数(默认 3000)

部署工作流程

将模型加载到运行时

Python API 示例:

		session = ort.InferenceSession(model_path, 
          providers=["VitisAIExecutionProvider"])
	

完整的推理流水线

		1. preprocess 
img_resized, pad_top_left, scale = preprocess_image( 
    img, input_size_wh, bgr2rgb=True 
) 

2. inference 
outputs = session.run(output_names=None, input_feed={input_name:       img_resized}) 

3. decode + nms 
img_detections = postprocess_output( 
    outputs[0], 
    pad_top_left, 
    scale, 
    yolo_id_to_coco_id_map, 
    min_score_thres, 
    nms_iou_thresh, 
    img_width, 
    img_height, 
) 
	

推荐的预处理步骤:

  • 使用 Letterbox 方式将尺寸调整为 (640,640)
  • 归一化至 0–1 区间
  • 通道顺序设为 BGR 转 RGB
  • 填充方式使用“居中对齐”

测试 mAP 与性能

您可以替换模型和设备,以测试 CPU 模式。

		python eval_on_coco.py –-model yolo-world-models/ yolov8l-worldv2-A16W8_ADAROUND-640x640-exclude-post –-device npu 

python infer_single.py -–model yolo-world-models/ yolov8l-worldv2-A16W8_ADAROUND-640x640-exclude-post -–image test_img.jpg –-device npu --runtime-seconds 60
	

注意事项

  • 预处理必须与训练时完全一致
  • 在嵌入式平台上避免使用动态形状
  • 验证特征映射图布局
  • 校准数据集极为重要

结果

下面是 yolov8s-worldv2 的结果表:

yolov8s-worldv2 mAP mAP50 mAP75 延迟
(毫秒)
模型大小
浮点模型 35.9 49.7 39 53.21 48.06k
量化模型 35.6 49.6 38.7 90.68 12.46k
NPU E2E 准确度 35.6 49.5 38.7 22.85 17.39k

结语

在本博客中,我们展示了在 AMD AI PC 上部署对象检测模型的完整工作流程,从将 YOLO-World 导出为 ONNX、进行量化一直到 NPU 部署和评估。

关键要点包括:

  • 通过使用 A16W8_ADAROUND 进行量化,可在保持精度的同时显著减小模型大小
  • 正确的校准和预处理对于实现稳定的部署性能至关重要

AMD AI 生态系统正在快速发展,现在正是探索设备端 AI 流水线的绝佳时机。我们鼓励开发者:

  • 尝试不同的量化方案,优化自己的工作负载
  • 在 Ryzen AI PC 上对自定义模型进行基准测试,充分发挥 NPU 潜能
  • 通过分享见解、性能结果和最佳实践,为 AMD AI 开发者社区做出贡献

通过遵循此工作流程,您将可以充分释放 AMD NPU 潜能,顺畅运行生产就绪的实时对象检测模型,高效而精准地将强大 AI 能力落地至边缘环境。

Related Blogs