跳到主要内容

GStreamer 推理

本教程介绍如何在视频流上运行实时推理。假设您已经熟悉 Astra 开发板的设置。如果不熟悉,请参考设置教程

信息

本教程支持具有 NPU 优化的 Synaptics Astra™ Machina™ SL1680SL1640 开发板。

SL1620 没有预安装的 YOLOv8s-640x384 模型。您可以使用相同的步骤在 GPU 上创建和运行您的模型。

在本指南中,您将使用输入分辨率为 640x384 的 YOLOv8 目标检测模型。这是一个预安装的 SyNAP .synap 模型,位于 /usr/share/synap/models/object_detection/coco/model/yolov8s-640x384/model.synap,因此无需转换您自己的模型。

先决条件

  • 固件版本 v1.x.x 或更高的 Astra Machina SL1680 / SL1640。
  • 视频源(视频文件、摄像头或 RTSP 流)。本教程使用摄像头,但对于视频文件和 RTSP 流,步骤是相同的。

克隆示例仓库

视频推理示例可在 Astra GitHub Examples 仓库中找到:

将仓库克隆到您的开发板并导航到 gstreamer/gst-pipeline 文件夹。

运行示例

示例代码位于 /gstreamer/gst-pipeline/examples 文件夹中。每种输入类型都有特定的示例,还有一个更通用的示例(infer.py)支持所有输入类型。在本教程中,您将使用 infer_camera.py 来演示摄像头输入流的实时视频推理。

在运行示例之前,请确保导出以下环境变量:

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

设置环境后,在开发板上运行以下命令启动示例:

python3 -m examples.infer_camera

您将看到类似以下输出:

image

脚本将自动检测连接的摄像头并使用预加载的模型运行推理。在终端中按 Ctrl+C 停止脚本。

就是这样!您现在已经成功地在视频流上运行了实时推理。

要获取可能的参数完整列表,请运行 python3 -m examples.infer_camera --help

或者,您可以直接在示例脚本中修改输入源和模型等参数的默认值,以实现更持久的更改。

注意

在 Wayland 终端中避免使用 --fullscreen,因为它可能会遮挡终端,使停止示例变得困难(特别是对于摄像头/RTSP 流或长视频输入)。

探索 infer.py 基础脚本的更多可能性,它支持所有输入类型并提供更大的自定义空间。

附加资源

下一步:Python 快速指南

所有接下来的快速指南都是基于 Python 的,因此在继续之前,您需要设置必要的库和包。确保您已遵循所有先决条件步骤,并在 Machina 开发板上安装了 OOBE SDK 镜像,该镜像预装了 pip 和 python3。