
摄像头看到有人跌倒就报警。
端侧跌倒检测——姿态估计、逐人时序状态机、一条 MQTT 事件,全部在本地完成。可以用一体化摄像头,也可以把你现有的 RTSP 摄像头接到 Jetson、瑞芯微 NPU 或 Hailo-8 主机上。
室内固定机位、人常常独处、摔倒后几分钟内必须有人知道的地方。

老人卧室、卫生间门口、走廊。摔倒后不用等下一次查房。

康复训练区、夜间病区走廊。无人值守时段补一双眼睛。

自家客厅、浴室门外。一个跌倒事件接进 Home Assistant,用来开灯、推送或发起呼叫。
不适用:垂直俯拍、长走廊远景、家具严重遮挡。启动时人已经躺着的,只报姿态,不产生事件。
摄像头采集画面,检测主机完成判定,告警送至既有接收系统;需要值班界面时增配告警面板主机。

要跑起来只需要三样东西:出画面的摄像头、跑检测的主机、接事件的系统;要值班界面就再加一台告警面板主机(可以和检测主机同机,用 reCamera 时是一台小盒子)。摄像头和主机都在现场,视频不出设备;过网络的只有几百字节的一条 JSON。
两条路,走哪条通常已经由墙上装着什么决定了:
机位比硬件更能决定准确率。 固定的室内画面,2–3 m,侧向或斜角,肩部和髋部可见。跌倒过程必须发生在画面内:启动时人已经躺着的话,它报告姿态但不产生事件。垂直俯拍、长走廊远景、家具严重遮挡,实测都会明显变差。
这台决定你能覆盖几路,也决定大部分成本。姿态估计、逐人跟踪、跌倒状态机和 MQTT broker 都跑在这里;判定逻辑各主机完全相同,区别只在加速器。
| 检测主机 | 加速器 | 当前下发的模型 | 路数 | 什么时候选它 |
|---|---|---|---|---|
| reCamera 2002 / Pro | 自带 NPU | YOLO11n-Pose INT8 | 1 | 单个房间,最快跑通一条告警链路 |
| reComputer RK3576 / RK3588 | 瑞芯微 NPU | YOLO11n-Pose FP16 | 1 | 已经在用瑞芯微板卡 |
| reComputer R2000 Series | Hailo-8 | YOLOv8s-Pose INT8 | 16 | 已经在用 Hailo,或者需要多路密度 |
| reComputer J30 / J40 | Orin Nano / Orin NX GPU | YOLO11s / YOLO11m FP16 | 7 / 8 | 多个视角,并且想给更大的模型留余量 |
路数是实测加速器吞吐除以单路 15 FPS,再按 RTSP 解码、跟踪与 MQTT 的开销打折后的值。端到端只实测过单路,所以这个数字应作为自行压测的起点,而非标称能力。单帧延迟、完整的 FP16/INT8 表和测试方法在工程 Wiki 上。
reCamera 用自带的本地 broker。reComputer 各套餐会在 host 网络下随检测器一起拉起 eclipse-mosquitto:2,因此 MQTT broker 由检测主机自己提供——不需要外部 broker,这条链路上也没有任何一步需要外网。
部署的最后一步是应用内的实时预览:视频上叠加骨架、每个人的状态和证据计数,用来在接通知流程之前确认机位确实看得到该看的东西。数据接口见下方「能拿到什么数据」。
装上之后,值守护理员在浏览器里看到和操作的告警面板。
公开数据集上的工程基准,不是医疗或人身安全认证。
| 现场能得到什么 | 典型值 | 设备 |
|---|---|---|
| 跌倒到告警 | 1.4 秒 | 全平台一致 |
| 跌倒召回,冻结配置 | 95.8% | 留出集 27 段 |
| 日常动作不误报 | 77.8% | 同一留出集 |
| 一台主机同时接几路 | 16 路 | reComputer R2000 系列(R2035-12,Hailo-8) |
| 接入告警面板后,跌倒到告警送达 | P50 2.83 秒 | reComputer R2000 系列(R2035-12,Hailo-8),确认窗口调短 |
路数随主机档位变化,reCamera 与 RK 系列各 1 路、Jetson J30 / J40 为 7 / 8 路,按 15 FPS 输入折算,是自行压测的起点而非标称能力。五个套餐的准确率基本一致,所以选硬件看路数,不看准确率。
换到含远景与遮挡的外部数据集,召回降到 52.9%–58.8%——制约因素是姿态模型的人体检出率,不是跌倒判定。
面板那一行是整链——摄像头到检测器到面板再到 webhook,取证窗口与自动确认窗口各调到 1 秒。用出厂默认值(5 秒 + 60 秒)时同一条链路要一分钟出头,这是确认机制本身。
部署完就靠这几个主题接数据。
| 主题 / 端口 | 内容 | retained |
|---|---|---|
<设备名>/fall-detection/results | 每帧一条 JSON:state、fall_detected、fall_event、event_id、person_count、fallen_count,以及 persons[] 里的 track_id / state / bbox | 否 |
<设备名>/fall-detection/status | online / offline,通过遗嘱消息发布 | 是 |
homeassistant/ | 自动发现配置:跌倒传感器、状态、事件编号、有人存在 | 是 |
RTSP 8554 /live0 | 实时视频,供预览和 NVR(reCamera 套餐) | — |
<设备名> 部署时自己填(reCamera 套餐默认 recamera,reComputer 套餐默认 recomputer),只是主题的第一段,可按房间或楼层命名;多路时流编号拼在主题后面,也写在 payload 里。fall_event 只在状态跃迁那一刻置位一次,自动化不会在人躺着的整段时间里反复触发。
这套设计的可复用单元不是「跌倒」,是「姿态估计 → 逐人跟踪 → 时序状态机 → MQTT 事件」这条链路。链路上只有倒数第二段跟这个具体事件绑定——定义「什么样子算跌倒」的那组特征与阈值。其余部分——机位规范、四套加速器运行时、模型交付路径、主题结构、Home Assistant 自动发现、现场调试预览——原样沿用。
| 层 | 移植时你要做的 |
|---|---|
| 机位规范与构图要求 | 直接复用 |
| 姿态估计与四套运行时(NPU / TensorRT / RKNN / Hailo) | 直接复用 |
| 逐人跟踪 | 直接复用 |
| MQTT 主题结构、Home Assistant 自动发现、预览工具 | 直接复用 |
| 状态机里的特征与阈值 | 按新事件重写 |
| 时序权重与留出测试集 | 重新采集与训练,并按同样的按人划分方式切分 |
形态相同的事件——由骨架的时间变化定义、而不是由目标类别定义——都落在这条链路的适用范围内:离床、久卧不动、攀爬、蹲伏到地面、跌倒后长时间未起身。
说说你的现场情况,硬件由我们来定;再接上数据、照步骤装。
现在有摄像头吗?
| 套餐 | 用途 | 设备 | 数量 |
|---|---|---|---|
| reCamera 2002 | AI 摄像头 | reCamera 2002 | 1 |
| 告警面板主机(可选) | reComputer R1000 系列 / 已有的 Docker 主机(二选一) | 1 | |
| reCamera Pro | 摄像头 | reCamera Pro | 1 |
| 告警面板主机(可选) | reComputer R1000 系列 / 已有的 Docker 主机(二选一) | 1 | |
| IP 摄像头 + reComputer J30 / J40 | 检测主机 | reComputer J30 系列(Jetson Orin Nano) / reComputer J40 系列(Jetson Orin NX)(二选一) | 1 |
| IP 摄像头 | IP 摄像头 | 1 | |
| IP 摄像头 + reComputer RK3576 / RK3588 | 检测主机 | reComputer RK3588 系列 / reComputer RK3576 系列(二选一) | 1 |
| IP 摄像头 | IP 摄像头 | 1 | |
| IP 摄像头 + reComputer R2000(Hailo) | 检测主机 | reComputer Industrial R20 系列 | 1 |
| IP 摄像头 | IP 摄像头 | 1 |
| 套餐 | 视频来源 | 检测主机 | 当前下发的模型 | 路数 | 备注 |
|---|---|---|---|---|---|
| reCamera 2002 | 自带摄像头 | 同一台设备 | YOLO11n-Pose INT8 | 1 | 自带本地 broker 与 RTSP 8554;安装会把摄像头从 Node-RED 和其他视觉应用手里接管过去 |
| reCamera Pro | 自带摄像头 | 同一台设备 | YOLO11n-Pose INT8 | 1 | 新一代一体机;检测器随设备应用中心分发,本套餐负责配置并启用 |
| IP 摄像头 + reComputer J30 / J40 | 自备 RTSP | J30(Orin Nano)/ J40(Orin NX) | YOLO11s / YOLO11m FP16 | 起步 4 路(Orin Nano + YOLO11s)或 3 路(Orin NX + YOLO11m) | 首次部署要在设备上构建 TensorRT 引擎,10–20 分钟;需 10 GB 空闲磁盘 |
| IP 摄像头 + reComputer RK | 自备 RTSP | RK3576 / RK3588 | YOLO11n-Pose FP16 | 1 | 需要宿主的 librknnrt.so;.rknn 分板卡,部署时选错目标模型加载不了 |
| IP 摄像头 + reComputer R2000 系列(R2035-12,Hailo-8) | 自备 RTSP | reComputer R2000 series + Hailo-8 | YOLOv8s-Pose INT8 | 2 | ABI 锁定 HailoRT 4.21;加速器不能被其他程序占用 |
五个套餐端到端实测过的都是单路。上表的路数是把下面的吞吐表按解码、跟踪和 MQTT 的开销打折后的值,应作为自行压测的起点,而非标称能力。
难度定级 intermediate;reCamera 从零到跑通约 30 分钟,Jetson 因为要构建引擎会更久。
每个套餐的准确率、单帧延迟与多路吞吐实测数据,以及测试方法,见工程 Wiki。
告警面板在两个 reCamera 套餐里可选,在另外三个套餐里默认包含。 reComputer J30 / J40、RK、R2000 上它与检测器在同一份 compose 里一起起来,占 8080 端口。reCamera 2002 与 reCamera Pro 上摄像头承载不了它,所以它是一台独立机器上的额外步骤,这台机器不需要 AI 算力——reComputer R1000 系列,或你已有的一台 Docker 主机。跳过这一步,摄像头就只发 MQTT 事件,与之前完全一样。
能。姿态估计、跟踪、跌倒判定和 MQTT broker 全部跑在检测主机上——reCamera 用自带的本地 broker,reComputer 各套餐会随检测器一起在 1883 端口拉起 mosquitto。只有当你自己把事件往外转发时才涉及外网。
不会。除非你自己去打开 RTSP 流或调试预览,视频始终留在设备上。网络上传的是每帧几百字节的 JSON——整体状态加每个被跟踪者一条记录。
在留出的 27 段测试集上(GMDCSA-24 v2.1,按人划分,只读一次),六组已冻结配置的平均是准确率 85.8%、跌倒召回 95.8%、平均告警延迟 1.4 秒。换到含远景与遮挡的独立外部数据集,召回降到 52.9%–58.8%。这是辅助告警,没有医疗或人身安全认证,也不对漏检做任何保证。
五个套餐端到端实测过的都是单路。作为你自己压测的起点:Orin Nano 上 4 路 YOLO11s、Orin NX 上 3 路 YOLO11m,Hailo-8 上 2 路,reCamera 与瑞芯微板卡各 1 路。RK 上实测的端到端吞吐只有加速器推理上限的 28%–44%,因为解码、跟踪、状态机和 MQTT 也要占 CPU。
2–3 m 的侧向或斜角机位,在可能发生跌倒的路径上整个人体(尤其肩部和髋部)保持可见。垂直俯拍、长走廊远景和家具严重遮挡都会更差。对着通行区域装,不要主要对着床或健身区——那里的日常地面动作在单独验证之前会被读成跌倒。
把 Home Assistant 指向同一个 MQTT broker 即可。检测器会在 homeassistant/ 下发自动发现配置,跌倒传感器、当前状态、事件编号和有人存在传感器会自动出现,不用手写 YAML。在线状态是 <设备名>/fall-detection/status 上的 retained 遗嘱消息,设备名是部署时自己填的,默认 recamera / recomputer。
「姿态 → 跟踪 → 时序状态机 → MQTT」这条链路可以复用,定义跌倒的那组特征与阈值不能。改指向新事件意味着重写这一层,并为新事件重新采集留出测试集。逐层的代价和三类不适用形态见「这套设计能复用到哪里」。
上游运行时代码是 Apache-2.0,但只覆盖代码和文档;姿态模型各自保留自己的条款,下载前需要显式接受。参考姿态权重由 Ultralytics 以 AGPL-3.0 分发——闭源商业出货前请确认该授权是否适合你的产品、获取商业授权,或替换成授权兼容的姿态模型。运行时本身在文档描述的输出契约内与模型文件无关。