如何用Python和HailoRT在Raspberry Pi上实现实时目标检测?

摘要:目录Python 环境配置实现 USB 摄像头的目标检测参考 在上一篇博客中,探讨了使用 rpicam-apps 通过 JSON 文件配置并运行目标检测示例程序。虽然这种方法可以实现有效的检测,但它限制了开发者直接在代码中利用检测结果的能力
目录Python 环境配置实现 USB 摄像头的目标检测参考 在上一篇博客中,探讨了使用 rpicam-apps 通过 JSON 文件配置并运行目标检测示例程序。虽然这种方法可以实现有效的检测,但它限制了开发者直接在代码中利用检测结果的能力。因此,在本篇博客中,将深入探讨如何借助 HailoRT Python API 调用神经处理单元(NPU),以实现在 Python 程序中的目标检测功能。 Python 环境配置 在上一篇博客中已经安装了 hailo-all,这其中包含了 Hailo NPU 的所有必要组件。然而,根据硬件和操作系统需求,可能需要单独安装或更新驱动程序。对于非 Raspberry Pi 设备或当遇到驱动版本不兼容的问题时,此时可以登录 Hailo 的网站 https://hailo.ai/developer-zone/software-downloads,并选择适合系统的驱动程序进行下载与安装。 例如,如果正在使用基于 arm64 架构的 Ubuntu 操作系统,并且需要 4.19.0 版本的驱动,那么可以下载相应的 PCIe 驱动包和 HailoRT 包,并执行以下命令完成安装: sudo apt purge -y hailo-all # 卸载现有的整合包 sudo dpkg -i hailort-pcie-driver_4.19.0_all.deb # 安装新的驱动 sudo dpkg -i hailort_4.19.0_arm64.deb # 安装 HailoRT 为了能够在 Python 中调用 NPU,还需要安装 Python 相关库。同样地,在 Hailo 的官方网站中找到对应 Python 版本的 .whl 文件,并按照下面的步骤创建虚拟环境并安装必要的软件包: conda create -n hailort python=3.10 # 创建虚拟环境 conda activate hailort # 激活虚拟环境 pip install hailort-4.19.0-cp310-cp310-linux_aarch64.whl # 安装 HailoRT Python 包 还需要安装 OpenCV 对图像进行处理。由于 OpenCV 无法读取 Raspberry Pi 的 CSI 摄像头,如果需要使用请额外安装 picamera2 和 rpi-libcamera。 pip install opencv-python pip install picamera2 rpi-libcamera 实现 USB 摄像头的目标检测 为了让目标检测更加实用,需要将摄像头获取的实时视频流作为输入,并在每帧图像上应用深度学习模型来识别对象。无论是否使用 Hailo-8 进行目标检测,都需要遵循以下步骤来编写代码。 打开摄像头; 加载目标检测模型; 处理视频流,显示结果。 这里提供一个基本的代码框架,下面将逐步完成这个代码。 import cv2 # TODO: 加载模型 # 打开默认摄像头 cap = cv2.VideoCapture(0) while True: # 读取帧 ret, frame = cap.read() if not ret: break # TODO: 进行推理 # 显示帧 cv2.imshow('Detections', frame) # 按下 'q' 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放摄像头并关闭窗口 cap.release() cv2.destroyAllWindows() 首先来完成第一个 TODO 的内容 加载模型 。在代码的顶部引入 HailoRT 中必要的类。 import numpy as np from hailo_platform import HEF, Device, VDevice, InputVStreamParams, OutputVStreamParams, FormatType, HailoStreamInterface, InferVStreams, ConfigureParams 在 Hailo NPU 上运行的是 .hef 的模型文件,Hailo 的 GitHub 仓库 https://github.com/hailo-ai/hailo_model_zoo 提供了大部分主流的预编译模型,可以直接下载使用。这里使用 YOLOv8s 作为测试。
阅读全文