跌倒警报设备

跌倒警报设备

该应用是一个基于 Quectel Pi H1 智能主控板,通过 USB 摄像头进行实时人体姿态识别,采用 YOLOv8-Pose 和多人跌倒分类器,自动检测用户是否发生跌倒事件的智能应用。

该项目通过调用摄像头实时采集画面,当检测到跌倒事件时会启动本地报警器并发送通知到手机,用户通过手机 App 查看跌倒图片,可作为老年人/患者安全监护、跌倒预警系统的参考示例。

  • 案例描述
  • 资源准备
  • 快速上手
  • 应用演示

该应用是一个基于 Quectel Pi H1 智能主控板,通过 USB 摄像头进行实时人体姿态识别,采用 YOLOv8-Pose 和多人跌倒分类器,自动检测用户是否发生跌倒事件的智能应用。

该项目通过调用摄像头实时采集画面,当检测到跌倒事件时会启动本地报警器并发送通知到手机,用户通过手机 App 查看跌倒图片,可作为老年人/患者安全监护、跌倒预警系统的参考示例。

开发配件清单

配件名称 数量 规格参数
Quectel Pi H1 智能主控板 1块 Quectel Pi H1智能主控板
USB 摄像头 1个 推荐分辨率:1280×720或更高;输出格式:MJPG/YUYV
USB-C 电源线充电器 1个 27W USB Type-C接口充电器 1.2米线长中规电源PD电源 适用于树莓派5代
USB-C DP 显示线/HDMI 线 1根 规格:DP 1.4;线长:1m;接口:USB-C(公头)- USB-C(公头)
规格:HDMI 2.0;线长:1m;接口:HDMI-A(公头)-HDMI-D(公头)
CPU 散热风扇(可选) 1个 树莓派5代官方原装散热器带导热贴
显示屏 1个 24英寸HDMI显示器
USB可编程警报灯(可选) 1个 通过串口(/dev/ttyUSB0)控制的LED警报灯

配件实物参考

Quectel套件

开发准备

Quectel Pi H1 智能主控板出厂默认搭载 Debian 13 系统镜像,因此无需再次烧录镜像,仅需按照如下步骤操作即可。

硬件连接

显示连接

将 HDMI 线一端接入智能主控板的 HDMI 接口,另一端接入显示器的 HDMI 接口。

输入设备连接

将 USB 键盘、鼠标接入智能主控板的两个 USB-A 接口上,若用无线输入设备,将接收器插入 USB 口即可。

网线连接

将网线一端接入智能主控板的千兆网口,另一端接入路由器的网口(确保路由器已联网)。

USB 警报灯连接(可选)

使用 USB 线将警报灯与智能主控板的空闲 USB 接口连接(可根据购买的警报灯的文档操作)。

电源连接

将 USB-A 电源线的 USB-A 端接入电源适配器,USB-C 端接入智能主控板的电源口(通常标注 POWER IN )。

项目实现

安装前置

确认有网络连接后,打开终端输入命令:

sudo apt update && sudo apt install -y python3-pip libatlas-base-dev libjasper-dev

上述命令将更新软件源并安装项目运行所需的一些库,具体包括:

  • python3-pip:Python 包管理器,用于安装项目依赖。
  • libatlas-base-dev  libjasper-dev:支持科学计算库的依赖。

获取代码

下载代码

下载代码后,将代码解压到设备。

安装 Python 依赖

pip install -r requirements.txt

依赖包说明:

  • PySide6:Qt6 的 Python 绑定,用于构建图形用户界面;
  • opencv-python:OpenCV 图像处理库,用于摄像头采集和图像处理;
  • ultralytics:YOLOv8 目标检测框架,用于人体关键点检测;
  • numpy:数值计算库,用于矩阵运算和特征提取;
  • scikit-learn:机器学习库,用于提供随机森林分类器;
  • joblib:序列化库,用于加载预训练模型。

准备模型文件

跌倒检测应用需要预加载以下模型文件,请放置在 model/ 目录下:

  1. yolov8n-pose.pt - YOLOv8-Nano Pose 模型,用于检测人体17个关键点
  2. fall_multi_person_model.pkl - 随机森林分类器,用于判断是否跌倒
  3. feature_scaler_multi.pkl - 特征缩放器,用于标准化输入特征

这些模型文件可以从以下方式获取:

  • yolov8n-pose.pt:从 Ultralytics 官方 GitHub 下载或通过代码自动下载
  • fall_multi_person_model.pkl  feature_scaler_multi.pkl 已放置model目录下

运行应用

完成模型准备后,运行主程序:

cd src
python3 main.py

程序启动后将显示图形界面,提供以下功能:

功能界面说明
界面区域 功能说明
摄像头预览区域 实时显示摄像头采集的画面,标注检测到的人体和跌倒状态
日志输出区域 显示应用运行过程中的实时日志和检测信息
跌倒警报提示 在顶部显示跌倒检测结果,自动触发警报灯并保存报警图片
相机选择 支持多个 USB 摄像头,可自动检测并选择可用摄像头
日志显示区域

右侧区域可输出应用运行过程中的日志信息,包括:

  • 模型加载日志:显示是否成功加载 YOLOv8 模型和分类器
  • 检测日志:显示检测到的人体数量和跌倒状态
  • 警报日志:显示跌倒警报和图片上传状态
实时检测参数

程序使用以下参数进行跌倒检测(可根据实际需求调整):

参数 说明 默认值
MIN_CONFIDENCE 关键点置信度阈值 0.4
MIN_KEYPOINTS 有效关键点最少数量 10
FALL_BODY_ANGLE_THRESHOLD 身体倾角阈值 55°
FALL_HEIGHT_RATIO_THRESHOLD 身体高宽比阈值 1.2
FALL_MIN_CONFIDENCE 分类器置信度阈值 0.75
FALL_CONFIRM_FRAMES 跌倒确认帧数 3
DETECT_INTERVAL 检测间隔(秒) 0.15

跌倒检测原理

关键点检测

应用使用 YOLOv8-Pose 模型检测人体17个关键点:

0: 鼻子       1: 左眼       2: 右眼       3: 左耳       4: 右耳
5: 左肩       6: 右肩       7: 左肘       8: 右肘       9: 左手腕
10: 右手腕    11: 左髋       12: 右髋      13: 左膝      14: 右膝
15: 左脚踝    16: 右脚踝
特征提取

从关键点提取以下特征用于分类:

  1. 关键点坐标:17个关键点的(x, y)坐标和置信度,共51维
  2. 身体角度:计算8个关键点之间的角度特征,共8维
  3. 相对坐标:相对于髋部中心点的相对坐标,共26维
  4. 身体形态:身体高度、宽度及高宽比,共3维
跌倒判断逻辑

应用使用多种方法判断是否发生跌倒:

# 特征提取和分类
features = detector.extract_features(keypoints, confidences)
if scaler is available:
    features_scaled = scaler.transform(features)
else:
    features_scaled = features

# 获取分类器预测
probabilities = classifier.predict_proba(features_scaled)
is_falling = probabilities[0, 1] > FALL_MIN_CONFIDENCE  # 类别1表示跌倒
# 确认帧计数(减少误报)
if is_falling:
    fall_count += 1
    if fall_count >= FALL_CONFIRM_FRAMES:
        trigger_alarm()

判断标准:

  • 随机森林分类器概率 > 0.75 且连续3帧检测到跌倒
  • 或者同时满足身体角度 > 55° 且身体高宽比 > 1.2

警报和查看

当检测到跌倒时,应用会:

  1. 启动警报灯:通过串口向警报灯设备发送闪光和报警命令
  2. 保存报警图片:在 picture/ 目录保存包含时间戳的 JPEG 图片
  3. 上传服务器:将报警图片上传到指定服务器地址
    • 上传地址:http://SERVER_IP:8000/upload_fall (可自行替换服务器地址和上传接口)
    • 支持后台异步上传,不阻断主程序运行
  4. App 端查看:可通过手机 App 实时接收跌倒通知,并查看报警图片

沟通无界,服务无限

了解更多关于完美竞技平台官网公司、产品和技术支持的信息。

XML 地图