使用Raspberry Pi 5和Hailo-8L AI进行物体识别和距离测量
想象一下,一辆车辆以每小时 54 公里的速度巡航,大约相当于一个物体以每秒 30 帧的速度每帧移动 0.5 米的速度(0.5×30×3.6=54 公里/小时)。安装在车顶上的是一个紧凑的高性能视觉系统,围绕 Raspberry Pi 5 板和 Hailo-8L AI 加速器构建。这种实时设置可以检测前方物体并估计它们与车辆的距离。当物体进入预定义的安全区域时,系统可以立即发出警告或启动紧急制动,从而增强态势感知和反应时间。
该系统使用 Raspberry Pi 5 上的 AI 加速器 HAT 构建,作为生产级 AI 平台运行,能够以每秒至少 30 帧的速度运行。专为车载安装而设计,可连续扫描道路,实时识别物体,并计算其距离。这些实时读数显示在终端上。如果任何物体超过预定义的接近阈值,系统可能会通过 GPIO 引脚触发警报。尽管警报机制易于实现,但在当前版本中仍未构建。组装系统所需的组件列在物料清单表格中。图1显示了作者的工作原型。
图1:作者的物体识别和距离测量系统原型
连接和安装
AI加速器可以安装在树莓派的顶部,如图2所示。请注意,由于 AI HAT 完全覆盖主处理器,因此 Raspberry Pi 5 往往会显着发热。为防止过热,强烈建议使用额外的冷却方法。在该系统中,安装 AI HAT 后,只有特定的固定式冷却器才能安装在可用的狭窄空间内。完整的设置及其各个组件如图 2 所示。树莓派 5 还必须由高质量的 5V、4A 电源适配器供电,以保持稳定的性能。
图2:安装在树莓派上的AI加速器
通过主动冷却,Raspberry Pi 5 可以安全地超频以获得额外的性能,但代价是功耗和发热略有增加。冷却器的风扇连接器应插入 Pi 5 板上的指定风扇接头。当与 AI HAT 搭配使用时,基于 YOLO 的 AI 处理的繁重工作由加速器处理,使 Pi 5 能够专注于计算和控制逻辑。这种分工确保了平稳高效的运行,即使在每秒 30 帧的情况下也是如此。
物料清单 | |
组件 | 数量 |
树莓派 5、8Gb 或 16Gb | 1 |
适用于 Pi 5 的 Hailo-8L AI 加速器,13 TOPS 至 26 TOPS | 1 |
Pi 5 相机 | 1 |
Pi 5 电源适配器 | 1 |
高速 SD 卡,32GB 或更多 | |
HDMI 适配器/显示器 | 1 |
编程和代码
首先,确保安装了 64 位 Raspberry Pi OS Bookworm。该系统在 32 位 Pi作系统上不起作用。建议使用高质量的相机模块 3 或更高,以获得最佳效果。
安装指南
https://www.raspberrypi.com/documentation/computers/ai.html#getting-started
更新 Systembash
$ sudo apt-get update $ sudo apt-get upgrade
访问 Raspberry Pi
作 Raspberry Pi 最方便的方法是通过 SSH 从台式机或笔记本电脑访问它:
$ ssh bera@192.168.x.x
出现提示时,输入密码。身份验证后,将授予对 Raspberry Pi 5 终端的访问权限。
注意:
SSH 访问是可选的;还支持使用显示器、键盘和鼠标进行直接连接。
启用 PCIe Gen 3.0 速度
默认情况下,Raspberry Pi 5 以第 2.0 代 PCIe 速度运行。要启用第 3.0 代:
$ sudo raspi-config
导航到高级选项→PCIE 速度
选择“是”以启用第 3 代模式
选择“完成”,并在出现提示时重新启动系统。
安装 Hailo 软件堆栈
重新启动后,安装 Hailo 驱动程序和工具:
$ sudo apt install hailo-all
此命令安装 Hailo 内核设备驱动程序、固件、HailoRT、Hailo 应用程序、库和“rpicam-apps”。然后重新启动系统:
$ sudo reboot
重新启动以应用所有更改。验证 Hailo 安装。重新启动后,运行:
$ hailortcli fw-control identify
这可确保所有更改生效。
Executing on device: 0000:01:00.0 Identifying board Control Protocol Version: 2 Firmware Version: 4.17.0 (release,app,extended context switch buffer) Logger Version: 0 Board Name: Hailo-8 Device Architecture: HAILO8L Serial Number: HLDDLBB234500054 Part Number: HM21LB1C2LAE Product Name: HAILO-8L AI ACC M.2 B+M KEY MODULE EXT TMP
最后五行确保 Hailo-8L 板已成功安装。在某些情况下,可能不会显示序列号或部件号,但电路板将继续正常运行。测试 rpicam-hello:
$> rpicam-hello -t 10s # This will run rpicam for 10 seconds and then stop $> rpicam-hello --help # This displays the help file
安装完所有组件后,安装“rpicam-apps”包以启用 Hailo AI 加速器功能:
$> sudo apt update && sudo apt install rpicam-apps
现在可以执行高速物体检测示例:
$> rpicam-hello -t 0 --post-process-file / usr/share/rpi-camera-assets/hailo_yolov6_ inference.json $> rpicam-hello -t 0 --post-process-file / usr/share/rpi-camera-assets/hailo_yolov8_ inference.json $> rpicam-hello -t 0 --post-process-file / usr/share/rpi-camera-assets/hailo_yolov5_ personface.json # This command detects faces – useful for face counting $> rpicam-hello -t 0 --post-process-file / usr/share/rpi-camera-assets/hailo_yolov8_ pose.json # This command detects human poses – useful for fall detection
这些命令演示了如何将 “rpicam-hello ”与不同的 YOLO AI 模型一起使用。
安装说明
Hailo RPi5 示例 – 安装指南:
步骤 1:克隆存储库
$> git clone https://github.com/hailo-ai/ hailo-rpi5-examples.git
第 2 步:导航到目录
$> cd hailo-rpi5-examples
该目录包含两个关键文件:“setup_env.sh”和“requirements.txt”。
由于 Hailo-8L 需要特定的 Python 包版本,因此建议使用虚拟环境以避免冲突。这允许在本地安装必要的包版本,而不会干扰系统范围的 Python 环境。下一步是按照 Hailo-8L 套件的推荐激活特殊环境。
第 3 步:激活虚拟环境
$> source setup_env.sh
激活后,终端提示符将更改为指示虚拟环境中的条目:(venv_hailo_rpi5_examples) bera@raspberrypi:~/hailo-rpi5-examples $
第 4 步:安装所需的 Python 包
(venv_hailo_rpi5_examples) bera@raspberrypi:~/hailo-rpi5-examples $ pip install -r requirements.txt
requirements.txt文件包含 Hailo 示例所需的 Python 包列表。要查看文件内容:
$> cat requirements.txt
预期内容:
numpy<2.0.0 setproctitle opencv-python
要单独安装它们:
$> pip install numpy<2.0.0 $> pip install setproctitle $> pip install opencv-python
第 5 步:下载必要的 Hailo 模型
$> download_resources.sh
若要安装其他 Python 资源,请访问:https://github.com/hailo-ai/hailo-apps-infra
该存储库提供适用于 Raspberry Pi 5 的 Hailo 应用程序基础设施。其中某些部分对于当前代码是可选的。
$> git clone https://github.com/hailo-ai/ hailo-apps-infra.git $> pip install --force-reinstall -v -e . # (Optional)
'git clone' 命令下载了 Hailo 的其他 Python 实用程序。最后一个 pip 命令完全是可选的;它可以运行或跳过。在此阶段,系统所需的所有软件组件都应就位。请注意,所有这些工具都属于开源软件类别。
使用“basic_pipelines”目录中的 Python 脚本开始试验 Hailo-8L 加速器:
现在,该过程可以继续使用 Hailo-8L 加速器,尝试一些示例 Python 脚本,并最终构建单独的measure_distance3.py。basic_pipelines子目录中已经提供了两个示例 Python 脚本:
detection_simple.py
pose_estimation.py
这些可以接受来自预定义源的输入,例如 MP4 文件、Raspberry Pi 相机或 USB 相机。用法示例:
$> python basic_pipelines/detection_ simple.py --input rpicam # From Pi Camera $> python basic_pipelines/pose_estimation. py --input test.mp4 # From video file $> python basic_pipelines/detection_ simple.py --input /dev/video0 # From USB camera $> python basic_pipelines/detection.py --help # Help for detection.py
要使用自定义模型:
$> python basic_pipelines/detection.py
–标签-json 资源/barcode-labels.json
–hef-path 资源/yolov8s-hailo8l-barcode.hef
–输入资源/barcode.mp4
测距理论
通过将物体的已知宽度与捕获图像中的感知宽度进行比较来估计距离。
根据针孔相机模型,距离相机较远的物体会显得更小。如果相机的焦距、物体的真实宽度和观察到的图像宽度已知,则可以使用类似的三角形计算距离。
标准宽度和默认宽度在代码开头定义。
分割模型“yolov5n_seg_h8l_mz.hef”有助于识别完整的物体,即使部分可见也是如此。分割后的图像用于估计物体的宽度,然后将其与已知尺寸进行比较以确定距离。
# Object width dictionary for distance estimation (in metres) OBJECT_WIDTHS = { “person”: 0.4, “bicycle”: 0.5, “car”: 1.8, “motorcycle”: 0.8, “bus”: 2.5, “truck”: 2.5, “airplane”: 36.0, “train”: 3.2, “boat”: 5.0, “traffic light”: 0.6, “fire hydrant”: 0.3, “stop sign”: 0.75, “cat”: 0.3, “dog”: 0.6, “horse”: 1.2, “cow”: 1.5, “elephant”: 3.2, “bear”: 1.7, “zebra”: 1.2, “giraffe”: 2.0, “bench”: 1.2, “chair”: 0.6, “couch”: 2.0, “dining table”: 1.8, “laptop”: 0.4, “tv”: 1.2 } DEFAULT_OBJECT_WIDTH = 0.5 # Default width (in meters) for unknown objects FOCAL_LENGTH = 0.5 # Focal length in meters (Raspberry Pi Camera Module 3 Wide Spec) To run the measure_distance3.py script and capture data from different camera sources: $> python measure_distance3.py --input rpicam # Capture data from Pi camera $> python measure_distance3.py --input / dev/video0 # Capture data from USB camera
模型 yolov5n_seg_h8l_mz.hef 支持大约 80 个对象类,但在此实现中,重点仅放在上一个字典中列出的 26 个特定对象上。这些对象提供了标准物理宽度,可以估计它们与摄像机的距离。
测试
图 3 说明了距离测量技术,而图 4 和图 5 显示了引脚细节和安装。
图3:距离测量技术
为系统供电并运行脚本。物体及其距离将实时显示。
图 4:Raspberry Pi 的引脚细节
Raspberry Pi 5 与 Hailo-8L AI HAT 配对,由 5V、4A 电源供电,非常适合需要实时物体检测和距离估计的嵌入式或固定应用。
图 5:相机和 Raspberry Pi 的安装
这个项目可以在哪里使用?
该系统可用于多种目的,例如:
汽车仪表盘监控
该系统安装在挡风玻璃上,可以检测前方车辆和行人,估计距离,并在发生潜在碰撞或不安全的跟车距离时向驾驶员发出警报。它还可以集成语音合成器,例如 espeak-ng,通过扬声器发出语音建议。
带咨询的倒档监控
它安装在汽车后部,可以在停车过程中检测附近的物体或人,并提供视觉/音频警报,甚至触发自动制动机制。
智能门禁监控
该系统位于入口处,可以检测接近的个人,对他们进行分类(例如送货员、已知访客或陌生人),并估计他们的距离以实现自动作,包括门铃激活、照明或门解锁。
建筑物中的占用率和人群分析
它可用于监控大厅、走廊或等候区的人员密度和间距。当人们彼此距离太近或该区域变得过度拥挤时,该系统可以触发通风系统或人群控制警报。
仓库安全系统
它可以检测移动的叉车或人员,并估计它们与限制区域的接近程度。这可以帮助在附近接近时触发警报或减慢自动化机械的速度,从而提高工作场所的安全性。
用于室内导航的机器人视觉
它用于 AGV(自动导引车)或室内机器人,以识别障碍物并测量距离,从而在室内环境中实现更安全、更高效的导航。
学区或大门监控
该系统监控学校大门附近儿童或监护人的存在和移动,并根据检测到的行为和距离生成警报或自动执行大门作。
收费站或桥梁的交通监控
该系统识别车辆类型并测量距离,以实现自动收费、检测超载或分析交通密度。
校车闸机监控
它可以帮助观察进来的交通和儿童在校车门周围的移动,确保更安全的进出条件。

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码