ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

卷积神经网络与滚动轴承故障诊断:从时频图到特征可视化

2026/9/19 11:21:40 拓冰建站 浏览量
卷积神经网络与滚动轴承故障诊断:从时频图到特征可视化 简介针对滚动轴承故障特征难以准确表征的问题提出基于卷积神经网络的故障诊断方法。与奇异值分解、多尺度模糊熵等传统手段相比该方法从振动信号中自动学习深层特征提高了状态识别精度。文档对振动信号进行分帧、加窗、离散傅里叶变换及图像编码处理构建反映轴承故障状态的振谱图并设计深度卷积神经网络进行特征提取与模式识别网络采用已知故障样本及对应标签完成训练。全文从原理分析到实验验证完整呈现使用凯斯西储大学公开轴承数据测试识别准确率达到百分之百验证了该方法在机械设备状态监测中的有效性能够帮助读者系统掌握振动信号预处理、网络建模与实验验证的完整流程。资源仅包含一份PDF格式文档容量约为一点二八兆字节适合机械工程、智能制造及人工智能交叉领域的研究生、科研人员和工程技术人员阅读可用于故障诊断课题研究、论文写作或课程设计参考。该资源已有571人学习下载。1. 基于卷积神经网络的滚动轴承故障诊断从信号到决策的完整链路滚动轴承故障诊断的本质是一个从振动信号中提取退化特征并完成模式识别的过程。传统方法依赖人工设计特征时域的峰值因子、峭度频域的边带能量或是小波包分解后的频带熵——这些特征在恒定转速、单一工况下表现尚可一旦负载波动或转速变化特征分布发生偏移分类器精度便急剧下滑。卷积神经网络打破了这个瓶颈它绕开人工特征工程直接在原始信号或其变换域上学习判别性表示。但很多人忽略了一个关键事实CNN在轴承诊断上的表现上限不取决于网络深度而取决于输入构造方式——把1D振动信号不做处理直接送入Conv1D与先转换为时频图再送入Conv2D两者精度可能相差10个百分点以上。这篇文章要讲的就是一条完整可复现的落地路径输入如何构造、网络如何设计、参数如何设置、以及最关键的一步——如何确认网络学到了真正的故障特征而不是噪声。2. 为什么是卷积神经网络局部连接、权值共享与故障特征的天然契合滚动轴承的故障信号有一个显著特点故障特征在频域上是局部化的。外圈故障的特征频率约为转频的3.05倍内圈故障约为4.95倍滚动体故障则与保持架转速相关。这些特征频率以窄带能量形式集中在特定频段在时频图上表现为周期性出现的水平亮带。CNN的两个核心机制——局部连接和权值共享——恰好与这种信号的局部性相匹配。2.1 局部连接匹配故障冲击的短时相关性振动信号中一次故障冲击持续时间极短通常只有零点几毫秒到几毫秒。在40kHz采样率下一次冲击仅覆盖20~80个采样点。全连接网络把整段信号的所有采样点都纳入计算冲击特征被淹没在大量无关信息中。而卷积层只让每个神经元连接输入的一个局部区域——这个区域的大小由卷积核尺寸决定。当卷积核尺寸为64时它只关注64个连续采样点内的模式恰好覆盖一次故障冲击的时长。这种结构让网络天生适合捕捉短时冲击模式而不必学习如何从全局信号中手动筛选。2.2 权值共享对故障相位的平移不变性轴承故障的另一个特点是相位不确定性。同一型号轴承、同一故障类型故障点出现在圆周上的哪个位置是随机的这意味着故障冲击相对转频的相位不是固定的。全连接网络会把不同相位的同一故障当成不同类别需要大量样本才能学会“相位无关”的判断。卷积层通过权值共享天然解决了这个问题同一个卷积核在信号的不同位置滑动无论故障冲击出现在哪个时间点卷积核提取的特征是相同的。这给了CNN一个结构性的先验——故障特征应当是不依赖于位置的。2.3 层次化特征从冲击脉冲到故障类型的抽象链条CNN的层级结构对应着特征抽象的不同粒度。浅层卷积核学到的是短时的边缘、脉冲形状中层卷积核把相邻冲击组合成周期性模式深层卷积核则综合多个通道的信息判别这是内圈故障还是外圈故障。这种层次化结构与故障诊断的推理逻辑高度一致——先检测冲击再确认周期性最后判断故障位置。相比之下手工特征工程把这个链条强制压缩成单个标量特征丢失了中间层的丰富信息。2.3.1 LeNet-5 结构对轴承诊断的启发热词里的 LeNet-5 虽是为手写数字识别设计的但它的结构范式——卷积-池化-全连接——可以直接迁移到轴承诊断。LeNet-5 用 5×5 卷积核提取局部模式2×2 最大池化做降采样在轴承诊断中这个范式对应的是卷积核捕捉短时冲击波形最大池化选择响应最强的冲击位置全连接层完成故障类型映射。实际设计网络时不必照搬 LeNet-5 的层数但“卷积层逐层缩小空间尺寸、通道数逐层增加”的缩放规律是通用的。3. 输入构造决定诊断精度上限的预处理环节在CNN轴承诊断中预处理不是可选项而是精度差异的主要来源。同一个网络结构输入从原始波形换成频谱图测试精度可能从85%跳到97%。这一章讲清楚三种输入构造方式的原理、实现和适用场景。3.1 原始1D波形最直接但最难学直接把振动信号截断成固定长度送入Conv1D网络是最简单的做法。常见做法是取1024或2048个采样点作为一个样本对应40kHz采样率下的25.6ms到51.2ms信号。这个方案的优点是信息无损——所有原始信息都在缺点是网络必须自己学会从时域波形中分离故障冲击和噪声需要大量样本才能收敛。一个实用的改进是重叠采样。取采样步长为512、窗口长度为2048时相邻样本有75%的重叠一个1秒钟的样本段可以切出约60个训练样本相当于做了数据增强。这种做法在样本量不足时极为有效。3.2 频域特征图把故障特征从周期中解放出来原始波形的问题在于故障特征分散在整个时间轴上网络需要跨越大范围才能建立联系。快速傅里叶变换把周期信号能量集中在少数几个频点大幅降低了学习难度。实际操作时对1024个采样点做FFT得到512个频点取幅值谱作为输入向量再reshape为二维张量送入Conv2D网络。FFT输入的一个衍生方案是对数幅值谱——取log(1 amplitude)避免大能量频段主导梯度。这种方法在恒定转速场景下效果极好因为故障特征频率是确定的FFT能把它精确映射到固定频点上。3.3 时频图应对变转速工况的最稳选择大多数实际工况下转速并不恒定。转速变化导致故障特征频率等比漂移FFT谱上的峰值位置不再固定网络见过的故障频点就对不上了。短时傅里叶变换STFT同时保留时间和频率两个维度对转速波动有更强的容忍度。import numpy as np from scipy.signal import stft # 参数设置 fs 25600 # 采样率 25.6 kHz window hann # 汉宁窗主瓣窄、旁瓣衰减快适合机械信号 nperseg 256 # 每段FFT点数对应10ms时间分辨率 noverlap 200 # 78%重叠率增加帧间连续性 sample_rate, spec stft(signal, fsfs, windowwindow, npersegnperseg, noverlapnoverlap) # spec 的维度是 (129, T)129 个频率点T 个时间帧 # 转成CNN输入格式单通道灰度图 spec_db 20 * np.log10(np.abs(spec) 1e-8) # 转dB刻度压缩动态范围 spec_db (spec_db - spec_db.mean()) / spec_db.std() # 标准化 input_tensor spec_db.reshape(1, 129, T, 1) # (batch1, height, width, channel)代码的逻辑是STFT把一段振动信号切成多个短帧每帧做FFT得到一个时间和频率的二维矩阵。dB刻度的转换模仿人耳对声音强度的感知——机械故障的早期冲击能量较弱线性刻度下难以与人声、环境噪声区分dB刻度把微弱的边带结构放大到可见范围。标准化则确保不同轴承样本的幅值尺度一致避免大振幅样本主导梯度。参数设置上nperseg256对应约10ms的时间分辨率对转速在3000rpm以下转频50Hz的轴承而言每个转频周期内约有19个时间帧足以分辨故障冲击的周期性。noverlap20078%重叠是经验值——重叠太小时相邻帧差异过大时频图在时间方向不连续重叠太大则计算量增加但对精度提升有限。如果去掉dB转换直接使用线性幅值少数强频点的能量会压制故障边带这个问题在实测数据中很常见。另一个常见错误是把时频图直接resize成224×224塞给ImageNet预训练网络——STFT的物理分辨率会被resize打乱建议保持原始STFT尺寸或仅做整数倍缩放。3.3.1 时频图输入的小技巧合并多通道单通道时频图只用了一个传感器的数据。如果同一轴承同时采集了水平和垂直两个方向的振动信号可以分别做STFT然后作为两个通道合并成2通道输入。这比把两个信号拼接成一维向量再送入网络效果更好——卷积核能同时学习两个方向的联合特征比如水平方向出现冲击、垂直方向同时出现系统共振的耦合模式。加速度计测振动时这个做法基本不增加成本。4. 搭建CNN模型网络结构、训练参数与收敛策略输入构造完成之后网络设计成为决定精度上限的第二道关口。这里给出一个经过实测考验的模型结构以及每一层的设计理由。4.1 一个针对时频图输入的网络结构设计以129×128的STFT时频图为例网络结构设计遵循“空间尺寸逐层减半、通道数逐层翻倍”的原则import tensorflow as tf from tensorflow.keras import layers, Model def build_cnn(input_shape(129, 128, 1), num_classes4): inputs tf.keras.Input(shapeinput_shape) # Block 1: 捕获射频方向的局部纹理模式 x layers.Conv2D(16, (3, 3), paddingsame, activationrelu)(inputs) x layers.BatchNormalization()(x) x layers.MaxPooling2D(pool_size(2, 2))(x) # 129×128 - 65×64 # Block 2: 扩大感受野组合局部纹理为周期性模式 x layers.Conv2D(32, (3, 3), paddingsame, activationrelu)(x) x layers.BatchNormalization()(x) x layers.MaxPooling2D(pool_size(2, 2))(x) # 65×64 - 33×32 # Block 3: 捕捉跨频率-时间的全局联合特征 x layers.Conv2D(64, (3, 3), paddingsame, activationrelu)(x) x layers.BatchNormalization()(x) x layers.MaxPooling2D(pool_size(2, 2))(x) # 33×32 - 17×16 x layers.Flatten()(x) x layers.Dense(128, activationrelu)(x) x layers.Dropout(0.5)(x) outputs layers.Dense(num_classes, activationsoftmax)(x) model Model(inputs, outputs) return model model build_cnn() model.compile(optimizertf.keras.optimizers.Adam(learning_rate1e-3), losssparse_categorical_crossentropy, metrics[accuracy]) model.summary()几个需要特别说明的设计决策第一激活函数选用ReLU而非sigmoid。ReLU解决梯度消失问题让深层网络可以训练同时ReLU的稀疏激活性让模型倾向于用少量神经元表达强特征这与振动信号“少数频段承载故障信息”的特性一致。第二每个卷积块后接BatchNormalization而不是直接接池化。BN层在小batch训练时能稳定分布偏移轴承数据集往往只有几千个样本分布的稳定性对收敛影响很大。第三池化选择最大池化而不是平均池化。最大池化取邻域内的最大响应值相当于“只保留最强烈的冲击响应丢弃弱响应”——这对冲击型故障特征是最恰当的降采样策略。第四Dropout放在全连接层前且rate设为0.5。全连接层的参数量占总参数量的大部分128×17×16×64≈220万是过拟合的主要来源这里用较高的丢弃率做正则。4.2 训练的关键参数batch size、学习率与早停模型结构定了之后训练参数的设置直接决定最终精度。轴承故障数据集通常是几十秒到几分钟的振动信号切成的几千个样本规模远小于ImageNet因此需要特殊策略避免过拟合。参数推荐值设置理由batch size32样本量小大batch128会导致梯度方向过于确定模型容易过拟合训练集32提供一个适中的梯度噪声有正则化效果初始学习率1e-3过高的学习率在训练初期让loss震荡过低的收敛过慢Adam优化器自带适应性学习率1e-3是常用安全起点学习率衰减每20个epoch×0.5训练后期大学习率会在最优解附近震荡指数衰减让收敛更平滑早停 patience15个epoch验证集精度连续15个epoch不提升即停止训练节省时间并防止过拟合Dropout rate0.5全连接层的强正则化测试时网络等效于多个子网络的集成使用早停还有一个额外的收益它自动决定训练轮数避免人为设定 epoch 次数导致欠拟合或过拟合。监控指标建议选用验证集loss而不是验证集accuracy——accuracy在类别不平衡时会掩盖过拟合信号。4.3 训练过程中的常见陷阱轴承诊断训练中最容易出现的一个问题是“验证集精度很高但测试集精度断崖式下跌”。这通常不是网络结构问题而是样本切分方式造成的泄漏。相邻的振动样本段有大量重叠重叠采样率75%以上如果随机划分训练集和测试集来自同一连续信号段的样本会同时出现在两边模型看到的“测试数据”其实是训练数据的近复制品。正确的做法是按时间顺序划分——前70%时间段的样本做训练后30%时间段的样本做测试或者按不同工况/不同负载的数据做划分。另一个容易忽略的问题是不平衡采样。当采样率为25.6kHz、每类故障采集10秒数据时样本总数约在2000~8000之间但正常样本往往远多于故障样本因为设备大多数时间处于健康状态。处理不平衡的常见做法是对故障类别的样本做重叠采样增大切分步长、增加样本数对正常类别做随机降采样让各类别样本数接近。5. 故障特征可视化判断网络是否学到真实故障特征的关键验证模型训练完成后准确率98%并不能说明问题的能力边界。一个常见的糟糕情况是模型在实验室数据上表现完美部署到现场后崩溃——因为网络学到的是实验台的固有频率共振而不是故障本身的特征。特征可视化是识别这个问题的核心手段。5.1 卷积核响应可视化浅层到底看到了什么取训练好的模型第一层卷积核将时频图输入网络可视化每个卷积核的输出激活图。频率方向上如果某个卷积核的输出集中在一个窄频带——比如2000~2500Hz区间——说明它学到的是频带滤波器如果激活分散在整个时频图上说明该卷积核只是等效于一个全通滤波器没有学到有区分度的特征。import matplotlib.pyplot as plt # 提取第一个卷积层的输出 layer_name conv2d intermediate_model Model(inputsmodel.input, outputsmodel.get_layer(layer_name).output) # 取一个测试样本的激活 activation intermediate_model.predict(sample_tensor) # (1, H, W, 16) fig, axes plt.subplots(4, 4, figsize(12, 12)) for i in range(16): row, col divmod(i, 4) axes[row][col].imshow(activation[0, :, :, i].squeeze(), cmapviridis, aspectauto) axes[row][col].set_title(fKernel {i}) plt.tight_layout() plt.show()对16个卷积核的激活图逐一观察能直接确认网络是否学习到与故障冲击对应的频带特征。如果一个卷积核的输出在时频图某个横向位置持续高亮表明它捕捉到了该时间点出现的多次冲击——这种模式与轴承故障的周期性冲击特征吻合。5.2 类别激活图定位决策依据的物理含义梯度加权类激活映射Grad-CAM能标出输入时频图的哪些区域主导了分类决策把“网络关注什么”从黑盒变成可视化判断。def grad_cam(model, sample_tensor, target_class): # 找到最后一个卷积层 last_conv [l for l in model.layers if conv2d in l.name][-1] grad_model Model(inputsmodel.input, outputs[last_conv.output, model.output]) with tf.GradientTape() as tape: conv_output, predictions grad_model(sample_tensor) loss predictions[:, target_class] grads tape.gradient(loss, conv_output) pooled_grads tf.reduce_mean(grads, axis(1, 2)) # 加权求和得到热力图 conv_output conv_output[0] pooled_grads pooled_grads[0] for i in range(conv_output.shape[-1]): conv_output[:, :, i] * pooled_grads[i] heatmap tf.reduce_mean(conv_output, axis-1).numpy() heatmap np.maximum(heatmap, 0) heatmap (heatmap - heatmap.min()) / (heatmap.max() - heatmap.min()) return heatmapGrad-CAM 的逻辑链是取最后一个卷积层的输出计算损失对每个特征图通道的梯度梯度大小表示这个通道对分类目标的贡献程度用梯度对特征图做加权求和得到空间上的重要性分布。代码中pooled_grads返回每个通道的单一权重——梯度在所有空间位置上的均值然后将该权重乘回特征图的每个通道再跨通道求和得到最终的2D热力图。通过叠加热力图与原始时频图可以看到一个关键判断热力高的区域是否恰好位于理论特征频率对应的频带上。如果热力集中在特征频率±某个带宽范围内说明网络学到了物理解释清晰的故障特征如果热力全部集中在时频图的低频边缘区域则模型可能在利用转频的倍频信息做判断——这在恒定转速下有效但转速变化后就会失效。5.3 误分类样本分析边界在哪里对测试集里预测错误的样本做一个系统性分析是确定模型适用边界的直接方法。做法是对每个错误分类的样本打印真实标签、预测概率分布softmax输出向量和对应的时频图。观察预测概率分布是集中在一个错误类别上还是平摊在多个类别上前者说明该故障类型的特征模式过于相似比如内圈故障与外圈故障在轻负载下边带结构相近后者说明输入信号本身信息不足噪声过大或采样段过短。这种分析可以直接指导下一步的方向如果误分类集中在某一对类别之间考虑在STFT中提高频率分辨率增大nperseg如果是噪声主导考虑在STFT之前增加带通滤波如果特定转速下误分类率飙升则需要补充该转速的训练数据、或者改用同步平均等转速归一化技术。特征可视化不是研究者的自娱自乐而是决定模型能否从实验室走向现场的关键一步。本文还有配套的精品资源点击获取