3. 信号采集与预处理

轴承故障诊断模型的端侧部署效果,首先取决于输入数据的质量。ONNX Runtime 本身只负责推理加速,它无法弥补因传感器选型不当、采样率设置错误或预处理流程缺失而导致的信号失真。本章聚焦于振动信号从物理世界到模型输入张量之间的完整链路,涵盖传感器选型、采样率设定、数据分割、去噪滤波与归一化等关键环节,并结合轴承故障诊断的实际场景,给出可落地的工程参数与操作流程。

振动信号采集与预处理工程链路 ① 传感器选型 IEPE压电式 灵敏度: 100mV/g 频响: 0.5Hz~10kHz 量程: ±50g 安装: 磁座/胶粘 ② 采样率设置 fs = 25.6 kHz 采样时长: 1s/段 每段点数: 25600 抗混叠滤波: 10kHz 满足奈奎斯特准则 ③ 数据分割 重叠率: 50% 窗口长度: 1024点 训练/验证/测试 = 6:2:2 避免数据泄露 ④ 去噪滤波 带通滤波: 1k~10kHz 小波阈值去噪 消除工频/随机噪声 保留故障特征频率 db4小波, 3层分解 ⑤ 归一化 Z-score标准化 均值=0, 标准差=1 按训练集统计量 避免数据泄露 适配CNN/Transformer ⑥ ONNX Runtime输入 Tensor shape: [1, 1, 1024] float32 内存连续布局 端侧推理就绪 完整链路:物理信号 → 数字信号 → 干净样本 → 标准张量 → 端侧推理

3.1 振动传感器选型:从物理量到电信号的转换

轴承故障诊断的源头是振动信号。传感器选型决定了信号的质量上限,后续任何算法都无法恢复因传感器带宽不足或量程不当而丢失的故障信息。在工业端侧部署场景中,最常用的是IEPE(Integrated Electronics Piezo-Electric)压电式加速度传感器,其内部集成电荷放大电路,输出低阻抗电压信号,可直接接入采集卡或边缘计算设备的模拟输入通道。

选型时需要重点评估四个核心参数:灵敏度、频率响应范围、量程和安装方式。灵敏度通常以mV/g表示,100mV/g是轴承振动测量的常用折中值——过低会淹没微弱故障特征,过高则容易在冲击工况下饱和。频率响应范围必须覆盖轴承故障特征频率(BPFO、BPFI、BSF、FTF)及其高次谐波,一般要求至少到10kHz。量程则需根据设备工况选择,普通电机选±50g,重型轧机或低速重载设备可能需要±100g以上。

参数推荐值选择依据风险提示
传感器类型IEPE压电式内置放大、抗干扰强、频响宽需恒流源供电(2~10mA)
灵敏度100 mV/g兼顾微弱信号与冲击信号过高易饱和,过低信噪比差
频响范围0.5Hz ~ 10kHz覆盖轴承故障特征频率低频漂移影响趋势分析
量程±50g常规旋转机械工况冲击载荷下需降额使用
安装方式磁座/胶粘快速部署、非破坏性磁座会衰减高频成分
工程风险:磁座安装虽然方便,但会引入约1~2kHz的谐振频率,导致高频段信号失真。若故障特征频率高于5kHz,建议采用螺纹安装或胶粘方式,确保传感器与轴承座之间刚性连接。

3.2 采样率设置与抗混叠滤波

采样率是连接连续物理信号与离散数字信号的桥梁。根据奈奎斯特采样定理,采样率必须大于信号最高频率的两倍。对于轴承故障诊断,故障特征频率通常在1kHz~10kHz之间,因此工程上常将采样率设为25.6kHz或51.2kHz,留出足够的频带余量以观察高次谐波和边频带。

采样率设置并非越高越好。过高的采样率会带来三个问题:数据量激增导致存储和传输压力;端侧推理时单次窗口覆盖的时间跨度缩短,可能丢失低速轴承的故障周期;功耗上升影响电池供电的边缘设备续航。因此,采样率应结合目标轴承的转速范围和故障类型综合确定。

// 采样率计算示例(Python伪代码)
max_freq = 10000  # 最高关注频率 10kHz
fs = 2.56 * max_freq  # 工程系数 2.56,而非理论值 2.0
print(f"推荐采样率: {fs} Hz")  # 输出 25600 Hz

# 每段数据时长与点数
duration = 1.0  # 秒
samples = int(fs * duration)  # 25600 点
print(f"每段采样点数: {samples}")

抗混叠滤波是采样前必须执行的硬件操作。采集卡内部应配备截止频率为采样率0.4~0.5倍的椭圆或巴特沃斯低通滤波器,将高于奈奎斯特频率的成分在模数转换前滤除。否则,高频噪声会折叠到低频段,形成虚假的故障特征,严重干扰诊断结果。

经验值:对于转速为1500rpm(25Hz)的电机轴承,BPFO通常在100~200Hz范围,但故障冲击会激发轴承座固有频率(2~6kHz)。因此采样率25.6kHz既能覆盖高频共振带,又不会产生过大的数据冗余。

3.3 数据分割:窗口长度、重叠率与数据集划分

连续采集的振动信号无法直接输入神经网络,必须分割成固定长度的样本。窗口长度决定了单个样本包含的振动周期数,直接影响模型对故障特征的感知能力。对于轴承故障,每个样本至少应包含10~20个旋转周期。以25.6kHz采样率、1500rpm工况为例,一个旋转周期为0.04s(1024点),因此窗口长度设为1024点(约1个周期)到2048点(约2个周期)是常见选择。

重叠率用于数据增强和样本数量扩充。相邻窗口之间设置50%的重叠,可以将样本数量提升约一倍,同时保持时间连续性。但需注意,重叠率过高会导致训练集和验证集之间存在数据泄露,使模型评估结果过于乐观。

  1. 窗口长度:1024点(短窗口,适合实时性要求高的场景)或2048点(长窗口,频率分辨率更高)
  2. 重叠率:50%为默认值,75%用于小样本增强,0%用于严格独立评估
  3. 数据集划分:按时间顺序划分,训练集60%、验证集20%、测试集20%,避免随机打乱导致的时间泄露
  4. 类别平衡:确保每个故障类别在各数据集中比例一致
数据泄露警示:若使用重叠分割,同一物理时刻的振动数据可能同时出现在训练集和测试集中。正确做法是:先按时间顺序划分原始连续信号,再在各段内部进行窗口分割。例如,采集10分钟信号,前6分钟做训练窗口,中间2分钟做验证窗口,最后2分钟做测试窗口。

3.4 去噪与滤波:从时域到频域的净化

工业现场的振动信号往往混杂着多种噪声:工频干扰(50Hz及其谐波)、随机白噪声、电磁干扰、其他机械部件的振动耦合等。去噪滤波的目标是保留轴承故障特征频率成分,同时最大限度抑制无关噪声。

带通滤波是最基础的手段。对于轴承故障,通常设置1kHz~10kHz的带通范围,既滤除低频的工频干扰和轴系不平衡成分,又抑制高频的结构噪声。巴特沃斯滤波器具有最大平坦的通带特性,适合保持信号幅值不失真;而Chebyshev I型滤波器过渡带更窄,但通带有纹波。

小波阈值去噪是更高级的时频分析方法。它通过小波分解将信号分解为不同尺度的近似系数和细节系数,对细节系数施加软阈值或硬阈值处理,再重构信号。小波去噪的优势在于能够同时保留信号的局部冲击特征(故障脉冲)和去除平稳噪声。

# 小波阈值去噪示例(PyWavelets)
import pywt
import numpy as np

def wavelet_denoise(signal, wavelet='db4', level=3):
    # 小波分解
    coeffs = pywt.wavedec(signal, wavelet, level=level)
    # 估计噪声标准差(使用第一层细节系数)
    sigma = np.median(np.abs(coeffs[-1])) / 0.6745
    threshold = sigma * np.sqrt(2 * np.log(len(signal)))
    # 软阈值处理
    coeffs_thresh = [coeffs[0]]  # 近似系数保留
    for i in range(1, len(coeffs)):
        coeffs_thresh.append(pywt.threshold(coeffs[i], threshold, mode='soft'))
    # 重构信号
    return pywt.waverec(coeffs_thresh, wavelet)

滤波器的阶数和截止频率需要根据实际信号频谱进行调整。建议在部署前对采集的原始信号做FFT分析,观察频谱中故障特征频率的位置和噪声底噪水平,再确定滤波参数。端侧部署时,滤波器系数可以预先计算并固化,避免在推理时进行复杂的在线计算。

3.5 归一化:让数据分布适配模型

归一化是深度模型输入的最后一公里。不同传感器、不同安装位置、不同工况下采集的振动信号,其幅值范围可能差异巨大。如果不做归一化,模型训练时梯度更新不稳定,推理时输入分布偏移也会导致精度下降。

常用的归一化方法有两种:Min-Max归一化将数据线性映射到[0,1]区间,适合信号幅值范围已知且稳定的场景;Z-score标准化将数据转换为均值为0、标准差为1的标准正态分布,更适合幅值波动较大的工业信号。对于轴承振动信号,Z-score是更稳妥的选择,因为它对异常冲击值不敏感。

方法公式适用场景端侧注意事项
Min-Max(x - min) / (max - min)幅值范围固定、无异常值需保存min/max参数
Z-score(x - μ) / σ幅值波动大、有冲击成分需保存μ/σ参数
鲁棒缩放(x - median) / IQR存在显著离群点计算量稍大
关键原则:归一化参数(μ、σ或min、max)必须仅从训练集计算,并保存为常量文件。在端侧推理时,直接加载这些参数对实时数据进行标准化。切勿在推理时重新计算统计量,否则会引入数据泄露并导致推理结果不稳定。

3.6 实战案例:电机轴承故障诊断的预处理全流程

某工厂一台55kW电机驱动离心泵,转速2980rpm(约49.7Hz),轴承型号SKF 6205。现场反映电机振动异常,需部署端侧诊断模型。我们按照以下流程完成信号采集与预处理。

第一步:传感器选型与安装。选用IEPE加速度传感器,灵敏度100mV/g,频响0.5Hz~10kHz,量程±50g。采用螺纹安装方式,直接固定在电机轴承座径向方向。使用磁座作为对比测试,发现磁座安装时5kHz以上频段衰减明显,最终确定螺纹安装。

第二步:采样参数设置。根据轴承故障频率计算:BPFO≈5.4×转速频率≈268Hz,BPFI≈8.6×转速频率≈427Hz。考虑到故障冲击会激发高频共振,设置采样率25.6kHz,采样时长2秒,每段51200点。采集卡内置抗混叠滤波器截止频率10kHz。

第三步:数据分割。连续采集10分钟信号,按时间顺序划分:前6分钟为训练段,中间2分钟为验证段,最后2分钟为测试段。窗口长度1024点,重叠率50%。训练段生成约675个样本,验证段约225个样本,测试段约225个样本。

第四步:去噪滤波。对原始信号做FFT分析,发现50Hz工频及其谐波幅值较大,同时存在宽频噪声底噪。设计4阶巴特沃斯带通滤波器,通带1kHz~10kHz。滤波后信号再经db4小波3层分解软阈值去噪,信噪比从12.3dB提升至18.7dB。

第五步:归一化与模型输入。使用训练段数据计算μ和σ,对所有样本执行Z-score标准化。最终每个样本shape为[1, 1, 1024],数据类型float32,内存连续排列,直接作为ONNX Runtime的输入张量。

结果对比:未做预处理直接输入模型时,诊断准确率仅82.3%;完成上述预处理后,准确率提升至96.8%。其中带通滤波贡献最大(+8.2%),小波去噪贡献+4.1%,归一化贡献+2.2%。

复盘经验:预处理流程并非越复杂越好。在本案例中,尝试过经验模态分解(EMD)去噪,但计算耗时增加3倍,准确率仅提升0.3%,最终放弃。端侧部署必须权衡算法效果与计算开销,小波去噪在ARM Cortex-A53上单段处理仅需8ms,完全满足实时性要求。

3.7 常见误区与总结

在信号采集与预处理环节,工程实践中存在几个高频误区,需要特别警惕。

  • 误区一:采样率越高越好。高采样率带来数据爆炸和功耗上升,应根据故障特征频率合理选择,25.6kHz对大多数轴承场景已足够。
  • 误区二:滤波器阶数越高越好。高阶滤波器引入相位失真和群延迟,可能扭曲故障冲击波形。4~6阶巴特沃斯是工程折中。
  • 误区三:归一化参数在线计算。推理时重新计算μ和σ会导致每次输入分布漂移,模型输出不稳定。必须固化训练集统计量。
  • 误区四:忽略数据分割的时间连续性。随机打乱样本会导致同一物理事件的数据同时出现在训练和测试集,评估结果虚高。
  • 误区五:预处理流程在端侧重复实现。滤波系数、归一化参数应预先计算并固化,端侧只做乘加运算,避免引入浮点库依赖。

总结而言,信号采集与预处理是轴承故障诊断模型端侧部署的基石。传感器选型决定信号质量上限,采样率设置平衡信息量与数据量,数据分割确保模型评估可信,去噪滤波提升信噪比,归一化适配模型输入分布。每一步都需要结合具体工况和部署约束进行工程权衡,最终形成一套稳定、高效、可复现的预处理流水线。