尧图精选

东南大学齿轮箱数据集故障诊断全流程:数据采集到模型训练

🕒 发布时间:2026/10/2 1:22:49 📁 来源:尧图网络
如何利用东南大学齿轮箱数据集进行故障诊断从数据采集到模型训练全流程解析做旋转机械故障诊断这几年我最大的感受是真正卡住新人的往往不是算法而是“拿到数据集之后不知道从哪儿下手”。很多人下载了东南大学齿轮箱数据集打开一看是一堆振动波形网上教程又只讲模型结构中间的信号处理、数据预处理、训练集划分全是黑盒。这篇文章就以东南大学齿轮箱数据集为例从传感器采集原理讲起一直讲到模型训练落地把整个流程拆开揉碎。这套流程不挑数据集。你把样本换成自己的实测信号、西储大学轴承数据或者其他公开的齿轮箱数据只要照着这个链路走都能跑通非常适合刚入门的硕士生、做设备状态监测的工程师以及想系统梳理“故障诊断代码”套路的读者。1. 认识东南大学齿轮箱数据集先搞懂信号从哪来1.1 数据集的典型配置与采集环境东南大学齿轮箱数据集在故障诊断圈子里用得不少很多论文拿它当benchmark。它的核心价值在于信号类型比较真实通过加速度传感器采集齿轮箱壳体的振动信号覆盖正常、齿轮故障、轴承故障等多种状态。不同版本的具体工况配置会有差异常见的情况包括不同的转速档位、负载条件以及多种故障类型和损伤程度的组合。先提醒一句拿到任何公开数据集第一件事不是急着写模型而是读README和数据说明搞清楚三件事——传感器装在哪里、采样率是多少、标签怎么定义。传感器位置尤其重要因为同一个故障在测点1和测点2上的响应完全不同忽略安装位置就去提特征后面模型学出来的东西可能根本不可解释。数据集的信号形态通常是连续采样的振动波形。齿轮箱内部结构复杂齿轮啮合会产生固定频率的啮合振动轴承故障会激起高频冲击成分这些信号叠加在一起直接看图很难看出门道所以才需要后面的信号处理和特征提取。1.2 原始信号里到底藏着什么故障信息一段原始振动信号本质上是一个时间序列的加速度值。齿轮箱正常运转时信号呈现周期性的平稳波形出现断齿时每个啮合周期都会出现一个明显冲击轴承外圈损伤时冲击会以故障特征频率为间隔重复出现。这些特征在原始时域波形里往往不明显因为冲击成分能量小、淹没在齿轮啮合的大能量背景中。所以故障诊断的第一个核心思想叫做“解调”把低频的啮合振动和高频的故障冲击分离开。这个思路贯穿整个流程无论是做包络谱分析还是让深度学习模型自己从时频图里学特征本质上都是在干这件事。理解这一点之后你不会再想着“直接拿原始信号丢进网络就能出奇迹”。你需要先决定走传统特征工程路线还是走端到端深度学习路线。两条路我都测试过既有共性也有差异下面按流程逐段拆解。2. 数据采集环节参数选错后面全白搭2.1 传感器选型与安装位置虽然用公开数据集不需要自己搭采集系统但理解采集原理能让你更好地判断数据质量。工程上振动采集普遍用压电式加速度传感器选型看两个关键指标量程和频率响应范围。齿轮箱壳体振动通常在几十g以内但故障冲击峰值可能很高量程选小了会削波导致峰值被截断故障特征被直接削掉。传感器安装也有讲究。最理想是螺栓固定其次是磁吸底座最差的是手持探头。磁吸安装时要注意吸附面的平整度接触不良会引入高频谐振污染信号。如果你是用自己的实验台架采集数据传感器尽量靠近轴承座和齿轮啮合区域不要在箱体边缘或薄壁位置测那里结构模态干扰大数据里混入的噪音会让后续模型泛化能力明显下降。公开数据集的传感器位置一般已经固定但你要记录下这些信息因为在跨数据集验证或实际部署时传感器位置差异往往是模型失灵的首要原因。2.2 采样率、采样时长与工况记录采样率是整个采集环节里最核心的参数。根据奈奎斯特采样定理采样率至少要达到感兴趣最高频率的两倍工程上通常取5到10倍。齿轮箱振动分析的关注频带通常在10kHz以内所以公开数据集的采样率常见有20kHz、51.2kHz等配置。这个参数直接决定了你的频率分析上限比如采样率20kHz那有效分析频率只能到10kHz超过部分会混叠出假的频率成分。采样时长决定了频率分辨率。频率分辨率等于采样率除以采样点数采样1秒可以做到1Hz分辨率0.1秒只能做到10Hz分辨率。齿轮箱转频通常在几十Hz量级做包络谱分析时分辨率不够相邻的故障特征频率会糊成一团肉眼根本分不清。工况记录方面我的习惯是建一个表格记录负载、转速、采样率、传感器位置、故障类型和损伤程度。这一步看起来琐碎但实际做跨工况测试时没有这份记录就只能重新采集。用公开数据集时我也建议自己建一份这样的数据清单后面划分数据集、做泛化测试都要靠它。3. 数据预处理与数据集划分最容易出错的隐形环节3.1 滑动窗口切分的正确姿势原始信号是连续长序列不能直接整段丢给模型。标准做法是用滑动窗口把长信号切成固定长度的样本。窗口长度的选择直接影响模型能看到的“时间上下文”窗口太短可能截不到完整的一个旋转周期故障冲击信息丢失窗口太长样本数量少而且一个样本里包含太多变化标签不够纯净。实际操作中我的建议是至少覆盖2到3个旋转周期。假设转频是30Hz一个周期约0.033秒窗口取0.1到0.2秒就比较稳妥。切分时还要设置合适的重叠率常见选择是50%到75%重叠。重叠率高可以增加样本数量但也会引入更强的样本相关性后面划分数据集时要注意。切分之后要做一次“初筛”计算每个窗口的峰峰值和标准差剔除信号异常或接近静默的样本。这一步看着简单但能避免很多训练时的玄学问题。3.2 标准化到底怎么做才靠谱标准化是训练稳定性的基础。振动信号的幅值范围受传感器灵敏度影响不同批次、不同工况下的幅值可能差异很大直接输入网络会让模型优先拟合幅值差异而不是故障形态差异。常见做法是z-score标准化减去均值再除以标准差。但要注意标准化参数必须只在训练集上计算然后应用到验证集和测试集。如果在整个数据集上计算均值和标准差测试集信息就泄漏到了训练过程中虽然短期看着指标更好但部署到新数据上就露馅了。还有一个容易忽视的点有些教程把每个样本单独标准化这会破坏样本间的相对幅值关系。故障程度往往体现在幅值大小的差异上每个样本单独标准化等于把这个信息抹掉了。我个人的经验是按工况或按数据集整体计算标准化参数保留样本间相对差异模型学到的特征更有物理意义。3.3 数据泄漏训练集测试集划分的隐形大坑这是故障诊断领域最容易翻车的地方而且翻车了还很难察觉。问题出在滑动窗口切分相邻窗口之间高度重叠内容高度相似。如果随机划分训练集和测试集同一个连续信号切出来的窗口可能一部分进训练、一部分进测试模型实际上“见过”测试数据的片段。测试准确率能到99%一上现场就变成60%这就是典型的数据泄漏。正确的做法是按连续数据段划分或者按不同时间点采集的数据划分。不同工况、不同负载的数据天然适合作为独立测试集。具体说切窗口之前就要预留出独立的连续段作为测试集绝不能让同一个采集文件的内容同时出现在训练集和测试集里。发表论文或做实验对比时这一步一定要写清楚否则审稿人一眼就能看出问题。4. 特征工程从传统指标到信号语义4.1 时域特征简单但别小看传统故障诊断的第一步是提取时域特征。均值、峰值、均方根值、峭度、波峰因子、脉冲因子这几项是基础。均方根值反映信号整体能量水平对磨损类故障敏感峭度反映信号分布的“尖峰程度”对早期冲击类故障敏感因为冲击成分会让分布尾部变厚。这些特征的优点是计算简单、物理意义明确缺点是单个特征区分度有限。所以实际使用时通常组合成一维特征向量交给随机森林、SVM等传统分类器。另一个用途是做趋势分析连续监测同一测点的均方根值和峭度随时间的变化可以判断设备退化趋势这也是故障预测的核心思路。时域特征也有局限它把整个窗口的信息压缩成几个标量冲击的具体频率特征被抹掉了。所以传统诊断里时域特征之后还要做频域分析。4.2 频域与包络谱解调出故障特征频率快速傅里叶变换FFT能把信号从时域变到频域观察不同频率成分的能量分布。齿轮箱信号里齿轮啮合频率及其谐波是明显的峰值如果某阶谐波旁边出现边带说明存在调制现象通常对应齿轮局部故障。轴承故障早期冲击信号能量很弱直接在频谱里淹没在齿轮啮合成分中。这时候要用包络分析先用带通滤波器过滤到故障冲击所在的谐振频带再对滤波后的信号做Hilbert变换得到包络最后对包络做FFT得到包络谱。包络谱里会出现轴承故障特征频率及其谐波故障识别一目了然。这一步在代码里也就十来行的事但在整个流程里承上启下。做深度学习的同学往往跳过它但明白包络谱的原理对你理解时频图、理解卷积网络在学什么都有直接帮助。4.3 时频变换把信号变成“图像”给模型看振动信号往往是非平稳的单看频域会丢掉频率随时间变化的信息。于是就有了时频分析短时傅里叶变换STFT、小波变换、Wigner-Ville分布等把一维信号变成二维时频谱图。STFT的思想很简单把信号切成小段每段做FFT把结果按时间堆叠成一张图。横轴是时间纵轴是频率颜色深浅代表能量大小。这张图就是“信号的图像”可以直接作为卷积神经网络的输入。小波变换比STFT更灵活在低频处频率分辨率高、高频处时间分辨率高特别适合捕捉瞬态冲击。这里就呼应了热词里“从信号到语义的时序解析”这个概念。当你把振动信号变成时频图再让预训练图像模型去提取特征本质上就是在做“从信号到语义”的映射。雷同之处在于人类专家看包络谱识别故障特征频率深度网络从时频图里找能量聚集模式两者都是先解耦再识别只是实现方式不同。5. 模型训练全流程从零训练到迁移学习5.1 方案A1D CNN端到端训练端到端方案直接输入原始振动信号或窗口数组用一维卷积网络自动提取特征。1D CNN的卷积核沿时间轴滑动第一层卷积可以学到类似带通滤波器的特征后面的层逐渐组合成高层次的故障模式本质上就是在自动做“特征工程”。网络结构不必太复杂。以东南大学齿轮箱数据集为例输入长度1024或2048的窗口建议的结构是几组卷积池化堆叠然后接全连接层做分类——输入2048个点第一层64个卷积核、卷积核大小32池化后接128个卷积核、卷积核大小16再池化展平后接Dropout再接全连接输出层。类别数依据你的标签数量定正常、齿轮故障、轴承故障再加不同损伤程度常见是5到10类。训练参数方面优化器建议用Adam学习率初始1e-3配合ReduceLROnPlateau策略验证集损失不下降时自动降低学习率到原值的1/10。Batch size 64到128都行。Epoch先设50配合早停机制验证集指标连续10轮不改善就停。一个经验之谈如果模型在小数据集上训练不稳定先把网络结构做小减少卷积核数量和全连接层节点数稳定之后再逐步放大。5.2 方案B时频图加预训练模型做迁移学习用2D CNN处理时频图是另一个主流方案。你把信号通过短时傅里叶变换生成灰度图或彩色时频谱图然后输入到在ImageNet上预训练过的ResNet网络替换最后一层分类器用故障时频图微调整个网络。热词里反复出现的ResNet预训练模型就是干这个的。ResNet的残差结构在深层网络中有效缓解了梯度消失把预训练权重迁移到振动时频图上哪怕你只有几百张故障图片也能训练出不错的效果。这个方案的优势是收敛快、泛化好非常适合数据量不大但计算资源有限的场景。具体操作上时频图建议保存成224x224的三通道RGB图片。这里有个小技巧把STFT结果做对数幅值压缩图像对比度会大幅提高而不是直接用线性幅值。对数压缩模仿了人耳对声音响度的感知特性也让微弱故障冲击在图像上更容易被看到。实验对比下来同样模型结构对数幅值比线性幅值准确率能高2到3个百分点。5.3 训练技巧与参数实测记录我实际测试这套流程时用过128维特征的传统SVM和1D CNN做过对比。在数据量几千个窗口的前提下SVM能达到95%左右准确率1D CNN通常能做到98%到99%。差距看起来只有几个点但对早期微弱故障的召回率深度学习明显占优。训练时特别注意两点。第一是样本均衡齿轮箱数据集里正常样本往往远多于故障样本不处理的话模型会偏向多数类。处理办法包括对少数类样本过采样复制或加噪声增强或者对多数类样本降采样推荐先用如SMOTE这类过采样方法简单有效。第二是数据增强对振动信号做小幅幅值缩放、添加轻微高斯噪声、随机时移都能提升泛化能力。还有一个容易被忽视的点时序特征的重要性。单纯使用普通CNN每个窗口是独立判断的相邻窗口的故障模式其实存在时序相关性。进阶做法是接一层LSTM或Transformer让模型结合上下文判断。这也是“时序解析大模型与可解释故障诊断”的雏形思路——先用CNN或时频图提取空间特征再通过序列模型聚合时序上下文最后输出故障类别。如果你的故障存在渐变趋势比如早期磨损到严重磨损这种“时序感知”结构会比单纯分类器更有效。6. 常见问题与排查技巧实录我把实操中遇到过的问题整理成速查表基本都是踩过的坑按出场率排序问题现象根本原因解决办法训练集准确率99%测试集准确率骤降数据泄漏重叠窗口随机划分按连续数据段划分禁止同一采集文件跨集合模型对所有样本都预测为正常类类别严重不平衡过采样/欠采样使用加权损失函数训练曲线震荡loss上下跳动学习率过大或batch size太小降低学习率到3e-4以下适当增大batch size验证集准确率还可以实测新工况准确率低跨工况泛化能力不足用多个工况数据做数据增强或做域适应如对抗训练时频图训练效果反而不如原始信号图像分辨率或对数压缩没做好检查STFT参数改用对数幅值预训练权重配合图像归一化训练时显存不够序列模型加图像模型显存消耗大减小batch size用梯度累积或者只微调最后一两层结合东南大学齿轮箱数据集的使用场景最推荐先按“数据段划分”来做常规实验。具体操作假设每个工况采集了多个连续文件把前70%的文件做训练后30%的文件做测试。这样既保证样本量充足又不会把同一段信号切进两个集合。我实测这样处理后测试准确率会比随机划分低2到4个百分点但模型部署到新数据上的表现却扎实得多——这个代价很值得。关于模型训练工具链的选择再补充一句。如果你基础不错建议直接用PyTorch生态最全、调试最方便。在代码实现中统一通过设置随机种子来保证实验可复现这个细节在学术对比时尤其重要。我曾因为忘了固定种子同一套代码跑了两次结果差了一个多点排查了半天才发现是随机初始化的问题。我个人在实际操作中最深的体会是故障诊断项目里真正决定上限的不是模型多先进而是你对数据有多了解。花一天时间把传感器原理、采样参数、信号构成摸透模型训练反而半天就能搞定。很多人一上来就调Transformer结构结果连输入端是原始信号还是频谱图都没想清楚这就是本末倒置了。如果你手里的数据还是自己采集的那我建议你从传感器布置开始就按“故障特征要能被解调出来”这个标准来设计后面的模型训练会省太多事。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →