3、传感器数据分类基础:常见传感器类型、数据特征与分类任务定义
在STM32Cube AI模型部署流程中,传感器数据分类是应用最广泛、落地最成熟的场景之一。无论是工业设备的状态监测、可穿戴设备的人体活动识别,还是智能家居的环境感知,其本质都是将传感器采集到的时序信号转化为有意义的类别标签。本章将系统梳理加速度计、陀螺仪、磁力计等常见传感器的物理原理与输出特性,分析其数据在时域、频域上的关键特征,并给出分类任务的形式化定义与工程化建模方法。理解这些基础概念,是后续进行数据预处理、特征工程和模型训练的前提。
3.1 常见传感器类型与物理原理
传感器是数据分类系统的信号源,其物理原理决定了数据的统计特性与噪声分布。在STM32嵌入式平台上,最常用的运动传感器为MEMS(微机电系统)器件,它们将物理量转换为电信号,再经ADC采样为数字量。
3.1.1 加速度计
加速度计测量物体沿三个正交轴(X、Y、Z)的线性加速度,单位通常为g(9.8 m/s²)。其核心原理是检测内部质量块因加速度产生的惯性力导致的电容或压阻变化。在静态条件下,加速度计输出包含重力分量,因此可用于姿态估计;在动态条件下,输出叠加了运动加速度。例如,当设备静止平放时,Z轴读数约为1g,X、Y轴接近0g;当设备自由落体时,三轴读数均接近0g。
3.1.2 陀螺仪
陀螺仪测量绕三个轴的角速度,单位是°/s(度每秒)。MEMS陀螺仪基于科里奥利效应,通过检测振动质量块在旋转时产生的横向位移来推算角速度。陀螺仪对旋转运动敏感,适合识别转动类动作(如翻转、旋转手腕),但存在零偏漂移问题,长时间积分会产生累积误差。在分类任务中,通常直接使用角速度原始值或短时统计量,而非积分后的角度。
3.1.3 磁力计
磁力计测量环境磁场在三个轴上的分量,单位是µT(微特斯拉)。其原理基于磁阻效应或霍尔效应。磁力计可用于航向角计算(电子罗盘),但极易受铁磁性材料干扰(如电机、扬声器、钢制外壳)。在分类任务中,磁力计常与加速度计、陀螺仪融合,用于识别与地磁方向相关的动作或设备朝向。
3.1.4 其他传感器
除运动传感器外,气压计(测量海拔变化,可用于楼层检测)、温湿度传感器(环境监测)、麦克风(声学事件分类)也常出现在STM32Cube AI应用中。每种传感器都有其独特的采样率、分辨率和功耗特性,设计分类系统时需综合考虑。
| 传感器类型 | 物理量 | 典型量程 | 采样率范围 | 主要噪声源 | 典型应用 |
|---|---|---|---|---|---|
| 加速度计 | 线性加速度 (g) | ±2g ~ ±16g | 10Hz ~ 1kHz | 机械振动、热噪声 | 活动识别、跌倒检测 |
| 陀螺仪 | 角速度 (°/s) | ±125 ~ ±2000 | 10Hz ~ 1kHz | 零偏漂移、温度漂移 | 旋转动作、姿态跟踪 |
| 磁力计 | 磁场强度 (µT) | ±49 ~ ±1200 | 10Hz ~ 100Hz | 铁磁干扰、硬/软磁校准 | 航向角、设备朝向 |
| 气压计 | 大气压力 (hPa) | 300 ~ 1100 | 1Hz ~ 50Hz | 气流扰动、温度 | 楼层检测、高度变化 |
3.2 传感器数据特征与信号特性
原始传感器数据是时间序列,直接输入分类器往往效果不佳。理解数据的统计特性,才能设计出有效的特征。传感器数据具有以下显著特点:
- 时序相关性:相邻采样点高度相关,动作模式体现在时间序列的形态上。
- 多轴耦合:三轴数据并非独立,例如走路时垂直轴与前后轴存在相位关系。
- 噪声非平稳:噪声方差随运动状态变化,静止时噪声小,剧烈运动时噪声大。
- 重力分量叠加:加速度计输出包含重力,需区分静态分量与动态分量。
3.2.1 时域特征
时域特征直接对窗口内的采样点进行统计计算,计算量小,适合MCU实时处理。常用特征包括:
- 均值(Mean):反映信号的直流分量,加速度计均值可近似姿态。
- 方差/标准差(Variance/Std):反映信号波动强度,区分静止与运动。
- 峰值(Peak):窗口内最大值与最小值之差,捕捉冲击事件。
- 均方根(RMS):衡量信号能量,对振动类动作敏感。
- 过零率(Zero Crossing Rate):信号穿越均值的次数,反映频率特性。
3.2.2 频域特征
频域特征通过FFT将时域信号转换到频域,能揭示周期性动作的节奏信息。例如,跑步的步频约为2.5~3.5Hz,走路的步频约为1.5~2.5Hz。常用频域特征包括:
- 主频(Dominant Frequency):幅度谱最大值对应的频率。
- 频谱能量(Spectral Energy):各频段能量之和,区分剧烈与平缓动作。
- 频谱熵(Spectral Entropy):衡量频谱的集中程度,周期性动作熵值低。
频域特征需要做FFT,计算量较大,在低功耗MCU上需权衡窗口长度与FFT点数。通常使用256点或512点FFT,窗口长度对应1~2秒数据。
3.2.3 组合特征与数据融合
单一传感器信息有限,多传感器融合可提升分类准确率。常见做法是计算加速度计向量模(√(Ax²+Ay²+Az²)),该特征与设备朝向无关,适合方向不固定的场景。此外,姿态角(roll、pitch、yaw)由加速度计与陀螺仪融合得到,能提供更丰富的运动描述。
3.3 分类任务定义与建模流程
分类任务的核心是学习一个从特征空间到类别标签的映射函数。在嵌入式场景中,该映射需满足实时性、低内存占用和高准确率三重约束。
3.3.1 任务形式化定义
给定传感器数据流,首先进行滑动窗口切片,每个窗口生成一个特征向量 x ∈ Rd(d为特征维度)。分类器输出类别标签 y ∈ {C₁, C₂, ..., Ck},其中k为类别总数。训练阶段,我们使用带标签的数据集D = {(x₁,y₁), (x₂,y₂), ..., (xₙ,yₙ)} 来优化模型参数,使得模型在未见过的数据上具有最小的分类错误率。
3.3.2 类别定义与标注策略
类别定义需与业务目标对齐。以人体活动识别为例,常见类别包括:静止、走路、跑步、上楼、下楼、骑车。标注时需注意:
- 类别互斥:每个样本只能属于一个类别,避免模糊边界。
- 类别均衡:各类别样本数量应大致相当,否则需采用加权损失或过采样。
- 过渡状态处理:动作切换期间的样本应剔除或单独标注为“过渡”,避免干扰模型学习。
3.3.3 数据采集与预处理流程
在STM32平台上,数据采集通常通过DMA(直接内存访问)将传感器数据连续写入缓冲区,再按固定窗口长度(如64个采样点)进行切片。预处理包括:
- 去直流分量:减去窗口均值,消除重力偏置。
- 滤波:使用低通滤波器(截止频率10~20Hz)去除高频噪声。
- 归一化:将特征缩放到[0,1]或[-1,1]区间,避免量纲差异影响模型训练。
// STM32 HAL库示例:读取加速度计数据并计算窗口均值
#define WINDOW_SIZE 64
int16_t ax_buffer[WINDOW_SIZE], ay_buffer[WINDOW_SIZE], az_buffer[WINDOW_SIZE];
float mean_ax = 0, mean_ay = 0, mean_az = 0;
for (int i = 0; i < WINDOW_SIZE; i++) {
mean_ax += ax_buffer[i];
mean_ay += ay_buffer[i];
mean_az += az_buffer[i];
}
mean_ax /= WINDOW_SIZE;
mean_ay /= WINDOW_SIZE;
mean_az /= WINDOW_SIZE;
// 后续可计算方差、RMS等特征
3.4 案例拆解:基于加速度计的人体活动识别
为将上述概念落地,我们设计一个具体的分类任务:使用单颗三轴加速度计(采样率50Hz)区分四种活动——静止、走路、跑步、上下楼。该案例是STM32Cube AI入门最常见的实验,也是理解传感器分类全流程的最佳起点。
3.4.1 场景与约束
设备佩戴在腰部,加速度计量程设为±4g,采样率50Hz。MCU为STM32L4系列,主频80MHz,Flash 512KB,RAM 128KB。目标模型大小不超过30KB,推理时间小于20ms,分类准确率不低于90%。
3.4.2 数据采集与标注
采集5名受试者,每人每种活动记录3分钟数据。将数据按2秒窗口(100个采样点)切片,重叠率50%,共获得约4500个样本。标注时剔除动作切换期间的过渡样本(约5%)。最终数据集:训练集3600样本,验证集900样本。
3.4.3 特征提取与选择
对每个窗口提取以下特征:
- 三轴均值(3维)
- 三轴标准差(3维)
- 向量模均值(1维)
- 向量模标准差(1维)
- 三轴峰值(3维)
- 三轴RMS(3维)
共14维特征。使用随机森林进行特征重要性评估,发现向量模标准差和Z轴标准差对区分走路与跑步贡献最大,而均值特征对区分静止与运动贡献最大。
3.4.4 模型训练与部署
使用STM32Cube AI工具链,将训练好的神经网络模型(2层全连接,隐藏层32节点,ReLU激活)转换为STM32可执行的C代码。模型量化至8位整数后,Flash占用约12KB,RAM占用约4KB,推理时间约8ms,满足约束条件。
| 活动类别 | 训练样本数 | 验证样本数 | 准确率 | 主要混淆类别 |
|---|---|---|---|---|
| 静止 | 900 | 225 | 98.2% | 走路(1.3%) |
| 走路 | 900 | 225 | 91.6% | 上楼(5.8%) |
| 跑步 | 900 | 225 | 94.7% | 下楼(3.1%) |
| 上楼 | 900 | 225 | 88.4% | 走路(7.6%) |
| 下楼 | 900 | 225 | 86.2% | 上楼(9.3%) |
3.4.5 结果分析与复盘
整体准确率91.8%,满足目标。但上楼与下楼之间混淆严重,原因是两者在加速度波形上高度相似,仅相位略有差异。改进方案包括:增加陀螺仪数据以捕捉姿态变化,或提取频域特征(步频差异)。此外,将窗口长度从2秒延长至3秒可提供更多周期信息,但会增加推理延迟。最终选择在特征集中加入Z轴过零率,混淆率降至5%以内。
3.5 常见误区与总结
在传感器数据分类项目初期,开发者常陷入以下误区,需特别警惕:
- 误区一:采样率越高越好。高采样率带来更多数据,但增加功耗和计算负担。应根据动作最高频率选择采样率,根据奈奎斯特定理,采样率应为最高频率的2~4倍。人体活动最高频率约10Hz,50Hz采样已足够。
- 误区二:特征越多越好。高维特征导致模型过拟合,且增加MCU计算量。应通过特征选择或PCA降维,保留最具判别力的特征。
- 误区三:忽略传感器校准。加速度计和陀螺仪的零偏误差会直接影响特征值。部署前应进行静态校准,记录零偏并扣除。
- 误区四:训练与部署数据分布不一致。实验室采集的数据与真实场景数据存在差异(如佩戴位置、运动强度),需在部署后进行在线自适应或收集更多真实数据。
总结本章,传感器数据分类的基础在于理解传感器物理特性、提取有效特征、合理定义分类任务。STM32Cube AI工具链将模型部署门槛降至极低,但数据质量与特征设计仍是决定项目成败的关键。建议读者从本章案例出发,先使用公开数据集(如UCI Human Activity Recognition)跑通全流程,再针对自己的硬件平台进行数据采集与模型优化。