跳到主要内容

目标检测

目标检测是一种帮助计算机在图像中定位并标注多个对象的技术,例如检测照片中的人、汽车或动物。 与图像分类为整张图像关联单一标签不同,目标检测会在图像中各个独立对象周围绘制边界框,从而实现对场景中对象位置和行为的追踪。

YOLO(You Only Look Once)模型​

YOLO 模型,全称"You Only Look Once",是一种用于实时目标检测的计算机视觉模型。它通过单次处理图像来识别并定位其中的对象,即只需"看"一次图像便能完成检测,因此与需要多次处理的方法相比,速度极快。

YOLO 最初由 Joseph Redmon 于 2016 年创建,后来演变为社区模型,Ultralytics 为其做出了重要贡献,其最新版本为 YOLO11。

yolo 来源:Ultralytics

在 Astra 上运行目标检测​

备注

本示例假设您已熟悉 Astra 开发板的配置流程。如果尚未完成,请参考配置教程。

信息

本快速指南兼容所有预装 OOBE 镜像且已安装 pip 和 python 的 Machina SL2600 系列开发套件,并针对以下配置进行了优化:

NPU(适用于 SL2610 系列)

要在 Astra 上运行示例,首先需要完成前提条件中的步骤,将 GitHub 示例仓库克隆到您的开发板上。

配置您的环境​

如果尚未完成配置,请先设置您的环境。

克隆我们的 Examples GitHub 仓库并进入仓库目录:

git clone https://github.com/synaptics-astra-demos/sl2610-examples
cd sl2610-examples

配置 Python 虚拟环境,确保所有必要依赖已安装在虚拟环境中:

python3 -m venv .venv --system-site-packages
source .venv/bin/activate
pip install -r requirements.txt

配置显示环境(视觉输出所必需)。

export XDG_RUNTIME_DIR=/var/run/user/0
export WAYLAND_DISPLAY=wayland-1

在边缘侧运行目标检测​

对单张图片运行推理​

cd object_detection/

python3 object_detection.py \
--model yolov8_od.vmfb \
--image dog_bike_car.jpg \
--labels labels.json \
--device torq

您应该会看到如下格式的结果:

Detections:
dog Conf: 0.9186 Box: [133 219 177 315]
car Conf: 0.5663 Box: [468 79 254 86]
bicycle Conf: 0.5663 Box: [151 137 412 280]
Use Case Image

对摄像头或视频输入运行推理​

连接一个 USB 摄像头。使用以下命令对摄像头输入运行推理。

python3 object_detection_video.py \
--model yolov8n_od.vmfb \
--camera-device auto \
--labels labels.json \
--device torq

或使用以下命令对视频文件运行推理。

python3 object_detection_video.py \
--model yolov8n_od.vmfb \
--video <your_video>.mp4 \
--labels labels.json \
--device torq

可以尝试的其他选项​

  • --output,输出视频文件
  • --json-results,输出检测结果的 JSON 文件
  • --camera-width,USB 摄像头宽度
  • --camera-height,USB 摄像头高度
  • --camera-fps,USB 摄像头帧率
  • --display,实时显示带标注的画面
  • --display-sink,用于实时显示的 GStreamer 视频输出

没有网络连接? - 尝试离线安装依赖​

通常通过 pip 下载并安装的 Python 依赖已随附提供,可用于离线安装。使用以下命令进行安装。

pip install --no-index --find-links=./wheelhouse -r requirements.txt

Python 代码解析​

上面的 Python 示例使用 Torq 运行时的 Python 模块,该模块定义了一个名为 VMFBInferenceRunner 的类,用于加载模型并运行推理。

运行器对象的创建方式如下:

    runner = torq_rt.VMFBInferenceRunner(
args.model,
device_uri=args.device,
function="main",
load_model_to_mem=True
)

推理的启动方式如下:

outputs = runner.infer([input_data])

查看代码 ./object_detection/object_detection.py 了解更多信息。

基于 Python 的 Torq 运行时通过 Python 绑定调用 C++ 的 Torq / IREE 运行时。

下一步:了解如何使用 Torq 编译模型​

请查阅自带模型指南。

延伸阅读

您可以查阅为 Synaptics Astra NPU 编译 YOLO的教程。