2、活动识别基础:人类活动识别(HAR)的定义、常见活动类别(步行、跑步、跌倒)及典型应用场景

人类活动识别(Human Activity Recognition,HAR)是普适计算与可穿戴设备领域的核心基础技术,其目标是通过传感器数据自动判断人体当前所处的物理动作状态。在TinyML的语境下,HAR不再依赖云端服务器,而是直接在微控制器(MCU)上完成数据采集、特征提取与模型推理,从而实现毫瓦级功耗下的实时行为感知。本章将系统阐述HAR的基本定义、面向TinyML的常见活动类别划分,以及跌倒检测这一特殊场景的工程挑战,为后续章节中基于IMU(惯性测量单元)的数据集构建与模型训练奠定理论基础。

TinyML 人类活动识别(HAR)核心链路 传感器数据源 加速度计 (ACC) 陀螺仪 (GYRO) 数据预处理 滑动窗口 (2-4s) 滤波/去噪/重采样 特征提取 均值/方差/FFT 过零率/峰峰值 TinyML 模型推理 (MCU) 输出活动类别 🚶 步行 | 🏃 跑步 | ⚠️ 跌倒 | 💤 静止 🏥 医疗健康监测 老人跌倒报警/康复评估 🏭 工业安全 高危作业姿态监控 📱 智能穿戴 运动追踪/日常活动记录

2.1 人类活动识别的核心定义与技术边界

人类活动识别(HAR)本质上是一个时间序列模式分类问题:给定一段由可穿戴传感器(通常是加速度计和陀螺仪)采集的连续信号,系统需要将其映射到预定义的活动类别标签上。在TinyML场景下,这一过程被严格约束在资源受限的嵌入式环境中——通常仅有几十KB的RAM和几百KB的Flash存储空间,且要求毫瓦级功耗。因此,TinyML HAR并非简单地将云端深度学习模型压缩,而是需要从数据采集策略、特征设计到模型架构进行全链路协同优化。

从信号处理角度看,人体活动产生的惯性信号具有显著的频域和时域特征。例如,步行时垂直轴加速度呈现约1.5-2.5Hz的周期性波动,跑步时该频率提升至2.5-4Hz且幅值显著增大,而跌倒则表现为短时间内(通常200-500ms)加速度幅值的剧烈冲击(常超过3g),随后伴随一段静止或姿态改变。这些物理特征为轻量级特征工程提供了理论依据,使得随机森林、决策树或小型卷积神经网络(CNN)在MCU上即可达到90%以上的分类准确率。

关键认知:HAR的难点不在于“识别动作”,而在于“区分相似动作”和“处理动作过渡态”。例如,快速行走与慢跑在加速度波形上高度相似,上下楼梯与步行在频域特征上重叠严重。TinyML系统必须通过合理的窗口划分和特征组合来放大这些细微差异。

2.2 常见活动类别:步行、跑步与跌倒的物理特征对比

在TinyML HAR系统中,活动类别的选择直接影响模型复杂度与实用性。本课程聚焦于三种最具代表性的活动:步行(Walking)、跑步(Running)和跌倒(Falling)。下表从物理特征、信号形态和识别难度三个维度进行对比:

活动类别 加速度幅值范围 主频范围 信号周期性 典型持续时间 识别难度
步行 ±1g ~ ±2g 1.5 - 2.5 Hz 强周期性 数分钟至数小时 低(基线活动)
跑步 ±2g ~ ±4g 2.5 - 4.0 Hz 强周期性但噪声大 数分钟至数十分钟 中(与快走混淆)
跌倒 瞬间冲击 > 3g,随后回落 宽频(冲击信号) 无周期性 200ms - 1s(冲击段) 高(需区分弯腰/坐下)

值得注意的是,跌倒检测在HAR中具有特殊性:它属于罕见事件检测。在真实场景中,跌倒发生的概率极低(例如一位老人可能数月才跌倒一次),但漏报的代价极高。这要求模型在训练时采用特殊的数据增强策略(如合成跌倒数据)和阈值调整方法,以在召回率与误报率之间取得平衡。

2.3 典型应用场景与工程约束

HAR技术的落地场景直接决定了系统设计指标。以下是三个最具代表性的TinyML HAR应用方向及其工程约束:

  • 老年人跌倒监测(医疗健康):要求设备24小时佩戴,电池续航至少7天,跌倒检测延迟小于3秒,误报率低于每天1次。通常采用腰带或胸贴式佩戴,传感器采样率50-100Hz即可满足需求。
  • 运动手环/手表(消费电子):需要区分步行、跑步、骑行、游泳等多种活动,对实时性要求高(延迟<1秒),但允许较高的误报率(用户可手动纠正)。采样率通常为25-50Hz以降低功耗。
  • 工业安全监测(高危作业):监测工人是否突然倒地或进入危险姿态,要求极高的鲁棒性(适应不同体型和作业动作),且需在强振动、电磁干扰等恶劣环境下工作。通常采用多传感器融合(加速度计+气压计)。
工程陷阱提醒:许多初学者在采集HAR数据时忽略传感器佩戴位置的一致性。同一活动,佩戴在手腕、腰部、脚踝或胸部时,加速度信号形态差异巨大。在TinyML项目中,必须固定佩戴位置,并在模型训练时加入位置扰动数据增强,否则模型在真实部署时准确率会急剧下降。

2.4 案例拆解:从加速度波形到活动分类的完整判断流程

为帮助理解HAR的实际工作过程,我们以一个典型的跌倒检测场景为例,展示从原始信号到最终决策的完整链路。假设设备佩戴于腰部,加速度计采样率为50Hz,滑动窗口长度为4秒(200个采样点)。

场景设定:一位独居老人在家中从沙发上站起时突然头晕跌倒,随后躺在地板上约10秒后自行坐起。系统需要在这10秒内发出警报。

信号分析过程:

  1. 窗口滑动与特征计算:系统每0.5秒滑动一次窗口,计算当前4秒窗口内的信号向量幅值(SVM,即三轴加速度的平方和开方)。正常站立时SVM约为1g(重力加速度),跌倒瞬间SVM会迅速攀升至3g以上。
  2. 冲击检测:当检测到SVM超过2.5g阈值时,触发“疑似跌倒”状态,系统开始记录冲击后的信号特征。
  3. 姿态确认:跌倒后人体通常处于水平或接近水平姿态。系统检查冲击后2秒内的平均倾角(通过加速度计计算),若倾角大于60度(即身体与地面夹角小于30度),则进一步确认跌倒。
  4. 静止判定:若冲击后信号方差低于阈值(表示人体未在移动),且持续超过3秒,则判定为“跌倒后静止”,触发警报。

下表展示了该案例中关键时间点的信号特征:

时间点 SVM峰值 倾角 信号方差 系统状态
T=0s(站立) 1.0g 5° 0.02 正常监测
T=0.8s(跌倒冲击) 3.8g 45° 0.85 触发冲击检测
T=1.5s(倒地后) 1.1g 78° 0.01 确认姿态改变
T=4.0s(静止) 1.0g 80° 0.005 触发警报

结果与复盘:该系统在4秒内完成了跌倒检测,满足3秒延迟要求。但复盘发现,若老人跌倒后立即坐起(而非静止),系统可能漏报。因此,实际部署时需增加“跌倒后活动”状态识别,或结合陀螺仪的角速度变化来区分“跌倒后坐起”与“正常坐下”。这一案例说明,HAR系统设计必须考虑动作的连续性和上下文信息,而非仅依赖单一特征阈值。

2.5 常见误区与设计要点总结

在TinyML HAR项目的初始阶段,开发者常陷入以下误区,导致后续模型性能不佳:

  • 误区一:采样率越高越好。实际上,对于步行/跑步识别,25-50Hz采样率已足够,过高采样率只会增加功耗和计算负担。跌倒检测可适当提高至100Hz,但需权衡电池寿命。
  • 误区二:直接使用原始数据训练深度学习模型。在TinyML场景下,原始数据维度高、噪声大,直接训练需要较大的模型容量。建议先提取时域/频域特征(如均值、方差、FFT峰值),再用轻量级模型(如决策树、逻辑回归)进行分类。
  • 误区三:忽略传感器校准。加速度计存在零偏和尺度误差,不同设备间差异明显。在部署前必须进行静态校准(将设备平放,采集重力向量作为参考),否则特征值偏移会导致误分类。
  • 误区四:跌倒检测只关注冲击峰值。许多日常动作(如猛坐椅子、跳跃落地)也会产生高g值冲击。必须结合姿态变化和后续静止状态进行综合判断,才能有效降低误报。
设计建议:在开始编码之前,先用可视化工具(如Python的matplotlib)绘制不同活动的加速度波形,直观感受信号差异。这能帮助你更合理地选择特征和设计阈值规则,远比直接套用复杂模型更有效。