4. 信号预处理

在TinyML轴承故障诊断中,传感器采集到的原始振动信号几乎不可能直接用于模型训练。一方面,MEMS加速度计或压电传感器会引入直流偏置、温漂和趋势项;另一方面,工业现场存在电磁干扰、机械共振和环境噪声,这些成分会掩盖与轴承故障相关的特征频率(如外圈BPFO、内圈BPFI、滚动体BSF)。信号预处理的目标并非“美化”数据,而是通过确定性操作,将原始信号变换为能够真实反映轴承健康状态的、适合边缘端模型输入的干净序列。本章将系统讲解五项核心预处理技术:去趋势、去均值、滤波、重采样以及数据清洗与异常值处理,并结合TinyML部署约束(低算力、低内存、实时性)给出工程化建议。

轴承振动信号预处理链路与关键决策点 原始振动信号 fs=25.6kHz, 16bit 去趋势 + 去均值 消除温漂/直流偏置 x' = x - mean(x) - trend 滤波处理 低通/高通/带通 截止频率按故障特征设置 重采样 降采样至2kHz 抗混叠滤波 数据清洗与异常值处理 3σ准则 / MAD / 插值修复 / 剔除坏段 干净信号 → 特征提取 → 模型训练 每段样本长度1024/2048点 关键决策点 • 截止频率:BPFO×5~10 • 滤波器阶数:IIR 4阶 • 重采样目标:≥2.56×fmax • 异常阈值:|x|>5σ • 样本重叠率:50%

4.1 去趋势与去均值:消除低频漂移与直流分量

核心原理

轴承振动信号中的趋势项通常来源于传感器温漂、电荷放大器积分漂移或被测设备转速缓慢变化。趋势项属于极低频成分(<0.5Hz),若不消除,会在后续FFT分析中产生强烈的零频泄漏,掩盖低频段的故障特征。去均值是去趋势的最简形式,即减去信号的算术平均值,消除直流偏置。更一般的去趋势采用最小二乘拟合多项式(通常1~3阶)并从原始信号中减去拟合值。

操作流程

  1. 计算信号均值 \(\bar{x} = \frac{1}{N}\sum_{i=1}^{N}x_i\),若仅需去直流,直接执行 \(x'_i = x_i - \bar{x}\)。
  2. 若存在明显漂移(观察时域波形基线缓慢上升/下降),采用1阶或2阶多项式拟合趋势项 \(t_i = a_0 + a_1 i + a_2 i^2\)。
  3. 从原始信号中减去趋势项:\(x_{detrended} = x - t\)。
  4. 验证:去趋势后信号均值应接近0,且频谱中0Hz附近无突出尖峰。
工程提示:在TinyML设备上,去均值只需一次遍历计算均值,开销极小。多项式去趋势需存储系数,建议在PC端离线完成,边缘端仅做去均值。

案例拆解:温漂导致的外圈故障误判

某旋转机械振动监测系统使用MEMS加速度计(ADXL345)采集轴承座振动,采样率512Hz。设备启动后前5分钟,传感器温度从25℃升至45℃,输出信号基线从0V漂移至0.35V。若直接进行FFT,频谱中0~2Hz出现巨大能量,导致BPFO(约23.5Hz)特征被淹没。处理过程:先对每段1024点数据减去均值,再对连续10段数据做一阶多项式拟合,发现趋势项斜率约为0.0012V/s,将其扣除后,频谱中23.5Hz处出现清晰峰值,故障识别准确率从62%提升至94%。

常见误区

  • 误区一:认为去均值就是去趋势。当信号存在非线性漂移时,仅去均值无法消除趋势。
  • 误区二:过度去趋势。使用过高阶多项式(>3阶)可能消除真实的低频故障调制成分。
  • 误区三:对每段独立去均值导致段间不连续,破坏后续时域特征(如峰值因子)的稳定性。

4.2 滤波:低通、高通与带通的选择策略

核心原理

滤波的目的是保留与轴承故障相关的频带,抑制无关噪声。轴承故障特征频率通常集中在数百Hz至数kHz范围。例如,某轴承在转速1500rpm时,BPFO≈89.5Hz,BPFI≈135.7Hz,BSF≈58.3Hz,但故障冲击会激发结构共振频率(2~10kHz)。因此,滤波策略取决于后续特征提取方法:若提取时域统计特征(RMS、峰值),建议带通滤波至共振频带;若提取频域特征(包络谱),则需先带通再包络解调。

滤波器类型对比

滤波器类型传递函数特点适用场景TinyML实现代价
低通(LPF)保留0~fc成分去除高频噪声,保留轴频及谐波IIR 4阶约需8次乘加/样本
高通(HPF)去除fc以下成分消除趋势项和低频干扰同上
带通(BPF)保留fL~fH成分提取共振频带,用于包络分析级联LPF+HPF,约16次乘加/样本
带阻(BSF)抑制特定频带消除工频干扰(50Hz)较少使用

操作流程与参数确定

  1. 根据轴承型号和转速计算故障特征频率(BPFO/BPFI/BSF/FTF)。
  2. 确定共振频带:通过频谱分析观察高频段能量集中区域,或使用峭度图自动选择。
  3. 设计滤波器:在PC端使用scipy.signal.butter设计巴特沃斯滤波器,阶数通常4~6阶。
  4. 转换为差分方程系数(a, b),部署到TinyML设备。
# Python端设计带通滤波器示例
from scipy.signal import butter, sosfilt
fs = 25600  # 原始采样率
fL, fH = 2000, 8000  # 共振频带
sos = butter(4, [fL, fH], btype='bandpass', fs=fs, output='sos')
# 导出系数供嵌入式C代码使用
print(sos)

案例拆解:带通滤波+包络解调识别内圈故障

某电机轴承型号6205,转速1750rpm,理论BPFI≈157.9Hz。原始信号频谱中,该频率处幅值仅0.02g,被噪声淹没。通过峭度图发现共振频带在3.2kHz~4.5kHz。采用4阶巴特沃斯带通滤波器后,信号峭度从3.1提升至8.7。再对滤波信号进行Hilbert包络解调,包络谱中157.9Hz处出现明显峰值(幅值0.15g),故障特征清晰可辨。在Cortex-M4上,4阶IIR滤波处理1024点样本耗时约0.8ms,满足实时性要求。

风险提示:滤波器阶数过高(>8阶)会引入数值不稳定和相位失真,在16位定点MCU上尤其明显。建议使用级联二阶节(SOS)结构,并做定点化缩放。

常见误区

  • 误区一:滤波截止频率设置过高,导致保留大量无关高频噪声。
  • 误区二:使用FIR滤波器(阶数高、延迟大)在TinyML上不经济,IIR更合适。
  • 误区三:滤波后未检查相位延迟对时域特征(如峰值位置)的影响。

4.3 重采样:统一采样率与降低计算负载

核心原理

不同传感器或不同采集设备可能输出不同采样率(如12.8kHz、25.6kHz、51.2kHz)。为了统一训练数据,或为了降低TinyML端计算量,需要重采样。降采样(抽取)必须配合抗混叠低通滤波,否则高频成分会折叠到低频段,产生虚假频率。升采样(插值)则用于提高时间分辨率,但会增加数据量。

操作流程

  1. 确定目标采样率 \(f_{s\_new}\),应满足 \(f_{s\_new} \ge 2.56 \times f_{max}\),其中 \(f_{max}\) 为关心的最高频率。
  2. 若降采样,先设计截止频率为 \(f_{s\_new}/2\) 的低通滤波器。
  3. 使用多相滤波器或线性插值实现重采样。
  4. 验证重采样后信号频谱无混叠(观察高频段是否出现镜像)。

案例拆解:从25.6kHz降采样至2kHz

原始信号采样率25.6kHz,轴承故障特征频率最高约500Hz,共振频带在2~4kHz。若直接降采样至2kHz,需先低通滤波截止频率1kHz。使用scipy.signal.resample_poly实现:先进行10倍抽取(25600→2560),再进行1.28倍插值(2560→2000)。处理后信号长度从25600点降至2000点,TinyML端FFT计算量降低至原来的1/12.8,而故障特征频率(BPFO≈89.5Hz)保持清晰。

经验:在TinyML中,重采样通常离线完成。若需在线降采样,建议使用CIC滤波器(级联积分梳状滤波器),无需乘法器,适合硬件实现。

常见误区

  • 误区一:直接抽取而不加抗混叠滤波,导致频谱混叠。
  • 误区二:重采样后未重新校准时间轴,导致特征频率计算偏差。
  • 误区三:过度降采样导致共振频带信息丢失,包络分析失效。

4.4 数据清洗与异常值处理:保障训练数据质量

核心原理

工业现场采集的振动数据常包含异常值:传感器脱落导致的满量程值、电缆接触不良产生的尖峰脉冲、设备停机时的零值段、以及雷击或电磁干扰造成的随机毛刺。这些异常值若不处理,会严重扭曲统计特征(如RMS、峰值因子),并导致模型训练发散。数据清洗的目标是识别并修复或剔除异常样本。

异常值检测方法对比

方法原理适用场景计算开销
3σ准则超出均值±3倍标准差视为异常信号近似正态分布低(一次遍历)
MAD(中位数绝对偏差)基于中位数的鲁棒统计存在较多离群点时中(需排序)
Hampel滤波器滑动窗口内中位数±3σ局部尖峰脉冲中
基于峭度峭度>10提示冲击异常轴承早期故障与干扰区分低

操作流程

  1. 对每段样本(如1024点)计算均值、标准差、最大值、最小值。
  2. 若最大值超过均值±5σ,或样本中存在连续多个零值,标记为异常。
  3. 对于孤立尖峰,使用中值滤波(窗口3~5点)修复。
  4. 对于整段异常(如传感器脱落),直接剔除该样本。
  5. 记录异常样本数量及原因,用于数据质量报告。

案例拆解:电磁干扰尖峰导致模型误判

某工厂振动监测系统在电焊机启动时,采集信号中出现幅值达±10g的尖峰(正常信号±2g),持续约2ms。若直接计算峰值因子,该段样本峰值因子从4.2飙升至28.5,被误判为严重故障。处理过程:采用Hampel滤波器(窗口长度11,阈值3σ)检测并替换尖峰。修复后峰值因子恢复至4.5,模型判断为正常。进一步分析发现,尖峰出现频率与电焊机工作时间高度相关,因此在数据采集端增加硬件低通滤波(截止频率10kHz)后,尖峰完全消除。

风险提示:异常值处理需谨慎,过度清洗可能删除真实的早期故障冲击信号。建议保留原始数据备份,并记录清洗规则。

常见误区

  • 误区一:对所有异常值一律剔除,导致训练样本不足。
  • 误区二:使用全局3σ准则,忽略了信号非平稳性(转速变化时幅值波动大)。
  • 误区三:清洗后未进行可视化验证,可能误删有效数据。

4.5 预处理链路综合实战与TinyML部署要点

完整处理链路

在实际TinyML项目中,预处理链路通常按以下顺序执行:原始信号 → 去均值 → 带通滤波 → 降采样 → 数据清洗 → 样本分割(重叠率50%)→ 特征提取。每一步的参数选择需根据具体轴承型号和工况调整。

部署优化建议

  • 将去均值和滤波合并为一次遍历,减少内存访问。
  • 使用定点数(Q15格式)替代浮点数,在Cortex-M4上可提速3~5倍。
  • 滤波器系数预先计算并存储为常量数组,避免运行时计算。
  • 数据清洗中的3σ阈值可预先计算并固化,减少运行时统计计算。

案例闭环:从原始数据到可训练样本

背景:某风电齿轮箱轴承监测项目,使用ADI ADXL357采集振动,采样率51.2kHz,每次采集10秒。目标是在STM32L4上实现实时预处理并提取特征。

初始现象:原始信号存在明显温漂(基线从0.1g漂移至0.6g),且包含大量风噪引起的随机尖峰。

处理过程:

  1. 去均值:每段1024点减去均值,消除直流偏置。
  2. 带通滤波:根据轴承型号(NU222)计算BPFO≈112.3Hz,共振频带在3.5~5.5kHz,设计4阶巴特沃斯带通滤波器。
  3. 降采样:从51.2kHz降至6.4kHz(抗混叠滤波截止3.2kHz),数据量减少87.5%。
  4. 数据清洗:使用Hampel滤波器(窗口15,阈值4σ)修复尖峰,共修复23个样本点,剔除2段传感器脱落数据。
  5. 样本分割:每段2048点,重叠率50%,共生成约300个训练样本。

结果对比:未预处理直接训练,模型准确率仅71%;经完整预处理后,准确率提升至96.5%,且模型收敛速度加快40%。

代价与经验:预处理在STM32L4上耗时约3.2ms/样本,满足10ms实时要求。经验是:滤波参数需根据每台设备实际频谱微调,不可直接套用。

总结复盘

信号预处理是TinyML轴承故障诊断中最关键的一环,其质量直接决定模型上限。去趋势和去均值解决基线漂移,滤波解决信噪比,重采样解决计算效率,数据清洗解决数据质量。四者缺一不可,且需按顺序执行。在部署时,应优先保证滤波器的数值稳定性,并采用定点化加速。建议在PC端完成参数设计,在边缘端仅执行固定流程,以降低调试复杂度。