3、时序分类模型基础:常用模型(CNN、RNN、LSTM、TCN、Transformer)及其在传感器分类中的应用

传感器产生的数据本质上是带时间戳的序列信号——加速度计的振动波形、IMU的姿态轨迹、心电图的节律变化、工业设备的温度/压力曲线,这些数据在时间维度上具有强相关性。时序分类模型的目标就是从这些连续采样点中提取判别性特征,判断当前信号属于哪一类状态(如静止/行走/跑步、正常/故障、清醒/睡眠)。本章将系统梳理五类主流时序分类模型的结构原理、适用场景与压缩潜力,为后续参数压缩技术奠定模型层面的认知基础。

传感器时序分类模型谱系与压缩适配性 传感器原始信号 加速度/陀螺仪/ECG/温度 滑动窗口 + 归一化 窗口长度 64~512 点 CNN 局部特征提取 RNN / LSTM 时序依赖建模 TCN 因果空洞卷积 Transformer 全局注意力 分类输出 Softmax 类别概率 压缩适配性评估 • CNN: ★★★★☆ • LSTM: ★★★☆☆ • TCN: ★★★★☆ • Transformer: ★★☆☆☆ 剪枝/量化/蒸馏 需结合模型结构设计 MCU/边缘设备 内存 < 512KB 模型压缩 量化/剪枝/知识蒸馏

上图展示了传感器时序分类的完整链路:原始信号经滑动窗口切分和归一化后,送入不同结构的特征提取模型,最终输出分类概率。模型选择直接影响后续压缩策略——CNN和TCN因结构规整、算子简单,更适合量化与剪枝;LSTM的门控结构对数值敏感,压缩时需谨慎;Transformer的自注意力机制计算量大,在MCU级别部署通常需要结合蒸馏或结构重构。下面逐一剖析各模型的核心原理与传感器应用场景。

3.1 CNN:局部感受野与平移不变性

核心原理

一维卷积神经网络(1D-CNN)将传感器信号视为长度为L、通道数为C的多变量序列。卷积核沿时间轴滑动,通过局部感受野提取短时模式——例如加速度信号中一个完整的步态周期(约0.5~1秒)可被多个卷积核分解为峰值、谷值、斜率等局部特征。CNN的权值共享特性大幅减少了参数量,且池化层(MaxPooling/AvgPooling)提供了平移不变性,使模型对信号在时间轴上的微小偏移不敏感。

# 1D-CNN 传感器分类模型示意(PyTorch风格)
class SensorCNN(nn.Module):
    def __init__(self, in_channels=6, num_classes=5):
        super().__init__()
        self.conv1 = nn.Conv1d(in_channels, 32, kernel_size=7, stride=2)
        self.conv2 = nn.Conv1d(32, 64, kernel_size=5, stride=2)
        self.pool = nn.AdaptiveAvgPool1d(1)
        self.fc = nn.Linear(64, num_classes)
    def forward(self, x):
        # x: (batch, 6, 128) 6轴传感器,128个时间点
        x = F.relu(self.conv1(x))
        x = F.relu(self.conv2(x))
        x = self.pool(x).squeeze(-1)
        return self.fc(x)

传感器应用场景

  • 人体活动识别(HAR):使用手机或可穿戴设备的加速度计+陀螺仪(6轴),识别走路、跑步、上楼、下楼、静止等状态。CNN可自动学习步频、振幅等特征,无需手工设计。
  • 工业设备振动监测:对旋转机械的振动信号进行分类,区分正常、轴承磨损、不平衡、松动等故障模式。CNN的局部卷积核能捕捉特定频率成分的短时变化。
  • ECG心电分类:对单导联心电信号识别正常窦性心律、房颤、室性早搏等。CNN可提取QRS波群、ST段等局部形态特征。
压缩适配性分析:CNN的卷积核参数通常占模型总参数的80%以上,且卷积核之间存在大量冗余。结构化剪枝(如按通道剪枝)可直接删除不重要的卷积核,配合8bit量化,可将模型压缩至原始大小的1/10~1/20,精度损失控制在2%以内。这是边缘部署最成熟的方案。

3.2 RNN与LSTM:时序依赖的循环建模

核心原理

循环神经网络(RNN)通过隐藏状态在时间步之间传递信息,理论上可以建模任意长度的时序依赖。但标准RNN存在梯度消失/爆炸问题,难以学习长距离依赖(超过10步)。长短期记忆网络(LSTM)引入输入门、遗忘门、输出门和细胞状态,使梯度可以沿时间轴有效传播,可建模数百步的依赖关系。LSTM的数学表达如下:

f_t = σ(W_f · [h_{t-1}, x_t] + b_f)   # 遗忘门
i_t = σ(W_i · [h_{t-1}, x_t] + b_i)   # 输入门
C̃_t = tanh(W_C · [h_{t-1}, x_t] + b_C) # 候选细胞状态
C_t = f_t * C_{t-1} + i_t * C̃_t        # 更新细胞状态
o_t = σ(W_o · [h_{t-1}, x_t] + b_o)   # 输出门
h_t = o_t * tanh(C_t)                  # 隐藏状态

传感器应用场景

  • 手势识别:使用表面肌电(sEMG)或加速度计信号识别不同手势。手势动作持续0.5~2秒,包含复杂的时序肌肉激活模式,LSTM能捕捉动作的先后顺序和持续时间。
  • 语音关键词检测:在低功耗麦克风阵列上识别“你好”“停止”等唤醒词。语音信号是典型的时序依赖数据,LSTM对音素间的过渡建模优于CNN。
  • 工业过程异常检测:对温度、压力、流量等多变量过程信号进行时序建模,检测异常模式。LSTM能记住正常工况的长期模式,对缓慢漂移的异常更敏感。
压缩风险提示:LSTM的四个门控共享输入和隐藏状态,其矩阵乘法(W_f, W_i, W_C, W_o)占参数量90%以上。量化LSTM时,门控的sigmoid/tanh函数对低精度(如int8)非常敏感,可能导致梯度消失或门控饱和。建议优先采用QAT(量化感知训练)而非训练后量化(PTQ),并考虑将LSTM替换为GRU(参数量减少25%)或TCN。

3.3 TCN:因果空洞卷积的时序建模

核心原理

时序卷积网络(TCN)结合了CNN的并行计算优势和RNN的长程依赖建模能力。其核心是因果卷积(保证输出只依赖当前及过去时刻)和空洞卷积(指数级扩大感受野)。通过堆叠多层空洞卷积,TCN可以用较少的层数覆盖很长的历史窗口。例如,使用kernel_size=3、dilation=1,2,4,8的四层TCN,感受野可达1+2×(1+2+4+8)=31个时间步。

# TCN残差块示意
class TCNBlock(nn.Module):
    def __init__(self, in_ch, out_ch, kernel_size=3, dilation=2):
        super().__init__()
        self.conv1 = nn.Conv1d(in_ch, out_ch, kernel_size,
                               dilation=dilation, padding=(kernel_size-1)*dilation//2)
        self.conv2 = nn.Conv1d(out_ch, out_ch, kernel_size,
                               dilation=dilation, padding=(kernel_size-1)*dilation//2)
        self.relu = nn.ReLU()
        self.residual = nn.Conv1d(in_ch, out_ch, 1) if in_ch != out_ch else None
    def forward(self, x):
        out = self.relu(self.conv1(x))
        out = self.relu(self.conv2(out))
        return out + (self.residual(x) if self.residual else x)

传感器应用场景

  • 可穿戴步态分析:对足底压力或IMU信号进行步态相位分类(支撑期、摆动期)。TCN的因果结构确保实时推理时不会使用未来数据,适合在线处理。
  • 智能电表负荷识别:对电流/电压波形进行分类,识别不同家用电器的开关状态。TCN能捕捉电器启动时的瞬态特征和稳态周期特征。
  • 环境声音分类:对麦克风信号识别雨声、交通噪声、警报声等。TCN的并行计算比LSTM快3~5倍,适合实时性要求高的场景。
压缩优势:TCN的卷积结构天然适合剪枝和量化。由于没有循环依赖,可以完全并行训练,且每层卷积核独立,结构化剪枝后模型性能下降平缓。在同等精度下,TCN参数量通常比LSTM少30%~50%,是边缘部署的优选方案。

3.4 Transformer:全局注意力机制

核心原理

Transformer通过自注意力(Self-Attention)机制直接建模序列中任意两个位置之间的依赖关系,不受距离限制。对于长度为L的输入序列,自注意力计算复杂度为O(L²)。在传感器场景中,通常使用窗口化注意力或稀疏注意力来降低计算量。其核心公式为:

Attention(Q, K, V) = softmax(QK^T / √d_k) V

其中Q、K、V分别由输入序列线性变换得到,d_k为键向量的维度。多头注意力机制允许模型同时关注不同子空间的特征模式。

传感器应用场景

  • 多传感器融合分类:将加速度计、陀螺仪、磁力计、气压计等多源信号拼接为多通道序列,Transformer的全局注意力能自动学习跨传感器的时间对齐和特征交互。
  • 长序列生理信号分析:对长达数小时的ECG或EEG信号进行整体分类(如睡眠分期)。Transformer能捕捉远距离的周期性模式,如睡眠纺锤波与慢波之间的关联。
  • 工业声学异常检测:对工厂环境中的声音序列进行异常分类。Transformer能建模设备启停、周期性运转等长程模式。
部署挑战:Transformer的参数量和计算量通常比CNN/TCN大1~2个数量级。在MCU(如Cortex-M4,1MB Flash)上直接部署几乎不可能。压缩策略需多管齐下:知识蒸馏(将大Transformer蒸馏为小CNN或TCN)、注意力头剪枝(保留重要头,删除冗余头)、int8/int4量化。即便如此,Transformer更适合带有NPU或DSP的较高端边缘设备(如手机、树莓派)。

3.5 模型对比与选型决策

模型参数量级时序依赖长度计算复杂度压缩难度典型传感器场景
1D-CNN10K~500K短(<50步)低★☆☆☆☆(易)HAR、振动故障、ECG
LSTM50K~2M长(>100步)中★★★☆☆(中)手势、语音、过程异常
TCN30K~800K长(可配置)中低★★☆☆☆(较易)步态、负荷识别、环境声音
Transformer1M~50M极长(全局)高★★★★★(难)多传感器融合、睡眠分期

选型决策流程

  1. 确定时序依赖长度:如果分类只依赖最近10~20个采样点(如步态峰值检测),CNN足够;如果需要依赖过去1秒以上的上下文(如手势完整轨迹),选择TCN或LSTM。
  2. 评估硬件资源:MCU(Flash<512KB,RAM<128KB)优先选CNN或TCN;带NPU的边缘设备(如手机)可考虑Transformer。
  3. 考虑实时性:LSTM的串行推理不适合高帧率(>100Hz)场景;TCN和CNN可并行计算,延迟更低。
  4. 压缩成本预算:如果项目周期紧,选择CNN+PTQ量化即可;如果追求极致精度,选择TCN+QAT+结构化剪枝。

3.6 案例拆解:基于1D-CNN的工业振动故障分类与压缩

背景与约束:某工厂需要对旋转机械(电机转速1500rpm)进行在线故障监测,使用单轴加速度计(采样率2kHz)采集振动信号。目标是在STM32F407(Cortex-M4,192KB RAM,1MB Flash)上实现实时分类,要求推理延迟<10ms,模型占用Flash<300KB,RAM<50KB。

初始方案:团队最初使用LSTM(隐藏单元128,2层),参数量约180K,在验证集上准确率96.2%。但部署到STM32后发现:模型占用Flash 720KB(超出预算),推理延迟28ms(超出实时要求),且int8量化后准确率降至91.5%。

分析判断:振动信号的主要判别特征集中在100~500Hz频段,对应每个采样窗口(256点,128ms)内约12~64个完整振动周期。LSTM的长程依赖能力在此场景中属于“过度设计”——分类只需要最近2~3个振动周期的局部模式即可。

实际操作步骤:

  1. 将LSTM替换为1D-CNN:输入256点×1通道,使用3层卷积(kernel=7,5,3,stride=2),通道数32→64→128,最后接全局平均池化和全连接层。参数量降至42K。
  2. 训练后量化(PTQ):使用500条校准数据,将权重和激活量化为int8。准确率从96.0%降至94.8%(损失1.2%)。
  3. 结构化剪枝:按L1范数对第2层卷积核排序,剪除贡献最小的20%通道(64→51通道),微调5个epoch后准确率恢复至95.3%。
  4. 最终模型:Flash占用168KB(含量化表),RAM占用28KB,推理延迟4.2ms。

结果对比:

方案参数量Flash占用RAM占用延迟准确率
原始LSTM180K720KB96KB28ms96.2%
CNN+PTQ42K168KB28KB4.2ms94.8%
CNN+剪枝+微调34K136KB24KB3.8ms95.3%

风险与代价:剪枝后模型对高频噪声(>800Hz)的鲁棒性略有下降,需在预处理中增加低通滤波。此外,PTQ的校准数据需覆盖不同负载工况,否则量化误差会放大。

复盘经验:传感器时序分类中,模型容量应与任务复杂度匹配。LSTM的“强大”在资源受限场景中反而是负担。CNN/TCN的卷积结构更利于硬件加速和量化压缩。建议在项目初期就建立“目标硬件→模型选型→压缩策略”的联合评估流程,避免后期返工。

3.7 常见误区与总结

误区一:盲目追求高精度模型。在传感器分类中,数据噪声和标注误差通常使精度上限在95%~98%之间。使用参数量过大的模型(如Transformer)不仅浪费资源,还容易过拟合噪声。
误区二:忽略时序依赖长度的实际需求。并非所有传感器任务都需要长程依赖。例如,步态识别中单个步态周期约1秒(200个采样点),但判别特征集中在支撑期和摆动期的转换瞬间(约50个采样点),CNN即可胜任。
误区三:压缩后不做精度验证。量化或剪枝后必须使用独立的测试集(非训练集、非校准集)验证精度。建议保留10%的原始数据作为最终验证集,并监控每类别的召回率变化,防止少数类被压缩“牺牲”。
总结:传感器时序分类的模型选择应遵循“够用就好,压缩前置”的原则。CNN适合短时局部特征,TCN是长程依赖与部署效率的最佳平衡,LSTM在需要精细门控建模时保留,Transformer仅在硬件资源充裕且需要全局建模时考虑。后续章节将深入讲解针对这些模型的参数压缩技术,包括剪枝、量化、知识蒸馏和低秩分解,帮助读者在保持精度的前提下将模型压缩至可部署的规模。