AI 视觉人存在感知开关
概览
本项目基于 Seeed Studio reComputer R2000 和 Hailo-8 AI 算力加速模块,实现了基于人脸特征的人脸识别功能,并搭建了一个视觉感知系统,将其作为人体存在的感知检测器。通过摄像头对一个区域的检测,可实现对人的存在感知。这里会将其与权限管理场景结合应用。具体表现为,当有权限的人被摄像头识别到后,设备才允许被使用;否则设备将无法被使用。同时,本方案会将监测结果接入 Home Assistant 进行展示。
1. 设备与软件清单
核心组件 | 详细清单 | 备注 |
---|---|---|
智能边缘计算平台 | Seeed Studio reComputer R2000 (内置 Raspberry Pi 5 和 Hailo-8 AI 加速模块) | 这是整个项目的核心硬件,负责AI推理和系统运行。 |
图像数据来源 | Grove Vision AI v2 | 一款集成AI视觉功能的摄像头模块,可作为图像输入来源。 |
XIAO ESP32S3 Sense | 用于 Wi-Fi 透传数据,通常和 Grove Vision V2 搭配一起用 | |
智能家居中枢 | Home Assistant | 用于集中管理智能设备和自动化 |
硬件配置 | 电源 | 适用于 R2000 的 USB-C PD 电源,至少 27W。 |
网络 | 可选择网线连接或已配置好的 WiFi。 | |
软件环境 | 主机操作系统 | R2000 预装的 Raspberry Pi OS。 |
通信协议 | MQTT Broker (通常作为 Home Assistant 的 Add-on 安装)。 | |
代码编辑工具 | VS Code with Remote-SSH Extension (强烈推荐,方便远程编辑代码)。 |
2. 连接与基础环境检查
在进行软件安装前,请确保你的硬件已正确启动,并完成基础环境配置。
- 如果你的 R2000 还没有配置 Hailo 模块,此时请拔掉电源,然后安装 Hailo-8 模组。
- 插上网线(如果你配置了 Wi-Fi 连接,可以省略此步)。
- 接入电源,启动设备。
如果你没有安装树莓派系统,可以根据 Wiki 文档来进行,Flash OS - Wiki。
这里将采用 SSH 方式远程连接 reComputer R2000 进行软件安装,其他方式不再赘述。
目前测试的 R2000 设备上安装的树莓派发行版本是 Debian GNU/Linux 12 (bookworm)
,即 Raspberry Pi OS (64-bit)
。
ssh 连接指令:
ssh <USER_NAME>@<IP_ADDRESS>
例如我的要连接的设备的用户名为 recomputer
,IP 地址为 192.168.10.179
:
(base) ➜ ~ ssh [email protected]
[email protected]'s password:
Linux rpi 6.12.25+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.25-1+rpt1 (2025-04-30) aarch64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue May 13 08:17:57 2025
recomputer@rpi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
出现类似上述的信息说明通过 SSH 的方式连接到了远程 R2000 设备中。
2.1 环境准备
对于中国大陆用户,你可以先用此脚本来配置你的镜像源,以提升你的下载速度。
# 因为需要更高的权限,所以拆分运行
curl -sSL https://linuxmirrors.cn/main.sh -o gnu_linux_mirror.sh
sudo bash gnu_linux_mirror.sh
# 安装 docker,因为我们会需要用到 Docker
curl -sSL https://linuxmirrors.cn/docker.sh -o install_docker.sh
sudo bash install_docker.sh
# 设置 Docker 用户
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
sudo groupadd docker
sudo usermod -aG docker $USER
详情请访问脚本提供官方:linuxmirrors
更新系统软件
为了确保你的 Raspberry Pi 系统运行最新的软件,请执行如下命令进行更新:
# ensure that your Raspberry Pi runs the latest software. Run the following command to update:
sudo apt update && sudo apt full-upgrade
确保你的 Raspberry Pi 的固件是最新的。运行以下命令来查看你正在使用的固件:
sudo rpi-eeprom-update
比如如下就是一个最新固件的标志信息:
recomputer@rpi:~ $ sudo rpi-eeprom-update
BOOTLOADER: up to date
CURRENT: Thu 8 May 14:13:17 UTC 2025 (1746713597)
LATEST: Thu 8 May 14:13:17 UTC 2025 (1746713597)
RELEASE: default (/usr/lib/firmware/raspberrypi/bootloader-2712/default)
Use raspi-config to change the release.
对比参数后,可以发现是最新的固件。
2.2 项目拉取
下载 GitHub 项目 Face recognition api.
本项目采用 uv
进行 Python 项目的管理, 可以通过如下指令进行安装 uv:
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
git clone https://github.com/Seeed-Solution/face-recognition-api
cd face-recognition-api
uv sync
通过
uv sync
来同步下载 Python 项目所需的库依赖。
2.3 安装 HailoRT
HailoRT 是 Hailo 设备(如 Hailo-8 加速棒)的“操作系统”,负责和硬件通信、加载模型、执行推理等。
没有 HailoRT,其他软件(无论是 Python、C++ 还是 Docker 容器)都无法直接调用 Hailo 加速棒进行 AI 推理。
在本项目中,HailoRT 的安装会用到三个文件来进行安装:
hailort_<version>_<arch>.deb
- HailoRT 安装包hailort-pcie-driver_<version>_all.deb
- HailoRT PCle 驱动,通过 PCle 连接的 Hailo 设备需要此驱动hailort-<version>-<python-tag>-<abi-tag>-<platform-tag>.whl
- PyHailoRT,通过 Python API 来访问 Hailo 功能
hailo 版本说明
如上三个文件,本仓库已经提供了 4.21.0
的版本文件,如果需要下载特定的其他版本,请访问 Software Downloads - Developer Zone。请注意,下载这些文件需要注册账号并登录。

安装 DKMS
因为 HailoRT 依赖的 PCIe 驱动需要针对当前运行内核的版本动态编译和加载,所以需要安装 DKMS。
sudo apt-get install dkms
安装 HailoRT
安装 HailoRT, 以及需要通过 PCle 进行通信的驱动:
sudo dpkg --install hailort-4.21.0/hailort_4.21.0_arm64.deb hailort-4.21.0/hailort-pcie-driver_4.21.0_all.deb
其中 PyHailoRT 4.21.0
已经由 uv sync
在本项目中进行安装,无需另外操作;PyHailoRT 是与 Python 项目绑定的。
安装完后,你还需要在 /etc/modprobe.d/hailo_pci.conf
添加一行配置项。
echo "options hailo_pci force_desc_page_size=4096" | sudo tee /etc/modprobe.d/hailo_pci.conf
然后,重启设备
sudo reboot
检查安装是否成功
重启后,你可以用 hailortcli 检查设备是否被识别:
hailortcli scan
这个扫描命令应该能找到设备。
再运行下面的命令,从设备获取序列号:
hailortcli fw-control identify
出现如下类似的信息,说明你的驱动安装成功了:
hailortcli fw-control identify
Executing on device: 0001:01:00.0
Identifying board
Control Protocol Version: 2
Firmware Version: 4.21.0 (release,app,extended context switch buffer)
Logger Version: 0
Board Name: Hailo-8
Device Architecture: HAILO8
Serial Number: <N/A>
Part Number: <N/A>
Product Name: <N/A>
3. 运行项目
在本项目的根目录下直接运行 API 服务:
PYTHONPATH=src uv run uvicorn app:app --host 0.0.0.0 --port 8000
nohup - 后台运行
nohup
是一个常用的工具,可以让命令在后台运行,即使你关闭终端也不会终止进程。
PYTHONPATH=src nohup uv run uvicorn app:app --host 0.0.0.0 --port 8000 &
- nohup 会将命令的输出重定向到
nohup.out
文件中。 - & 符号让命令在后台运行。
- 你可以通过查看
nohup.out
文件来检查日志:cat nohup.out
。 - 要停止进程,可以使用
ps aux | grep uvicorn
找到进程 ID (PID),然后用kill <PID>
终止它。
通过如下指令,可以动态看服务器运行日志:
tail -f nohup.out
注意这无法让你重新后自动启动。
Grove Vision V2
前往 SenseCraft AI 网站,配置 Vision v2 的网路连接和 MQTT 配置信息。
- 访问 SenseCraft AI 平台:https://sensecraft.seeed.cc。登录后,点击“视觉工作空间”下的“Grove Vision AI V2”并选择连接。
- 在弹出的窗口中,选取你希望连接的 Grove Vision V2 设备。
烧录模型
选择人脸检测并确认部署。

双击模型,确认后,进行烧录部署。
配置网络信息
- 在主面板右侧点击网络配置。
- 输入你需要连接的 Wi-Fi 信息和 MQTT Broker 服务器地址。比如这里我们会直接连接到 Home Assistant 上的 MQTT Broker,地址为
192.168.10.70
- 点击保存。
务必记录这个客户端 ID(你也可以重新定义客户端 ID) 以便后续使用。

应用搭建
此时,你需要确保用到的接下来用到的 Grove Vision V2 连接到了你的 MQTT Broker 上。
在本项目中,我们会直接在 NodeRED 上搭建我们所需要的工作流。
拷贝本 NodeRED Flow 并导入到的 NodeRED 中。
Node: Global Config
在节点 Global Config
代码配置项中:
flow.set('hailo_host', '192.168.10.179');
flow.set('hailo_port', '8000');
请将 192.168.10.179
编辑为你的 Hailo 设备所在的 IP 地址。
绿色的 Grove Vision V2 的节点会单独对应一个设备,不能支持对多个 V2 设备的接入,但可以复制多个 Grove Vision AI v2 节点,并注意同时复制前后的处理节点。
修改如下的 Inject 节点中的 msg.topic
为前面要你记录的客户端 ID:
Start
Set Camera Resolution
修改 Start
的 inject 节点中的 msg.topic
为前面要你记录的客户端 ID。
然后点击 Deploy
(全部署模式)。

点击 Start
后,你就可以在右边侧边栏中的调试窗口中,看到是否有用户被检测到的消息。
录入人脸
但是,此时由于还没有录入人脸信息,所以你需要将摄像头 Vision v2, 对着需要被识别、认证的人的脸,进行录入步骤。
首先,编辑 Face Enroll
这个 inject 节点。
msg.payload
{"name":"Jane Smith","action":"start","collection":"office_entrance"}
这里有两个参数需要根据你的偏好来进行修改:
name
,录入人脸用户的名字collection
,在数据库中位于的集合位置

msg.topic
access/enroll/grove_vision_ai_v2_eb9e4d18
修改 grove_vision_ai_v2_eb9e4d18
为你实际 Vision v2 的设备客户端 ID
对着需要录入的人脸,然后点击 Face Enroll
,等待 10 秒钟后,你就会发现它是识别到你了。
如下是一个示例操作:
接入 Home Assistant
在此章节,会将外部的身份验证事件(如本仓库中的人脸识别)接入Home Assistant,实现一个"刷脸开机,倒计时关机"的自动化应用场景。
- 自动识别触发:当系统检测到授权用户时,自动开启设备,并重新计时。
- 定时管理:设备会在使用时间到期后自动关闭,确保安全和节能。
- 灵活计时:默认使用时长为15分钟,可根据需要自由调整。
- 实时状态显示:在控制面板上实时查看剩余使用时间。
- 管理员功能:管理员可通过专属控制按钮手动延长使用时间、暂停或终止设备运行。
你可以根据这个仓库下的内容进行开展: HA_CountDown_Control
复制蓝图文件
复制项目中的 blueprints/automation/countdown_control.yaml
内容。
如果没有 File editor,请前往 设置 -> 加载项 (
Settings - Addons
) 中的商店进行下载。
通过 File editor
导航到 /blueprints/automation/
路径下。
创建一个名为 countdown_control.yaml
的文件,并将拷贝的内容粘贴进去。
完成后,请重启 Home Assistant,或者在开发者工具中选择重载自动化,以便让 HA 识别新的蓝图。
创建 Timer 助手
这是倒计时的核心。
- 前往 设置 -> 设备与服务 -> 辅助元素(
Helper
) 或者访问http://homeassistant.local:8123/config/helpers
。 - 点击 创建辅助元素,然后选择 计时器 (Timer)。
- 命名:给它一个清晰的名字,例如
人脸识别授权计时器
。其实体ID将自动生成(例如timer.face_auth_timer
),请记下这个实体ID。 - 其他选项(图标、恢复)可留空,直接点击 创建。
基于蓝图创建自动化
- 前往 设置 -> 自动化与场景 -> 蓝图 或者访问
http://homeassistant.local:8123/config/blueprint/dashboard
。 - 找到名为
Robust Countdown Control (MQTT triggered)
的蓝图,点击 创建自动化。
3. 配置自动化:
- MQTT Topic:填写您的人脸识别系统发布成功消息的主题(默认为
access/verify
)。 - Target Device:点击
选择实体
,选择您想要控制的设备,例如一个switch.smart_plug
。 - Timer Helper:点击
选择实体
,选择您在第2步中创建的那个计时器助手。 - Duration (minutes):根据需要设置授权时长,默认为15分钟。
- 点击 保存(可以采用默认的名称进行脚本保存)。
添加脚本配置
为了便于系统识别到认证的人之后,可以直接延时授权时间,此项目包含一个用于"+"5分钟"功能的脚本。请将 scripts/timer_controls.yaml 文件中的内容添加到您 Home Assistant 的脚本配置中。这通常意味着将其内容复制粘贴到您的 scripts.yaml
文件里。
重要:添加后,请务必将脚本中所有的 timer.your_timer_entity_id
替换为您在第2步中创建的计时器的真实实体ID。
配置完成后,请在开发者工具中重载脚本或重启 Home Assistant。
添加Lovelace仪表盘视图
- 打开您想要添加监控卡片的仪表盘。
- 点击右上角的 三个点 -> 编辑仪表盘。
- 点击右下角的 "+" 按钮添加一个新视图,或在现有视图中点击 "添加卡片"。
- 如果您想快速搭建,可以进入 原始配置编辑器,将dashboards/countdown_example.yaml中的内容复制进去。
- 重要:在卡片配置中,您需要修改以下占位符:
- 将所有
timer.your_timer_entity_id
替换为您在第2步中创建的计时器的真实实体ID。 - 将
YOUR_USER_ID_HERE
替换为您自己的管理员用户ID,以确保控制按钮对您可见。
- 将所有
测试
现在,通过 MQTT 向您配置的主题发布一条消息,例如:
- Topic:
access/verify
- Payload:
{"result": true, "user": "test"}
您应该能在 HA 的仪表盘上看到倒计时开始,并且您选择控制的设备会自动开启。等待倒计时结束后,设备会自动关闭。