目标检测
目标检测是一种帮助计算机在图像中定位并标注多个对象的技术,例如检测照片中的人、汽车或动物。 与图像分类为整张图像关联单一标签不同,目标检测会在图像中各个独立对象周围绘制边界框,从而实现对场景中对象位置和行为的追踪。
YOLO(You Only Look Once)模型
YOLO 模型,全称"You Only Look Once",是一种用于实时目标检测的计算机视觉模型。它通过单次处理图像来识别并定位其中的对象,即只需"看"一次图像便能完成检测,因此与需要多次处理的方法相比,速度极快。
YOLO 最初由 Joseph Redmon 于 2016 年创建,后来演变为社区模型,Ultralytics 为其做出了重要贡献,其最新版本为 YOLO11。
来源: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]

对摄像头或视频输入运行推理
连接一个 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的教程。