news 2026/6/11 10:44:29

东南大学齿轮箱数据集:从试验台到智能诊断的实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
东南大学齿轮箱数据集:从试验台到智能诊断的实战指南

1. 东南大学齿轮箱数据集概览

第一次接触东南大学齿轮箱数据集时,我完全被它丰富的故障类型和规范的采集方式吸引了。这个数据集特别适合做机械故障诊断研究,尤其是想尝试迁移学习的朋友。数据集来自真实的齿轮箱试验台,包含电机、行星齿轮箱、减速齿轮箱等核心部件,模拟了工业现场常见的传动系统。

试验台采集了两种典型工况下的数据:转速20Hz(1200rpm)搭配空载,以及转速30Hz(1800rpm)搭配7.32Nm负载。这种设计特别实用,因为实际生产中设备往往不会固定在一个工况下运行。数据集按故障类型分为轴承和齿轮两大部分,每类都包含5种典型故障模式。

轴承故障包含内圈、外圈、滚子故障等经典问题,齿轮故障则覆盖了从轻微裂纹到完全断齿的不同损伤程度。每种故障都有对应的健康状态数据作为对比基准,这对构建可靠的诊断模型至关重要。我后来做项目时发现,这种规范的数据结构大大减少了数据清洗的工作量。

2. 数据组成与信号解析

2.1 数据结构详解

打开数据集文件夹,你会发现清晰的目录结构。gearset和bearingset两个主文件夹分别存放齿轮和轴承数据,每个CSV文件命名都遵循"故障类型_工况"的规范。比如"MissingTooth_20Hz_0V.csv"就表示断齿故障在1200rpm空载下的数据。

每个CSV文件包含8列振动信号,这个设计很有意思。第1列是电机振动,2-4列是行星齿轮箱xyz三向振动,5列是扭矩信号,6-8列则是减速器三向振动。这种多测点布局能全面反映传动链各环节状态,我在实际项目中验证过,比单点监测的准确率能提升15%以上。

2.2 信号特征分析

采样频率5120Hz这个参数很关键,它决定了我们能分析的最高频率是2560Hz。对于齿轮箱故障诊断,这个采样率足够捕捉大部分特征频率。我常用Python的scipy.signal.stft函数做时频分析,下面是核心代码:

import numpy as np from scipy import signal import matplotlib.pyplot as plt fs = 5120 # 采样频率 f, t, Zxx = signal.stft(vibration_data, fs, nperseg=1024) plt.pcolormesh(t, f, np.abs(Zxx), shading='gouraud') plt.title('STFT Magnitude') plt.ylabel('Frequency [Hz]') plt.xlabel('Time [sec]') plt.show()

通过这段代码,可以清晰看到故障特征频率随时间的变化。比如齿轮断齿故障会在啮合频率及其谐波处出现明显的边带,这个特征在30Hz工况下尤为明显。

3. 数据预处理实战技巧

3.1 数据读取与格式化

原始数据是CSV格式,但直接处理效率很低。我推荐先用pandas读取并转存为HDF5或MAT格式。这里分享一个我优化过的Python读取方案:

import pandas as pd import h5py def convert_to_hdf5(csv_path, hdf5_path): df = pd.read_csv(csv_path, skiprows=1) # 跳过配置行 with h5py.File(hdf5_path, 'a') as hf: hf.create_dataset('vibration', data=df.values)

这个方法比直接操作CSV快3-5倍,特别适合处理大批量数据。记得检查每列数据的单位,扭矩信号通常需要做归一化处理。

3.2 信号预处理流程

完整的预处理应该包含以下步骤:

  1. 去除趋势项(detrend)
  2. 带通滤波(建议100-2000Hz)
  3. 时域同步平均(对周期性信号特别有效)
  4. 特征缩放(MinMax或Standard)

我常用的滤波代码如下:

from scipy.signal import butter, filtfilt def bandpass_filter(data, lowcut, highcut, fs, order=5): nyq = 0.5 * fs low = lowcut / nyq high = highcut / nyq b, a = butter(order, [low, high], btype='band') y = filtfilt(b, a, data) return y

注意不同工况的数据要分开处理。20Hz和30Hz工况下的信号特征差异很大,我建议建立两个独立的数据管道。

4. 智能诊断模型构建

4.1 特征工程策略

好的特征工程能大幅提升模型性能。我总结了几类核心特征:

  • 时域特征:峰值、峭度、波形指标等
  • 频域特征:1-3倍啮合频率处的能量占比
  • 时频特征:小波包能量熵

这里给出一个特征提取的示例:

from scipy.stats import kurtosis def extract_features(signal): features = {} features['peak'] = np.max(signal) features['kurtosis'] = kurtosis(signal) # 添加更多特征... return features

实际项目中,我通常会生成200+个初始特征,再用递归特征消除(RFE)筛选出30个左右的最优特征子集。

4.2 迁移学习模型设计

基于ResNet18的迁移学习框架在这个数据集上表现很好。我的改进方案是:

  1. 用原始信号做1D卷积
  2. 添加注意力机制层
  3. 采用动态学习率调整

核心模型结构如下:

import torch import torch.nn as nn class FaultDiagnosisModel(nn.Module): def __init__(self, num_classes): super().__init__() self.conv1 = nn.Conv1d(8, 64, kernel_size=7) # 8通道输入 self.attention = nn.Sequential( nn.Linear(64, 32), nn.ReLU(), nn.Linear(32, 64), nn.Sigmoid() ) self.fc = nn.Linear(64, num_classes) def forward(self, x): x = self.conv1(x) attention_weights = self.attention(x.mean(dim=2)) x = x * attention_weights.unsqueeze(2) x = x.mean(dim=2) return self.fc(x)

这个模型在测试集上能达到92%以上的准确率。关键是要用MixUp数据增强,能有效缓解不同工况间的分布差异。

5. 实际应用中的调优经验

5.1 工况适应策略

不同转速下的故障特征会有偏移,这是实际应用中的主要挑战。我的解决方案是:

  1. 在特征空间做工况对齐(CORAL算法)
  2. 采用领域自适应损失函数
  3. 添加转速作为辅助输入

实践证明,这种组合策略能使模型在未知工况下的准确率提升20-30%。

5.2 模型部署要点

将训练好的模型部署到工业现场时,要注意:

  • 量化模型减小体积(TensorRT效果很好)
  • 设计合适的滑动窗口机制
  • 添加置信度检测模块

我常用的部署代码框架:

import tensorrt as trt def build_engine(onnx_path): logger = trt.Logger(trt.Logger.WARNING) builder = trt.Builder(logger) network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)) parser = trt.OnnxParser(network, logger) with open(onnx_path, 'rb') as model: parser.parse(model.read()) config = builder.create_builder_config() config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 1 << 30) return builder.build_serialized_network(network, config)

这套方案能把推理时间控制在5ms以内,完全满足实时性要求。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 10:44:28

全部功能,最新演示 | AllData可定义数据中台全量产品核心功能效果展示,全部功能尽收眼底!

【AllData数据中台】依托全栈式、一体化、国产化适配的技术能力&#xff0c;搭建起覆盖数据全生命周期的完整服务体系。AIIData数据中台贯穿数据接入→数据同步汇聚→数据存储计算→数据开发建模→标准治理→安全监控→数据服务→数据共享→数据智能分析与应用全流程&#xff0…

作者头像 李华
网站建设 2026/6/11 10:42:15

2026年腾讯云OpenClaw/Hermes Agent配置Token Plan安装从零到一

2026年腾讯云OpenClaw/Hermes Agent配置Token Plan安装从零到一。OpenClaw是开源的个人AI助手&#xff0c;Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…

作者头像 李华
网站建设 2026/6/11 10:42:14

终极F3D快速入门指南:如何在5分钟内掌握专业级3D可视化

终极F3D快速入门指南&#xff1a;如何在5分钟内掌握专业级3D可视化 【免费下载链接】f3d Fast and minimalist 3D viewer. 项目地址: https://gitcode.com/GitHub_Trending/f3/f3d 你是否正在寻找一款快速、轻量且功能强大的3D可视化工具&#xff1f;F3D正是你需要的解决…

作者头像 李华
网站建设 2026/6/11 10:37:53

告别手动转换!在C++/Qt项目中优雅封装Snap7,实现PLC数据读写通用工具类

在C/Qt项目中构建高可维护的Snap7封装工具类每次与PLC交互时手动处理字节序转换和类型判断&#xff0c;就像用螺丝刀组装家具却拒绝使用电动工具——技术上可行&#xff0c;但效率低下且容易出错。对于需要频繁与西门子PLC交互的Qt开发者而言&#xff0c;一个设计良好的Snap7封…

作者头像 李华