ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

三十多个开源故障诊断数据集盘点:轴承、齿轮箱到工业机器人的实用指南

三十多个开源故障诊断数据集盘点:轴承、齿轮箱到工业机器人的实用指南 做故障诊断这个方向的人十有八九都被同一件事卡过实验台还没搭起来论文周期已经走过一半想自己采集轴承故障数据要么找不到带缺陷的试验件要么舍不得拿完好的设备去“开刀”。后来大家基本达成一个默契——先用公开数据集把方法验证通了再谈真实场景落地。这篇文章把我这些年陆续整理、使用过的三十多个开源故障诊断数据集按设备类型分好类附上每个数据集的实际体验、常见误区和可以直接抄的 Python 处理代码。不管你是做轴承故障诊断、齿轮箱诊断、电机诊断还是做基于数据驱动的加工产线工业机器人内部轴承故障诊断这类比较新的方向都建议先收藏再结合实际需求挑选。1. 为什么故障诊断方向这么依赖公开数据集1.1 数据驱动诊断的基本盘是“样本”过去做故障诊断主流思路是振动分析加专家经验测点怎么布、故障特征频率怎么算、包络谱怎么看老师傅心里都有一本账。但这些年基于数据驱动的方法彻底改变了玩法——深度学习、特征迁移、域自适应核心全是数据。一个轴承故障分类模型输入输出的逻辑很简单给一段振动信号判断它来自正常、内圈故障、外圈故障还是滚动体故障。但模型要稳定每个类别至少得有成百上千个样本还得覆盖不同转速、不同负载、不同损伤程度。这就引出一个很现实的问题故障样本从哪来现实设备本身不允许出事工业现场的故障数据又散在各个厂区里很难集中。自己搭实验台做加速寿命试验一套跑下来动辄几十天电机、轴承、加载机构的成本也不低。最“划算”的办法就是用别人已经花钱、花时间做好的开源数据集把方法验证清楚再谈自己的数据怎么适配。1.2 自己采集故障数据到底难在哪我早期带学生做项目时最深的体会是采集健康数据很容易采集故障数据很难。你可以让一台电机空转一整天传感器记录的全是正常状态但故障状态怎么制造常见做法是用电火花加工、激光切割或者人工钻削在轴承滚道上制造缺陷这需要专门的加工手段而且做出来的缺陷形状和实际疲劳剥落完全不同。更接近真实故障的加速寿命试验需要在专门试验台上让轴承跑到自然失效过程不可控、周期长、样本少。所以公开数据集的价值不只是“省事”它其实是把学术界公认的、经过验证的实验流程固化了下来。大家用同一份数据比较方法时才有共同基准。1.3 公开数据集能覆盖哪些场景从我这几年接触到的情况看公开故障诊断数据基本覆盖了旋转机械的主要部件滚动轴承、齿轮箱、电机、泵、液压系统、刀具磨损、甚至整机级的涡扇发动机退化过程。这些数据集也对应着主流的故障诊断任务——故障分类、退化趋势预测、剩余寿命预估、跨工况泛化验证。把这三十多个数据集吃透你在故障诊断方向上至少能站稳脚跟。2. 三十多个开源数据集全景盘点按设备分类2.1 滚动轴承类样本最多、最卷也最好用滚动轴承是故障诊断领域最经典的被研究对象公开数据集数量也最多。这也是刚入门的人最应该先接触的一类。数据集名称故障类型规模/采样率获取渠道CWRU 西储大学轴承数据集内圈、外圈、滚动体、正常12kHz / 48kHz多负载多转速官网IMS 辛辛那提大学轴承全寿命数据集自然退化至失效20kHz4轴承多组试验NASA数据仓库XJTU-SY 西安交通大学轴承数据集自然退化至失效25.6kHz15个全寿命样本官方/GitHub镜像Paderborn 帕德博恩大学轴承数据集人工损伤、真实损伤、健康64kHz同步振动电流高校官网PRONOSTIA / FEMTO-ST 轴承退化数据集自然退化至失效25.6kHz加速寿命试验IEEE PHM 2012网站MFPT 学会轴承数据集内圈、外圈、正常多种载荷工况MFPT官网申请Ottawa 渥太华轴承数据集多种轴承故障多工况振动信号高校公开Kaggle 轴承故障检测数据集滚动轴承异常检测振动加速度信号Kaggle平台Mendeley 轴承故障数据集人工缺陷为主按作者不同而不同Mendeley Data平台NREL 风电轴承数据集风电主轴/齿轮箱轴承风场实测振动NREL公开数据这里面CWRU是绝对意义上的“标准考题”后面我会单独拆。IMS和XJTU-SY更偏退化预测适合做剩余寿命方向。Paderborn数据的特点是同时有“人工缺陷”和“真实退化缺陷”非常适合研究仿真数据与真实数据之间的迁移问题。2.2 齿轮箱与传动系统类变转速工况是最大难点齿轮箱故障诊断比轴承难在两点一是转频、啮合频率和边频带混在一起信号复杂二是很多齿轮箱工况是变转速、变负载的特征不稳定。数据集名称故障类型规模/采样率获取渠道SEU 东南大学齿轮箱数据集齿轮裂纹/断齿/缺齿、轴承故障8kHz左右双工况GitHub/KagglePHM 2009 齿轮箱挑战赛数据集齿轮轴承复合故障66.7kHz多种转速PHM Society官网风电齿轮箱公开数据集齿轮磨损、轴承故障风场SCADA/振动高校/NREL公开Mendeley 齿轮箱故障数据集局部齿故障多档采样率Mendeley DataFigshare 差速器齿轮箱数据集齿轮点蚀/断齿实验室台架Figshare平台SEU是我个人最推荐用来入门齿轮箱分类的数据规模适中、标注清楚。PHM 2009挑战赛数据则更适合做复合故障诊断因为它的健康状态是齿轮和轴承故障的组合分类难度明显更高。2.3 电机与电气类故障不一定靠振动体现电机的故障诊断有两条路线一条还是测轴承振动另一条是电流特征分析也就是MCSA。电流信号的好处是不用额外安装传感器直接从变频器或驱动端取电流波形就行。数据集名称故障类型规模/采样率获取渠道MCSA 电机电流特征数据集转子断条、气隙偏心、轴承故障电流波形多种工况高校公开异步电机多故障数据集电气机械复合故障振动电流同步Mendeley Data伺服电机/变频电机故障数据集编码器、绕组、轴承故障多通道电流/振动高校/期刊附件Timken 电机轴承数据集轴承早期损伤振动加速度北美高校公开说实话电机类数据的公开程度不如轴承很多论文把数据集放在论文附件或者作者主页里需要靠检索去翻。但电机是工业产线里数量最多的旋转设备这类数据非常珍贵。如果要做“加工产线工业机器人内部轴承故障诊断”这种课题电机侧与机械侧同步采集的数据往往更有参考价值。2.4 泵、液压系统与压缩机类强背景噪声下的诊断泵和压缩机的工作环境比实验室恶劣得多流体噪声、气穴、脉动都叠加在振动信号上。想检验算法能不能在强噪声下工作这类数据是绕不开的。数据集名称故障类型规模/采样率获取渠道UCI 液压系统状态监测数据集蓄能器、阀门、泵、泄漏故障2205个周期压力/流量/温度UCI机器学习库离心泵故障数据集汽蚀、叶轮磨损、轴承故障多工况振动信号Mendeley Data轴向柱塞泵数据集柱塞磨损、配流盘磨损振动压力脉动Figshare/Mendeley往复压缩机数据集气阀故障、活塞环磨损振动缸压高校公开UCI那个液压系统数据集虽然不是典型的振动数据但它是少见的“多部件同时可诊断”的数据一份数据里同时标了蓄能器、阀门、泵和泄漏四种部件状态做多任务诊断或者联合诊断非常合适。2.5 加工产线与机器人类贴近工业场景的新方向最近这些年随着工业机器人大量进入产线机器人关节内部的轴承故障诊断受到不少关注。和普通电机轴承不同机器人关节轴承工作在做往复、加减速频繁的工况振动信号里还混着减速器啮合噪声诊断难度更大。而且这块的公开数据正在快速增加搜索“基于数据驱动的加工产线工业机器人内部轴承故障诊断方法数据集”这样的关键词可以在Zenodo、Figshare、GitHub上找到新近开源的数据集。数据集名称故障类型规模/采样率获取渠道PHM 2010 铣刀磨损数据集刀具磨损量预测多传感器振动/力信号PHM Society官网CNC 刀具磨损数据集刀具后刀面磨损振动电流声发射Kaggle/GitHub工业机器人关节轴承数据集关节轴承故障多通道振动多TCP位姿Zenodo/Figshare加工中心主轴故障数据集主轴轴承故障振动转速编码器高校公开如果你关注机器人方向建议直接用“industrial robot bearing fault”在Zenodo和Figshare上搜能搜到不少新数据。这个方向的难点在于机器人不同位姿下同一轴承故障的振动传播路径完全不同所以做跨位姿泛化验证非常重要。2.6 整机与特殊装备类面向寿命预测和系统级诊断数据集名称故障类型规模/采样率获取渠道C-MAPSS 涡扇发动机退化数据集整机性能退化/RUL预测仿真数据4个子集NASA官网SECOM 半导体制造过程数据集制造过程异常检测1567个样本590维特征UCI机器学习库风力发电机SCADA数据集整机状态监测海量SCADA历史数据Kaggle/风场公开变压器DGA数据集变压器内部潜伏故障油中溶解气体浓度论文附件/公开网盘铁路转向架轴承数据集轴承故障多通道振动高校公开柴油机多故障数据集失火、喷油器故障振动缸压转速FigshareC-MAPSS虽然是用仿真模型生成的发动机退化数据但它是剩余寿命预测方向最重要的benchmark做RUL的人基本都要跑一遍。变压器DGA数据则完全是另一类问题——输入不是波形而是几种气体浓度本质上是个表格分类任务适合给做传统机器学习的朋友当练手数据。3. 五个最值得深入研究的公开数据集3.1 CWRU论文里的“标准考题”CWRU数据集的地位不需要多讲。它由美国凯斯西储大学电机与电子工程系发布实验对象是一台驱动的感应电机通过电火花加工在轴承上制造单点缺陷分为内圈、外圈、滚动体三类故障。每个故障位置又有0.007英寸、0.014英寸、0.021英寸、0.028英寸几种缺陷直径负载覆盖0到3马力转速从1730到1797转/分不等。文件命名本身就是一个信息量很大的编码比如12k_Drive_End_IR007_0_1797.mat拆开看就是采样率12kHz、驱动端加速度计、内圈故障Inner Race、缺陷直径0.007英寸、负载0马力、转速1797转/分。看懂了命名规则批量处理就很简单。CWRU最大的坑在于“太干净”。它每个类别都是在恒定工况下单点故障采集的信号平稳、信噪比高随便拿个CNN都能刷到99%以上。也正因为这样很多审稿人和工程师现在不太把CWRU上的精度当回事更看重你在跨负载、跨工况上的表现。我一般建议把CWRU当成“开发集”用来调通代码和验证模型结构真正检验算法要放到跨工况任务上。3.2 Paderborn与XJTU-SY从“人工故障”走向“真实退化”帕德博恩大学的数据集把故障分成了三类健康、人工损伤、以及加速寿命试验得到的真实损伤。人工损伤又包括电火花加工、钻孔、电动刻印等不同制造方式真实损伤则是让轴承在试验台上跑出来的疲劳剥落。采样率64kHz同时记录了振动和电机电流。这个数据集对研究“仿真域到真实域”的迁移学习特别有价值。你可以用人工损伤的样本做训练用真实损伤的样本做测试看看模型能不能跨过“制造方式不同”这个鸿沟。实际操作中很多人会发现精度掉得很厉害这正是值得写文章的点。西安交通大学的XJTU-SY数据集则完全是全寿命数据。15个轴承分别在三种转速/载荷组合下跑完整个寿命周期每次采样25.6kHz、持续1.28秒每1分钟记录一次直到轴承失效。它比一般的“故障分类”数据多了一个时间轴——同一个轴承从健康到故障再到失效的全过程都在里面。所以它最主流的用途是剩余寿命预测和退化趋势建模。3.3 PRONOSTIA/FEMTO-ST加速寿命试验的经典样本PRONOSTIA平台是法国FEMTO-ST实验室搭建的专门做轴承加速退化试验的平台也是IEEE PHM 2012预测挑战赛的数据来源。它在很短时间内给轴承施加高负荷让轴承快速失效同时记录振动信号。采样率25.6kHz每10秒记录一段。这个数据集厉害的地方在于它给出了明确的“失效阈值”定义——振动加速度超过一定幅值就认为轴承失效剩余寿命从当前时刻到失效时刻计算。如果你做的是RUL预测而不是分类这份数据比CWRU合适得多。要注意的是PRONOSTIA的样本数不多按训练集6个轴承、测试集11个轴承来划分所以算法在小样本条件下的稳定性非常重要。3.4 SEU与PHM 2009齿轮箱复合故障的入门与进阶东南大学的SEU齿轮箱数据是入门齿轮箱诊断最好的起点。它的实验台包含一级齿轮箱分别采集齿轮故障和轴承故障的数据工况有高低速两组采样率8kHz左右。数据量适中故障类型清晰适合先跑通一套完整的“信号处理特征提取分类器”流程。PHM 2009挑战赛数据则是进阶版。它的齿轮箱包含了多种齿轮损伤和轴承损伤的组合状态采样率66.7kHz转速还有变化。这个数据集最能体现复合故障诊断的难度多个故障同时存在时单一特征很难把状态区分开。如果你想把深度学习方法做扎实建议把SEU当基础验证拿PHM 2009当压力测试。3.5 C-MAPSS与PHM 2010从“诊断”走向“预测”C-MAPSS是美国NASA公开发布的发动机退化仿真数据包含四个子集FD001到FD004分别对应单工况单故障、多工况单故障、单工况多故障、多工况多故障几种组合。每个样本是一段多传感器的时间序列任务是预测发动机剩余寿命。需要注意它不是故障分类数据而是回归/序列预测数据评价指标通常是RMSE和评分函数。PHM 2010铣刀磨损数据则是刀具状态预测的经典。它记录了铣刀在加工过程中的振动、切削力和主轴电流信号目标是预测刀具后刀面磨损量。做加工过程监测的人经常拿这份数据做回归预测也可以做磨损状态的分类。这两份数据放在一起能帮你把视野从“这是什么故障”扩展到“还能撑多久”。4. 从下载到训练一份可以直接抄的实操流程4.1 不同格式数据的加载方法故障诊断数据的格式五花八门但主体就三种MATLAB的 .mat、CSV/文本、以及图片时频图。CWRU早期文件是 .mat用scipy.io.loadmat就能读但部分新文件是MATLAB 7.3格式本质是HDF5直接用loadmat会报错。我一般写一个兼容函数import scipy.io as sio import numpy as np import h5py def load_mat(path): try: data sio.loadmat(path) except NotImplementedError: with h5py.File(path, r) as f: data {} for key in f.keys(): if not key.startswith(__): data[key] np.array(f[key]) return data # CWRU示例 d load_mat(12k_Drive_End_IR007_0_1797.mat) print(d.keys())CWRU的 .mat 里一般有DE驱动端振动、FE风扇端振动、BA基座振动三个通道。做轴承故障诊断时驱动端信号用最多。4.2 从连续信号到训练样本原始信号是一整条长序列必须滑窗切分成固定长度样本再打标签。切窗长度选多少是个问题。我的经验是先算一下轴承故障特征频率保证一个窗口内至少要包含几十个转频周期常用长度在1024到4096点之间。窗口太短频域分辨率不够窗口太长样本数太少训练效率低。def sliding_window(signal, win_len2048, step1024): n len(signal) return np.array([ signal[i:iwin_len] for i in range(0, n - win_len 1, step) ]) # 对CWRU每个文件切窗并加上类别标签 samples sliding_window(d[DE].flatten(), 2048, 1024)4.3 训练集和测试集划分最容易翻车的一步很多CWRU高精度论文的“猫腻”在于随机划分。把整段振动信号切成一万个窗口然后随机抽8000个训练、2000个测试这样同一个时间段内相邻的窗口会被分到两边。但相邻窗口之间高度相关模型等于“见过”测试数据准确率虚高得离谱。正确做法是按“段”划分。比如把某一种工况的前半段信号全部做训练后半段全部做测试或者直接用不同负载做跨域验证。同一负载下随机划分只能用来调参绝不能当最终结果。跨工况验证的典型做法是这样# 用0负载数据训练用1负载数据测试 source load_mat(12k_Drive_End_IR007_0_1797.mat)[DE] target load_mat(12k_Drive_End_IR007_1_1772.mat)[DE] X_train sliding_window(source.flatten()) y_train np.zeros(len(X_train)) # 故障类别按文件设置 X_test sliding_window(target.flatten()) y_test np.zeros(len(X_test))4.4 预处理和特征提取的通用套路深度学习模型可以直接吃原始波形但传统机器学习流程一般要提特征。最常用的三类特征是时域统计均值、方差、峭度、峰值因子、频域统计重心频率、频率方差、谱峭度和时频能量小波包分解、EMD/VMD分解后各分量能量。其中峭度对早期冲击类故障非常敏感峰值因子对单点剥落敏感。一个小建议是先提特征做一次随机森林分类看看数据本身可分性如何再决定要不要上深度学习。这能帮你少走很多弯路。from scipy import signal as ss def spectral_entropy(x, fs12000): freqs, psd ss.welch(x, fsfs, nperseg256) psd psd 1e-12 p psd / psd.sum() return -np.sum(p * np.log(p))5. 故障诊断数据应用的避坑指南5.1 数据泄漏测试集准确率虚高的头号原因这个问题上面提过但值得再强调一遍。除了相邻窗口的泄漏还有一种更隐蔽的泄漏同一个实验中多次采集的样本被同时分进训练和测试。Paderborn和SEU这类“一次实验多段记录”的数据特别容易踩这个坑。正确做法是以“实验批次”或“轴承个体”为单位划分确保测试集里出现的设备个体从未参与训练。这样得到的精度才是真实可落地的。5.2 类别不均衡故障类型少的要小心公开数据集里正常样本往往最多某些严重故障样本很少。分类器会倾向于把所有样本都判成多数类。我的处理办法是先看各类别样本数量分布如果不均衡优先考虑数据增强而非简单过采样。振动信号的增强可以用加噪、时间掩蔽、幅值缩放、mixup 这些方式实测下来 mixup 对提升鲁棒性效果明显。如果类别数量差距超过10倍还要考虑在损失函数里加类别权重。5.3 “数据集太干净”导致的过拟合幻觉CWRU这类实验室数据信号平稳、工况恒定、故障人为制造模型的泛化能力往往被高估。真到了工业现场转速波动、负载变化、背景噪声、传感器安装差异全来了精度会掉得很难看。这也是为什么现在主流论文都在做跨域诊断、故障迁移、zero-shot learning。我建议你拿到任何一个公开数据集都先做一次跨工况实验相当于给算法做一次“抗压测试”。5.4 小问题速查表现象原因解决办法.mat读不出来MATLAB 7.3格式改用h5py读取分类精度奇高数据泄漏按实验批次而非样本随机切分跨工况精度崩塌过拟合到特定工况加域自适应、对抗训练、数据增强类别严重不均衡标注样本分布不均mixup增强类别加权损失采样率不一致不同来源数据混杂重采样到统一采样率后再处理短样本频域信息不足窗长太短适当加长窗长保证几十个转频周期模型收敛慢输入幅值范围差异大做z-score标准化5.5 找不到对应领域的公开数据怎么办总有人问我MCU、嵌入式控制系统这类领域的故障诊断数据去哪找。说实话这个方向的公开数据集确实很少和旋转机械没法比。我的建议是转向“故障注入HIL仿真”用硬件在环平台模拟控制器内部故障比如ADC通道漂移、通信报文异常、传感器量程饱和再结合半实物仿真采集数据。这种自己生成数据的方式虽然工程量大但能保证数据标注完全受控是嵌入式故障诊断方向比较可行的路子。另外多去Zenodo、Figshare、Kaggle上搜英文关键词很多新数据集是以论文附件形式开放的下载也会附上详细说明文档。最后再分享一点个人体会老实说公开数据集用多了以后我最大的感受是数据本身不稀缺稀缺的是“知道数据从哪来、怎么用、有什么陷阱”。我这几年见过的故障诊断新手大部分不是算法能力不行而是把大量时间耗在了找数据、洗数据、理解数据格式上。把这份清单里的数据集分类整理好、把通用加载和切窗代码写好后面真正做研究时就能直接进入算法设计阶段。大家也用同样的数据做对比实验时至少有个共识——故障诊断这行从来不缺题目缺的是能踏踏实实把数据用明白的人。
返回列表