跳到主要内容

YOLOv8-det 示例

此文档讲述使用 QAI AppBuilder Python API 利用 Qualcomm® Hexagon™ Processor (NPU) 推理 YOLOv8-det 目标检测模型。

示例支持设备

设备SoC
Dragon Q6AQCS6490
Dragon Q8BSC8280XP
Fogwise® AIRbox Q900QCS9075

安装 QAI AppBuilder

提示
  1. 请根据 QAI AppBuilder 安装方法 安装 QAI AppBuilder。

  2. 请根据 创建 ADSP 环境变量 配置 ADSP 环境变量。

运行示例

安装依赖

在已激活的虚拟环境中安装示例依赖:

Device
pip3 install requests tqdm qai-hub py3-wget Pillow torch torchvision opencv-python-headless

运行脚本

  • 进入上游示例目录

    Device
    cd qai-appbuilder/samples
  • 准备输入数据(示例自带输入文件时可直接运行;也可按脚本参数指定)

input image

修正输出顺序(QCS6490 / SC8280XP / QCS9075 必做)

在 Dragon Q6A(--chipset 6490)与 AIRbox Q900(--chipset 9075)上实测:AI Hub 下发的包常为下列布局:

输出下标形状含义
0[1, 8400]scores
1[1, 8400]class_idx
2[1, 8400, 4]boxes

而上游 yolov8_det.py 默认按 [boxes, scores, class_idx] 解析,会导致 NMS 阶段:

IndexError: index ... is out of bounds for dimension 0 with size ...

在运行前,对 ComputerVision/Object_Detection/yolov8_det/yolov8_det.pyInference() 内解析输出的代码做如下替换(建议先备份):

将:

    # Run the inference.
model_output = yolov8.Inference(image)

pred_boxes = torch.tensor(model_output[0].reshape(1, -1, 4))
pred_scores = torch.tensor(model_output[1].reshape(1, -1))
pred_class_idx = torch.tensor(model_output[2].reshape(1, -1))

替换为:

    # Run the inference.
model_output = yolov8.Inference(image)

# Output layout differs by model package:
# - some packages: [boxes, scores, class_idx]
# - QCS6490 / QCS9075 hub packages often: [scores, class_idx, boxes]
import numpy as _np
a0, a1, a2 = _np.array(model_output[0]), _np.array(model_output[1]), _np.array(model_output[2])
if a2.ndim == 3 and a2.shape[-1] == 4:
pred_scores = torch.tensor(a0.reshape(1, -1))
pred_class_idx = torch.tensor(a1.reshape(1, -1))
pred_boxes = torch.tensor(a2.reshape(1, -1, 4))
else:
pred_boxes = torch.tensor(a0.reshape(1, -1, 4))
pred_scores = torch.tensor(a1.reshape(1, -1))
pred_class_idx = torch.tensor(a2.reshape(1, -1))

该写法会按最后一个输出是否为 [..., 4] 自动选择布局,兼容 6490 / 9075 与其它输出顺序。

执行推理

提示

SC8280XP 与 QCS6490 同为 Hexagon V68,下载模型时使用 --chipset 6490,并同样建议应用上方输出顺序修正。

Device
python3 ComputerVision/Object_Detection/yolov8_det/yolov8_det.py --chipset 6490

预期结果

完成输出顺序修正后,在 QCS6490 / QCS9075 上推理成功均会生成:

ComputerVision/Object_Detection/yolov8_det/output.png

无图形界面时可能打印 Error: no DISPLAY environment variable specified;只要 output.png 已生成且退出码为 0,可忽略。

  • 运行结果示意(示意图片,实际结果取决于输入与模型版本)

output image

提示

也可使用启动器(仍需先完成脚本中的输出顺序修正):

python3 run_inference.py --model yolov8_det --args "--chipset 6490"
# 或 QCS9075:
# python3 run_inference.py --model yolov8_det --args "--chipset 9075"

    您需要登录 GitHub 才能发表评论。如果您已登录,请忽略此消息。

    Radxa-docs © 2026 by Radxa Computer (Shenzhen) Co.,Ltd. is licensed under CC BY 4.0