当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]保持零售货架充足的商品看似简单,但当商品被移动、顾客遮挡摄像头,或多个外观相似的包裹出现在同一画面时,问题便会出现。本项目将一台Raspberry Pi 5和一个Hailo-8加速器转化为边缘AI货架监控系统,可检测商品、按货架区域维护库存、报告取货及缺货事件,并通过浏览器仪表盘展示结果。

保持零售货架充足的商品看似简单,但当商品被移动、顾客遮挡摄像头,或多个外观相似的包裹出现在同一画面时,问题便会出现。本项目将一台Raspberry Pi 5和一个Hailo-8加速器转化为边缘AI货架监控系统,可检测商品、按货架区域维护库存、报告取货及缺货事件,并通过浏览器仪表盘展示结果。

所有推理均在本地完成。参考应用程序使用两个Hailo-8 HEF模型:一个用于检测货架上的商品,另一个用于检测被手持的商品。区域映射和时间过滤技术将原始检测结果转换为稳定的库存状态。FastAPI应用程序在本地网络上发布带标注的MJPEG视频流和JSON状态API。

系统功能:

•在单个物理Hailo-8加速器上运行两个自定义HEF模型。

•将检测结果分配到可配置的货架区域。

•根据货架位置,将通用检测结果映射为对应的产品名称。

•稳定计数,以减少单帧闪烁。

•显示库存总量、区域状态、推断帧率和视频时长。

•在处理后的视频上标记拣货和缺货事件。

•将仪表板流式传输至同一网络中的任意浏览器。

•支持预构建的Docker镜像以及裸机Python环境。

系统架构

视频处理流程如下:

两个模型共享一个Hailo虚拟设备,并采用轮询调度方式。这一点非常重要:为每个模型单独开启独立设备可能导致第二个模型失败,因为加速器已被占用。

货架模型用于检测通用产品类别。产品身份通过可配置的货架区域进行推断,该方法适用于基于陈列图的零售展示场景。如果摄像头位置或货架布局发生变化,请更新 `configs/` 目录下的区域与产品映射JSON文件。

硬件准备

1. 将 Hailo-8 M.2 模块安装到 M.2 HAT+ 或其他 Raspberry Pi 5 上。

PCIe 转接器。

2. 将适配器连接到 Raspberry Pi 5 的 PCIe FFC 接口。

3. 保持积极的冷却状态,并使用稳定的电源。

4. 启动 64 位的 Raspberry Pi OS 或兼容的 Debian 安装。

5. 确认加速器已暴露为 `/dev/hailo0`。

提供的 HEF 文件针对 **Hailo-8**,而非 Hailo-8L。主机驱动、固件、共享库和 Python 包必须使用兼容的 HailoRT 版本。参考容器在 `linux/arm64` 上使用 HailoRT 4.23.x 和 Python 3.11。

使用 Docker 快速入门

拉取预构建镜像:

运行内置演示,并将仪表板暴露在端口 8000 上:

查找 Raspberry Pi 的 IP 地址:

在同一网络中的电脑或手机上打开:

浏览器将显示每个已配置区域的最新标注帧、推理 FPS、总库存以及库存状态。预览功能保留源视频的宽高比,包括带有旋转元数据的视频。

直接在 Raspberry Pi OS 上运行

克隆源代码:

安装板载依赖并创建 Python 环境:

如果安装程序提示,请重启系统。然后验证 Hailo 设备、HailoRT 绑定、配置和模型文件:

启动 Web 应用程序:

若要不通过浏览器界面生成标注 MP4,运行:

结果将保存为 `outputs/restock_demo_hailo8.mp4`。

Web 接口

JSON 端点可轻松将检测器连接到其他仪表板、商店管理服务或告警工作流。

使用其他视频或摄像头

若需使用另一段录制的视频,请将文件挂载到容器中,并将 `--video_path` 指向挂载路径。当路径或模型设置发生变化时,请更新 `configs/runtime.json`。

对于不同的摄像头位置或货架布局,需重新校准 `configs/shelf_regions_freshco.json` 中的归一化区域坐标,并更新类型映射文件。当前的区域到产品映射假设产品的身份可由其分配的货架位置推导得出。

该仓库还包含 `configs/scripted_demo_events.json`。这些条目是打包演示中的确定性展示事件,明确不为模型预测。在评估实时行为时,请禁用或替换这些条目。

故障排除

缺少 `/dev/hailo0`

请检查 PCIe 驱动是否正确连接,并确保已安装匹配的 Hailo 驱动和固件。在启动容器前,请运行 `lspci`、`hailortcli scan` 和 `./scripts/probe.sh`。

HailoRT 版本错误

主机驱动、固件、共享库和容器运行时必须兼容。示例中挂载了 `libhailort.so.4.23.0`;如果主机使用了其他兼容的安装方式,请调整两个音量路径。

仪表板无法访问

请确认应用程序日志中显示的是 `0.0.0.0:8000`,在另一台计算机上使用树莓派的局域网地址而非 `localhost`,并允许任何主机防火墙通过 TCP 端口 8000。

计数与新货架不匹配

区域边界和类型映射是针对特定摄像头视图和陈列图的。当分辨率、摄像头角度、货架几何结构或产品摆放位置发生变化时,请重新校准 JSON 配置。

从源码构建容器

从仓库根目录开始:

GitHub Actions 工作流将构建 `linux/arm64` 镜像,并发布到 GHCR,同时保持源码、Dockerfile 和可部署的 artifact 一起保存。

结论

该项目展示了一个完整的边缘AI工作流,而不仅仅是绘制目标检测框:两个由Hailo加速的模型为可配置的货架逻辑、稳定的库存状态、事件叠加图以及浏览器可访问的API提供支持。包含的视频和容器提供了可重复的起点,而区域文件和网络端点则使系统能够适应其他货架或更大的零售应用。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭