3、动作识别任务定义:四类动作(走路、跑步、静止、跌倒)的特征差异,分类问题的输入输出形式
在智能穿戴IMU动作识别系统中,任务定义是整个算法链路的起点。我们需要明确回答三个核心问题:识别哪几类动作?这些动作在IMU信号上呈现怎样的可区分特征?分类模型接收什么输入、输出什么结果?本章围绕四类典型动作——走路、跑步、静止、跌倒,从物理本质出发,剖析其IMU信号特征差异,并系统定义分类问题的输入输出形式,为后续特征工程与模型选型奠定基础。
3.1 四类动作的物理本质与IMU信号特征差异
IMU(惯性测量单元)通过加速度计和陀螺仪感知物体的线性加速度与角速度。不同动作在物理层面呈现出截然不同的运动学模式,这些模式映射到IMU信号上就形成了可量化的特征差异。理解这些差异是设计分类特征和选择模型的基础。
3.1.1 走路与跑步:周期性运动的频率与幅度差异
走路和跑步都属于周期性运动,但二者在步频、步幅、腾空期和触地冲击方面存在显著区别。走路时,人体始终至少有一只脚接触地面,步频通常在1.5~2.5Hz之间,加速度幅值变化相对平缓,垂直轴(通常为Y轴或Z轴,取决于穿戴位置)的加速度峰值约为1~2g(g=9.8m/s²)。跑步则存在明显的腾空期,双脚同时离地,步频提升至2.5~4Hz,垂直加速度峰值可达2~4g,且触地瞬间会产生尖锐的冲击峰。
从信号处理角度看,走路和跑步的加速度信号都呈现准周期性,但跑步信号的基频更高、谐波分量更丰富、能量更集中。陀螺仪信号同样表现出周期性,但跑步时髋关节和膝关节的角速度幅值明显大于走路。此外,跑步信号的方差和均方根值(RMS)显著高于走路,这是区分二者的重要统计特征。
3.1.2 静止:近零加速度与微小噪声
静止状态(站立、坐姿或躺卧)下,IMU输出的加速度理论上应等于重力加速度在三个轴上的投影分量,角速度接近零。实际信号中,由于传感器噪声、人体微小晃动(如呼吸、肌肉颤动)的存在,加速度信号会有小幅波动,但整体方差极小(通常小于0.05g²),角速度幅值小于0.1rad/s。静止状态的核心特征是信号能量极低、无周期性、姿态角保持稳定。
需要特别注意的是,静止不等于加速度为零。加速度计始终会测量到重力分量,因此静止时三轴加速度的矢量和应接近1g。分类算法应利用这一特性,通过计算加速度矢量的模长来判断是否静止,而非简单检查各轴是否为零。
3.1.3 跌倒:瞬时冲击与姿态剧变
跌倒是最具危险性的动作,也是识别优先级最高的类别。跌倒过程通常分为四个阶段:失重阶段(身体开始下落,加速度短暂小于1g)、冲击阶段(身体撞击地面,产生持续50~200ms的高幅值冲击,加速度峰值可达6~12g)、静止阶段(跌倒后身体保持静止或轻微移动)。整个过程在1~2秒内完成,姿态角发生90°左右的剧变。
跌倒的IMU信号特征极为鲜明:冲击阶段加速度幅值远超正常活动范围,且伴随角速度的剧烈变化。但跌倒也存在与日常动作混淆的风险——例如猛坐椅子、跳跃落地、拍打身体等动作也可能产生较高的加速度峰值。因此,仅靠幅值阈值判断跌倒会产生大量误报,需要结合冲击后的静止状态、姿态变化角度以及时序特征进行综合判断。
| 特征维度 | 走路 | 跑步 | 静止 | 跌倒 |
|---|---|---|---|---|
| 加速度峰值 | 1~2g | 2~4g | ≈1g(重力) | 6~12g(冲击) |
| 信号周期性 | 强,1.5~2.5Hz | 强,2.5~4Hz | 无 | 无(冲击后静止) |
| 信号方差 | 中等 | 高 | 极低 | 冲击段极高,之后极低 |
| 姿态角变化 | 小幅度摆动 | 中等幅度摆动 | 几乎不变 | 90°左右剧变 |
| 持续时间 | 持续 | 持续 | 持续 | 1~2s完整过程 |
3.2 分类问题的输入输出形式定义
将动作识别建模为分类问题,需要明确输入数据的组织方式和输出结果的表示形式。这直接决定了数据预处理流程、模型架构选择和训练策略。
3.2.1 输入形式:滑动窗口与多通道信号
IMU信号是连续的时间序列,而分类模型通常处理固定长度的输入。因此,标准做法是使用滑动窗口将连续信号切分为固定长度的片段。窗口长度的选择需要权衡时间分辨率和特征稳定性:窗口过短(<1s)无法捕捉完整的步态周期,窗口过长(>5s)则延迟过大且可能包含多种动作的混合。对于四类动作识别,2~4秒的窗口长度较为合适,既能覆盖1~2个完整步态周期,又能及时响应跌倒等突发事件。
每个窗口内的数据构成一个多通道输入样本。典型的输入张量形状为:[窗口长度, 通道数]。其中通道数取决于IMU配置:三轴加速度计+三轴陀螺仪共6通道;若包含磁力计则为9通道。采样率通常为50~100Hz,因此一个3秒窗口在100Hz采样率下包含300个时间步,输入形状为[300, 6]。
# 输入张量示例(PyTorch格式)
# 形状: [batch_size, channels, sequence_length]
# 6通道: acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z
input_tensor = torch.randn(32, 6, 300) # 32个样本,6通道,300个时间步
除了原始信号,输入还可以包含预处理后的特征。传统机器学习方法通常从窗口中提取统计特征(均值、方差、峰值、过零率等)和频域特征(FFT系数、功率谱密度等),形成一维特征向量。深度学习方法则直接使用原始信号或轻量预处理后的信号,由模型自动学习特征表示。
3.2.2 输出形式:类别标签与概率分布
分类问题的输出是动作类别。对于四类动作识别,输出层通常采用两种形式:硬标签(one-hot编码)和概率分布(softmax输出)。硬标签用于训练阶段的损失计算,例如跌倒类别的标签为[0, 0, 0, 1]。概率分布则用于推理阶段,模型输出每个类别的置信度,例如[0.05, 0.02, 0.03, 0.90]表示90%的概率为跌倒。
在实际系统中,概率分布比硬标签更有价值。它允许设置置信度阈值来平衡误报率和漏报率,也支持多级告警策略——例如跌倒概率超过0.7触发紧急告警,超过0.4则触发预警告警。此外,概率分布还可以用于时序平滑,避免单帧误判导致的频繁状态切换。
3.2.3 类别不平衡问题
四类动作在真实场景中的出现频率极不均衡。静止和走路占据日常大部分时间,跑步相对较少,跌倒则是罕见事件。这种类别不平衡会导致模型偏向多数类,对跌倒的召回率极低。解决策略包括:数据增强(对跌倒样本进行时间扭曲、噪声注入)、重采样(过采样少数类、欠采样多数类)、以及使用加权损失函数(为跌倒类别分配更高的损失权重)。
3.3 案例拆解:从IMU原始数据到分类样本的完整流程
为帮助理解输入输出定义的实际应用,下面以一个具体的跌倒检测系统开发为例,展示从IMU原始数据到分类样本的完整处理流程。
场景背景:某养老机构为老年人佩戴腕部IMU设备,需要实现跌倒实时检测。设备搭载BMI160六轴IMU(三轴加速度+三轴陀螺仪),采样率设为100Hz,数据通过蓝牙实时传输至边缘计算网关。
初始现象与目标:初期直接使用原始信号训练分类模型,发现跌倒检测的召回率仅为62%,且静止状态误报率高达15%。分析发现,问题根源在于输入数据未经过规范化处理,不同佩戴者的信号幅值差异大,且窗口长度设置不合理(初始使用1秒窗口,无法完整覆盖跌倒的冲击-静止过程)。
关键输入数据与参数:
- 原始信号:三轴加速度(单位g)、三轴角速度(单位rad/s)
- 采样率:100Hz
- 窗口长度:初始1s(100个采样点),后调整为3s(300个采样点)
- 窗口步长:0.5s(50%重叠)
- 数据划分:训练集70%(含120次跌倒模拟)、验证集15%、测试集15%
分析判断过程:通过可视化跌倒过程的加速度波形,发现完整的跌倒事件从开始失重到最终静止需要约1.5~2.5秒。1秒窗口只能捕捉到冲击阶段,丢失了冲击后的静止状态信息,导致模型无法区分跌倒与跳跃落地。此外,不同受试者的加速度幅值差异达到±30%,直接使用原始幅值导致模型泛化能力差。
实际操作步骤:
- 将窗口长度从1s调整为3s,步长设为0.5s,确保每个跌倒样本至少被2~3个窗口完整覆盖。
- 对每个窗口内的6通道信号进行z-score标准化:
(x - μ) / σ,其中μ和σ从训练集统计得到。 - 增加跌倒样本的多样性:对原始跌倒样本进行时间轴缩放(0.8~1.2倍)、添加高斯噪声(σ=0.05g)、随机旋转姿态角(±15°)。
- 采用加权交叉熵损失,跌倒类别权重设为5.0,其他类别权重为1.0。
结果对比:调整后,跌倒检测召回率从62%提升至91%,静止误报率从15%降至3%。代价是模型训练时间增加了约40%(因窗口长度增加),但推理延迟仅从0.1s增至0.3s,仍满足实时性要求。
风险与代价:窗口长度增加导致动作转换时刻的响应延迟增大——从走路切换到跑步的识别延迟从0.5s增至1.5s。对于非紧急动作转换,这一延迟可接受;但对于跌倒检测,由于采用了0.5s的短步长,实际告警延迟仍控制在1s以内。
复盘经验:输入窗口的长度必须与目标动作的持续时间匹配。对于包含多个阶段的复杂动作(如跌倒),窗口应覆盖完整的事件过程,而非仅覆盖特征最明显的片段。同时,数据标准化是跨受试者泛化的关键预处理步骤,不可省略。
3.4 常见误区与设计要点
在定义动作识别任务时,开发者常陷入以下误区,导致模型性能不佳或系统不可用。
sqrt(ax²+ay²+az²)作为旋转不变特征。
误区三:忽略时序上下文。将每个窗口独立分类,不考虑前后窗口的状态连续性,会导致频繁的类别抖动。例如,走路过程中偶尔的停顿会被误判为静止。引入时序平滑机制(如隐马尔可夫模型、滑动窗口投票、或LSTM等序列模型)可显著提升稳定性。
误区四:类别定义模糊。四类动作之间存在模糊边界——快走与慢跑、站立与坐姿、跌倒与猛坐。在标注训练数据时,需要制定明确的标注规范。例如,定义步频超过2.5Hz为跑步,加速度冲击超过4g且随后1秒内加速度方差低于阈值才标注为跌倒。清晰的类别定义是模型学习的基础。
总结而言,动作识别任务的定义并非简单的"选个模型跑一下",而是需要深入理解动作的物理本质、信号特征差异,并据此设计合理的输入输出形式。输入窗口的长度与步长、通道选择与预处理方式、输出概率的阈值策略,每一个决策都直接影响系统的最终性能。只有将任务定义清晰、特征差异分析透彻,后续的模型训练与部署才能有的放矢。