传感器数据基础:常见传感器类型、数据采样与时间序列特性

在TinyML时序CNN模型的构建中,传感器数据是一切工作的起点。无论是智能手环中的加速度计、无人机中的陀螺仪,还是智能音箱中的麦克风,这些传感器输出的原始信号在送入一维卷积神经网络(1D-CNN)之前,必须经过正确的采集、格式化与特性理解。本章将系统梳理常见传感器的物理原理与输出特性,深入解析采样定理对时序数据质量的约束,并阐明时间序列数据在CNN视角下的结构性特征——这些知识将直接决定你后续设计模型输入窗口、选择预处理策略以及评估模型泛化能力的正确性。

传感器数据 → 时间序列 → 1D-CNN 输入链路 常见传感器类型 加速度计 陀螺仪 麦克风 磁力计 压力/温湿度 PPG/ECG 采样与量化 采样率 fs(Hz) 奈奎斯特频率 fs/2 ADC 位深(12/16/24bit) 时间序列特性 时序依赖(相邻样本相关) 多通道(X/Y/Z 或 多频段) 非平稳 / 噪声 / 基线漂移 1D-CNN 输入张量 形状: [batch, window_size, num_channels] 窗口大小 = 采样率 × 时间窗口(如 50Hz × 2s = 100 个采样点) 通道数 = 传感器轴数(加速度计 3 轴 → 3 通道) ⚠ 采样率不足 → 混叠失真;窗口过短 → 特征不完整;通道未对齐 → 模型崩溃

2.1 常见传感器类型与输出特性

在TinyML时序分类任务中,最常接触的传感器主要分为惯性传感器、声学传感器和环境传感器三大类。理解它们的物理原理和输出格式,是设计CNN输入通道的前提。

2.1.1 惯性传感器:加速度计与陀螺仪

加速度计测量物体在三个正交轴(X、Y、Z)上的线性加速度,单位通常为 g(9.8 m/s²)或 m/s²。其输出包含重力分量和运动加速度分量,因此静态放置时仍会输出约1g的向量。陀螺仪则测量绕三个轴的角速度,单位为 °/s 或 rad/s,它不响应重力,但存在零偏漂移(bias drift)问题。在人体活动识别(HAR)中,加速度计用于区分静止、走路、跑步等状态;陀螺仪则对旋转动作(如挥手、转身)更敏感。两者常组合成6轴IMU(惯性测量单元),输出6通道数据。

2.1.2 声学传感器:麦克风

麦克风将声压波动转换为电信号,经ADC采样后得到音频波形。在TinyML场景中,麦克风采样率通常为8kHz(电话语音)至48kHz(高保真音频)。与IMU不同,麦克风输出的是单通道(或双通道)的高频时序信号,其频率成分丰富,常需通过短时傅里叶变换(STFT)转换为频谱图,再作为CNN的输入。但本章聚焦于原始时域波形,因为1D-CNN可以直接处理原始音频采样点,省去特征提取步骤。

2.1.3 其他常用传感器

磁力计(3轴地磁场强度,单位μT)常与IMU融合用于方向估计;压力传感器(单位hPa或Pa)可用于高度检测或步态识别中的气压变化;温湿度传感器输出变化缓慢,采样率可低至1Hz以下;光电容积脉搏波(PPG)传感器用于心率监测,输出为反映血流变化的周期性波形。下表总结了各类传感器的典型参数:

传感器类型 输出通道数 典型采样率 单位 典型应用
加速度计 3(X/Y/Z) 25–200 Hz g 或 m/s² 活动识别、跌倒检测
陀螺仪 3(X/Y/Z) 25–200 Hz °/s 姿态估计、旋转动作
麦克风 1–2 8–48 kHz 数字码(16/24bit) 语音命令、声学事件
磁力计 3 10–50 Hz μT 航向角、室内定位
压力传感器 1 1–50 Hz Pa 或 hPa 高度计、步态分析

2.2 数据采样:从连续信号到离散序列

传感器输出的物理量本质上是连续时间信号,而微控制器只能处理离散的采样点。采样过程必须遵循奈奎斯特采样定理:采样率 fs 必须大于信号最高频率成分 fmax 的两倍,即 fs > 2·fmax,否则会发生混叠(aliasing),高频成分会折叠到低频区域,造成不可逆的失真。

2.2.1 采样率选择的工程权衡

在TinyML设备上,采样率并非越高越好。高采样率意味着:① 单位时间内产生更多数据,占用更多内存和Flash存储;② MCU需要更频繁地唤醒和搬运数据,增加功耗;③ 1D-CNN的输入序列更长,计算量增大。因此,实际选择需结合信号带宽和应用需求。例如,人体活动频率通常低于20Hz,采样率设为50Hz即可;而语音识别需要覆盖4kHz的语音带宽,采样率至少8kHz。

经验法则:先查阅传感器数据手册中的推荐采样率范围,再结合你的应用场景做降采样测试。例如,加速度计默认100Hz,但如果你只识别走路/跑步,可降采样至25Hz,模型输入长度缩短4倍,推理速度提升明显。

2.2.2 量化与动态范围

ADC将模拟电压转换为数字码,其位深决定了量化精度。12位ADC可表示4096个等级,16位ADC可表示65536个等级。对于加速度计,量程±2g时,12位分辨率约为 4g/4096 ≈ 0.98 mg/LSB,足以检测细微的振动。但量化噪声会叠加到信号上,若信号幅度过小(如微弱的脉搏波),则需要更高的位深或前置放大。在CNN输入前,通常将原始整数码归一化到[-1, 1]或[0, 1]区间,以利于模型收敛。

2.3 时间序列特性:CNN视角下的关键结构

与图像(2D网格)不同,传感器时间序列是一维的、有序的、具有强时间依赖性的数据。1D-CNN正是利用这种时序结构,通过卷积核在时间轴上滑动来提取局部模式。理解以下三个特性,是设计模型输入的关键。

2.3.1 时序依赖与局部感受野

相邻采样点之间存在强相关性——上一时刻的加速度值往往与下一时刻接近,除非发生突变。1D-CNN的卷积核(如kernel_size=3或5)在时间轴上滑动时,每次覆盖一小段连续窗口,相当于在局部时间范围内提取特征。例如,一个步态周期约1秒,若采样率50Hz,则一个周期包含50个采样点。卷积核尺寸应小于周期长度,才能捕捉到“脚跟着地→脚掌放平→脚尖离地”的局部模式。

2.3.2 多通道对齐与同步

当使用6轴IMU时,加速度计和陀螺仪的采样必须严格同步。若两个传感器分别独立采样,即使采样率相同,相位差也会导致通道间错位,CNN将无法正确关联加速度和角速度的联合特征。在硬件设计上,应使用同一时钟源触发所有传感器的采样,或使用FIFO缓冲并打上时间戳。在软件层面,若发现通道间存在固定延迟,可通过互相关分析估计延迟量并进行补偿。

2.3.3 非平稳性与噪声

传感器信号往往是非平稳的——其统计特性随时间变化。例如,走路时加速度的幅度和频率会因步速变化而改变。此外,信号中混有噪声:高频电子噪声、电源工频干扰(50/60Hz)、人体运动伪迹等。1D-CNN虽然能自动学习特征,但过强的噪声会淹没有效信号。因此,预处理阶段通常需要:① 高通滤波去除基线漂移(如0.5Hz截止);② 低通滤波去除高频噪声(如截止频率为采样率的1/3);③ 可选陷波滤波器去除工频干扰。

常见误区:不要将原始传感器数据直接送入CNN而不做任何滤波。虽然CNN理论上可以学习到滤波器的功能,但需要更多层数和参数,且容易过拟合噪声。在MCU上,一个简单的IIR滤波器(如一阶高通)仅需几行代码,却能显著提升信噪比。

2.4 案例拆解:基于加速度计的人体活动识别数据准备

假设我们要在STM32L4开发板上部署一个1D-CNN模型,用于识别“静止、走路、跑步、上楼、下楼”五种活动。以下是从传感器到模型输入的实际操作流程。

2.4.1 硬件与参数设定

使用BMI160六轴IMU,加速度计量程±4g,采样率设为50Hz。选择50Hz的原因:人体活动能量主要集中在0.5–10Hz,50Hz采样满足奈奎斯特条件,且每秒钟仅产生50×3=150个浮点数,内存占用小。数据通过I2C接口读取,每次读取3轴数据,连续采集2秒构成一个样本,即每个样本包含100个时间步,每个时间步3个通道。

2.4.2 数据采集与标注

让5名测试者分别执行五种动作,每种动作持续30秒,共采集150秒数据。将数据按2秒窗口切分,得到75个样本/人/动作,总计5×5×75=1875个样本。标注时,在采集软件中按下对应动作的按钮,自动为当前窗口打上标签。注意:窗口之间应有50%重叠(即滑动步长1秒),以增加样本数量并平滑边界效应。

2.4.3 预处理与数据集划分

对每个窗口执行以下步骤:① 去除均值(去直流分量);② 应用截止频率为20Hz的4阶巴特沃斯低通滤波器;③ 将数据归一化到[-1,1](除以量程4g)。然后按测试者划分数据集:3人数据作为训练集(1125样本),1人作为验证集(375样本),1人作为测试集(375样本)。这种按人划分的方式能评估模型的跨个体泛化能力,避免同一个人数据同时出现在训练和测试中导致的数据泄漏。

2.4.4 模型输入张量构建

最终,每个样本的输入张量形状为 [100, 3],即时间步×通道数。在送入1D-CNN前,通常需要增加一个维度变为 [1, 100, 3](batch_size=1)。若使用TensorFlow Lite Micro,还需将数据转换为int8量化格式,以适配MCU的整数运算单元。

结果对比与复盘:在未滤波的原始数据上训练,模型准确率约82%;加入低通滤波后提升至91%;进一步加入高通滤波去除基线漂移后达到94%。关键教训:① 滤波是性价比最高的预处理步骤;② 按人划分数据集比随机划分更能反映真实部署场景;③ 窗口重叠虽然增加样本量,但会导致相邻样本高度相关,需在训练时使用较大的dropout或数据增强来缓解过拟合。

2.5 常见误区与总结复盘

在传感器数据准备阶段,以下错误会直接影响模型性能,需要特别注意。

  • 误区一:采样率越高越好。高采样率导致数据量激增,MCU内存和功耗压力大,且CNN输入序列过长,计算量呈线性增长。应根据信号带宽选择合适采样率,必要时降采样。
  • 误区二:忽略通道间同步。多传感器异步采样会导致特征错位,模型无法学习到轴间联合模式。务必使用同步触发或事后对齐。
  • 误区三:数据划分不严谨。随机划分样本会导致同一段连续数据被分到训练集和测试集,造成数据泄漏,评估结果虚高。应按个体或时间段划分。
  • 误区四:不做滤波或过度滤波。不滤波则噪声干扰大;过度滤波(截止频率过低)会滤除有效信号成分。需结合信号频谱分析确定滤波参数。
  • 误区五:忽视量化影响。训练时使用float32,部署时转为int8,若不做量化感知训练(QAT),精度可能下降2–5%。应在训练阶段就模拟量化误差。