搞故障诊断这几年,我最深的体会是:真正卡脖子的往往不是模型,不是调参,而是数据。找来找去,来来回回就是那几份公开数据集,新人刚上手,连一份标注清楚、能直接跑通实验的轴承数据都找不到。所以我一直想整理一份相对完整的开源数据集清单,把机械、流程、设备健康管理这些领域里能公开拿到、能直接用来做故障诊断和剩余寿命预测的资源都盘一遍。这篇文章就来交这份作业,按轴承、齿轮箱、电池、流程工业、航空发动机等方向拆分,附上每个数据集能干什么、大概怎么获取、有什么坑,方便你按图索骥。
不管你是刚接触故障诊断的研究生,还是在企业里做设备健康管理、状态监测的工程师,这篇文章都值得收藏下来当索引用。看完之后,你至少能知道三十多个开源数据集分别是什么、适合做的任务类型,以及拿到数据后该怎么规划自己的第一个实验。
1. 故障诊断数据集为什么这么难找,公开资源又集中在哪
1.1 数据的稀缺是故障诊断行业的结构性问题
我见过不少新人一开始特别自信,觉得自己算法功底不错,结果一到实际项目就傻眼——现场设备长期正常运转,故障样本少得可怜,偶尔坏一次,传感器有没有提前装好都是个问题。这就是故障诊断场景的特殊性:故障是低概率事件,你没法像图像识别那样轻松标注几万张“猫”和“狗”的图片。真正发生故障时,又往往伴随着停机抢修,没有人会为了收集数据让产线继续带病运行。所以故障数据天然的稀缺,不是某个团队不努力,而是客观条件限制。
另一个问题是标注成本。哪怕你费尽周折采到了振动、电流、温度信号,要把它精准标注成“内圈点蚀”“外圈剥落”“滚动体裂纹”,必须有设备拆解记录或者高精度诊断手段佐证。工业现场的许多数据甚至连“正常”和“异常”都未必分得清,因为设备状态存在退化过程,不是非黑即白。这种高标注成本直接劝退了很多想开源数据的团队。
1.2 为什么开源资源大多集中在轴承
如果你经常搜“故障诊断 数据集”,会发现十个链接里有七八个是轴承相关的。原因很简单:轴承是旋转机械里最基础、最容易失效的部件,而且故障模式相对标准化,学术界积累了成熟的动力学模型和诊断流程。更关键的是,轴承故障可以在实验室里人为注入,用电火花加工等方式在滚道或滚动体上做一个微小凹坑,成本可控,重复性好。再加上CWRU等早期数据集免费开放,后续很多团队都采用类似实验台模式,导致轴承数据成了故障诊断领域的“标准件”。
此外,轴承数据的传感器布置也比较固定,通常就是在轴承座上装加速度计,信号是几万赫兹的高频振动,特征频率能通过轴承参数直接算出来。这种“有标准答案”的数据,用来验证算法再合适不过。所以无论是发论文还是培训新人,轴承数据集都承担着“Hello World”的角色。
1.3 从搜索热词看:大家要的不只是传统数据集
我特意观察了“故障诊断代码”“基于数据驱动的加工产线工业机器人内部轴承故障诊断方法数据集”“MCU故障诊断”这些搜索热词,能明显感觉到需求正在变化。早年大家搜“CWRU数据集怎么用”,现在更多人问的是“有没有工业产线机器人的轴承故障数据”“有没有嵌入式MCU的故障诊断案例”。
这其实反映了故障诊断正在从实验室走向现场,从单纯旋转机械走向机电软一体化系统。比如工业机器人的内部轴承,多大载荷、什么转速、怎么安装传感器,和普通电机试验台完全是两回事;再比如MCU层面的故障诊断,关注的是程序跑飞、ADC采集异常、通信错误,这已经属于电子系统健康管理的范畴,传统的振动数据集根本覆盖不了。所以这篇文章在盘完传统开源数据集之后,我也会专门聊一聊面对这些新场景,数据不够用该怎么办。
2. 三十多个开源数据集速查:一份可以用一年的清单
2.1 轴承故障诊断:从入门到进阶的开源资源
轴承数据集是故障诊断的第一站,下面这些基本覆盖了从标准故障分类到寿命预测的各类任务:
- CWRU(凯斯西储大学轴承数据中心):最经典的滚动轴承故障数据集,驱动端和风扇端都有加速度振动数据,采样率12kHz和48kHz可选,故障类型包含内圈、外圈、滚动体和正常状态,每个故障还分了0.007英寸到0.028英寸的损伤尺寸,适合做故障分类和迁移学习入门。
- IMS(NSF I/UCR中心轴承全寿命数据):四组轴承从正常到严重退化的全生命周期数据,振动采集频率20kHz,适合做退化趋势分析和剩余寿命预测。
- XJTU-SY(西安交通大学与昇阳科技滚动轴承加速寿命试验数据集):15个轴承在三种工况下的加速退化数据,每个轴承都有完整的全寿命周期振动信号,并提供了失效位置的拆解记录,这在公开数据集里非常宝贵。
- PRONOSTIA(FEMTO-ST机构轴承退化数据集):IEEE PHM 2012挑战赛官方数据,包含多个轴承的退化振动信号,带有温度和瞬时转速信息,是剩余寿命预测圈的“硬通货”。
- PU(德国帕德博恩大学轴承数据集):同时提供振动和电流信号,故障类型包括真实损伤和人工损伤,数据质量高,工况覆盖较全,特别适合多传感器融合和跨工况迁移研究。
- MFPT(美国机械故障预防技术学会数据集):提供了真实故障轴承样本和试验台数据,包含正常、外圈、内圈等工况,适合作为CWRU之外的独立验证集。
- UOCondor(渥太华大学滚动轴承退化数据集):面向轴承退化过程研究,包含多组全生命周期振动数据,适合RUL建模。
2.2 齿轮箱与传动系统:多部件耦合的典型场景
齿轮箱数据比轴承更复杂的地方在于,它往往是齿轮、轴承、轴系多个部件同时作用,振动信号混叠严重。下面几个是相对容易获取的齿轮箱数据集:
- 东南大学SEU齿轮箱数据集:包含行星齿轮箱和直齿轮箱在不同工况下的振动数据,有齿轮断齿、磨损、缺失等故障模式。
- 江南大学JNU齿轮箱数据集:多工况齿轮故障数据,涵盖齿轮磨损、断齿和轴承故障等,常用于多分类实验。
- PHM 2009 Gearbox Challenge Dataset:源自PHM学会2009年数据挑战赛,数据采集于旋转机械齿轮箱试验台,包含不同故障组合,适合验证特征提取和分类算法。
2.3 电池、流程工业、液压阀门与半导体:轴承之外的重要战场
故障诊断不止振动信号。锂电池健康管理、流程工业的过程故障、液压阀门故障都是很常见的工程场景。我给它们单列一组:
- NASA PCoE电池老化数据集:锂离子电池在不同的充放电循环下老化,记录电流、电压、容量、阻抗变化,是电池RUL预测的经典数据。
- CALCE电池数据集:马里兰大学高级生命周期工程中心提供,包含多种充放电工况的电池容量衰退曲线。
- Oxford电池退化数据集:牛津大学公开的商用锂离子电池退化数据,电流电压曲线细致,适合做充电曲线特征提取。
- Toyota Research Institute 18650电池数据集:大规模高通量电池充电实验数据,覆盖多种充放电边界,适合用机器学习做电池寿命预测。
- TEP(田纳西-伊斯曼化工过程数据集):基于化工过程仿真模型产生,包含21种故障模式,是过程监控和故障诊断领域的标准数据。
- PlantSim过程仿真数据集:造纸过程仿真数据,包含多故障工况,适合做过程异常检测和根因分析。
- DAMADICS阀门执行机构故障基准:模拟工业阀门执行器的故障数据,包含阀位、压力、流量等过程变量,适合液压与气动系统故障诊断。
- SECOM半导体制造过程数据:反映半导体生产线工艺过程中大量稀疏测量信号,适合做高维、类别不平衡和代价敏感分类。
2.4 航空发动机与综合设备:来自挑战赛和NASA的经典资源
最后这部分主要面向系统级健康管理和剩余寿命预测:
- C-MAPSS航空发动机退化仿真数据集:NASA开源,是发动机越来越复杂的环境中多传感器时间序列数据,按工况和故障模式分为FD001至FD004四个子集,每个子集都可以当作一个独立数据包来下载,很适合做RUL预测任务。
- NASA铣刀磨损数据集:采集铣削加工过程中的振动、电流等信号,标注刀具磨损量,适合加工过程状态监测。
- PHM Society历年数据挑战赛(PHM 2010、PHM 2012、PHM 2014、PHM 2015等系列):不同年份的比赛都会开放一批高质量工业数据,涵盖轴承、液压系统、工具磨损等领域,虽然一部分年份的数据需要在官网注册申请,但整体质量非常高。
2.5 30多条数据的速查表
为了方便你直接保存,我按自己的使用习惯整理了一张速查表,这张表把同一平台的不同子集也单独拆出来算作独立资源,方便按下载入口索引:
类别 | 数据集/来源 | 数据类型 | 主要用途 | 获取难度 轴承 | CWRU | 振动加速度 | 故障分类、特征提取入门 | 极低 轴承 | IMS | 振动加速度 | 退化趋势与RUL预测 | 低 轴承 | XJTU-SY | 振动加速度 | 全寿命退化、RUL预测 | 中 轴承 | PRONOSTIA | 振动+温度 | RUL挑战赛基线 | 中 轴承 | PU | 振动+电流 | 多传感器融合、迁移学习 | 中 轴承 | MFPT | 振动加速度 | 实际故障验证 | 中 轴承 | UOCondor | 振动加速度 | 退化演化建模 | 中 齿轮箱 | SEU | 振动加速度 | 多工况齿轮箱诊断 | 中 齿轮箱 | JNU | 振动加速度 | 齿轮/轴承复合故障 | 中 齿轮箱 | PHM 2009 Gearbox | 振动加速度 | 多故障组合识别 | 低 电池 | NASA PCoE Battery | 电压/电流/容量 | 电池RUL预测 | 极低 电池 | CALCE Battery | 容量/阻抗 | 电池老化建模 | 中 电池 | Oxford Battery | 电压/电流 | 充电曲线特征、RUL预测 | 中 电池 | TRI 18650 Battery | 电压/电流/容量 | 机器学习寿命预测 | 中 流程工业 | TEP | 过程变量 | 过程故障诊断、异常检测 | 极低 流程工业 | PlantSim | 过程变量 | 过程故障分类与根因分析 | 中 阀门 | DAMADICS | 过程变量 | 执行器故障诊断 | 中 半导体 | SECOM | 工艺信号 | 高维异常检测 | 低 航空发动机 | C-MAPSS FD001 | 多传感器时序 | 单工况RUL预测 | 低 航空发动机 | C-MAPSS FD002 | 多传感器时序 | 多工况RUL预测 | 低 航空发动机 | C-MAPSS FD003 | 多传感器时序 | 多故障模式RUL预测 | 低 航空发动机 | C-MAPSS FD004 | 多传感器时序 | 多工况多故障RUL预测 | 低 刀具磨损 | NASA Milling Wear | 振动/电流 | 刀具退化预测 | 中 综合 | PHM历年挑战数据集 | 不定 | 各类实际工业故障诊断 | 中 综合 | Kaggle/GitHub上的整理型数据集 | 不定 | 练手、快速跑通流程 | 低 综合 | Zenodo/Mendeley Data上的实验室开放数据 | 不定 | 横向对比、复现论文 | 低
如果你把这些都浏览一遍,基本能覆盖故障诊断领域绝大部分常见任务。但光有清单还不够,我接下来挑几个最常被用到的数据,逐个拆给你看,尤其是它们的适用边界和坑。
3. 重点数据集逐个拆解:从CWRU到XJTU-SY,能挖到什么
3.1 CWRU:每个人的第一个轴承数据集,但坑也不少
CWRU几乎是故障诊断论文的“默认实验场”,绝大多数开源代码也都会用它做演示。它的实验台由电机、扭矩传感器和测功机组成,故障轴承安装在电机驱动端或风扇端,通过在轴承滚道和滚动体上用电火花加工出单点损伤来模拟故障。采样率方面有12kHz和48kHz两档,对应不同故障位置和损伤直径,通常大家在论文里用12kHz的驱动端数据就够了。
不过这数据用起来有几个容易踩的坑。第一,外圈故障数据是在六个不同加载位置分别采集的,有些论文把这六个位置全部混成一类,这样做分类当然很容易,但实际场景中外圈故障的相对位置是随机的,直接混用会高估算法性能。更严谨的做法是划分训练集和测试集时,让外圈故障位置不重叠,或者明确你是做“位置无关”的迁移测试。第二,CWRU的信号是稳定工况下单点轻微损伤的振动,噪声水平低、故障特征明显,算法拿到九十几分并不代表真能在现场通用。把它当成验证特征提取方法和熟悉处理流程的工具,会比一味追求准确率有意义得多。
3.2 IMS与XJTU-SY:全寿命退化数据怎么用
如果说CWRU是分类任务,那IMS和XJTU-SY就是典型的回归和异常检测任务。这两类数据没有直接标注“内圈故障”或者“外圈故障”,而是记录了轴承从健康到失效整个过程的振动信号。比如IMS的四组实验中,每组包含多个轴承,最终某一个或几个轴承会逐渐退化直到失效;XJTU-SY提供了更细致的工况划分和失效部位记录,实验结束时还会对轴承进行拆解,确认真实的失效模式。
拿到这类数据,你要做的第一件事不是直接丢给模型,而是要先定义“退化起点”。轴承从开始运转到失效,前一段时间信号可能非常平稳,直接拿全量数据做归一化,会严重压缩退化阶段的特征差异。我一般喜欢先计算每个窗口的RMS或峭度,画出随时间变化的趋势线,观察信号从什么时候开始持续上升或产生波动,再以那个时间点作为退化的起点。这个预处理做不好,后面不管用什么高级模型都很难有好的RUL结果。另外,IMS和XJTU-SY都是典型的右删失和不确定终止数据,做数据集划分时尽量按“同一个轴承的所有窗口”归拢,避免同一段信号被同时划进训练集和测试集,那是比较常见的泄漏写法。
3.3 PRONOSTIA与PU:挑战赛标准与多传感器融合
PRONOSTIA来头不小,它是FEMTO-ST机构在IEEE PHM 2012预测与健康管理会议上公开的轴承退化数据集,比赛任务就是要在不知道真实寿命的情况下预测轴承剩余使用寿命。数据包含转速和载荷两种工况的17个轴承运行数据,每个轴承持续加速退化直到失效,振动传感器安装在轴承座上,采样频率25.6kHz,另外还记录了温度信号。如果你研究RUL预测,PRONOSTIA几乎是绕不开的基准。
PU数据集则是近年来很有价值的多传感器融合数据。帕德博恩大学在实验台上采集了振动和电流两种模态信号,故障类型不仅有内圈、外圈损伤,还细分了人工损伤和真实损伤。这种“源域数据和目标域数据不完全一致”的构成,非常适合做跨域迁移学习实验。比如用人工损伤样本训练,在真实损伤样本上测试,非常贴近工程中“实验室复现和现场故障不一致”的现实。PU数据还提供了详细的工况设置,包括转速、负载扭矩和径向力,可以很方便地构造跨工况任务。
4. 实战套路:拿到开源数据集后的第一步怎么做
4.1 清理与重采样:先把数据“对齐”再谈建模
很多人下载完数据就急着写模型,结果发现模型训练起来特别慢,或者A数据集上表现很好、换到B数据集就崩了。问题往往出在最基础的数据清洗环节。第一步要确认采样频率和转速是否一致,比如CWRU有12kHz和48kHz两档,IMS是20kHz,PRONOSTIA是25.6kHz,如果不重采样到统一频率,特征维度就会对不上,也没法做跨数据集的泛化实验。
第二步是截取稳定工况段。实际采集的信号经常包含启停阶段、负载波动阶段,这些段落在实验室数据里可能不明显,但在现场数据里会很突出。对于CWRU这种稳定工况数据,通常每个样本取1到2秒就够;对于退化数据,则要先把整个寿命信号切成长度相同的窗口,比如每个窗口包含4096个采样点或2048个采样点,然后再逐窗口计算特征。窗口长度非常重要:太短会丢低频故障特征,太长会把瞬态冲击平均掉。我自己在振动数据上一般先试4096点窗口,再对比8192点和2048点的结果。
4.2 数据划分:最大的坑是“随机切分”
很多公开数据集默认没有给训练集和测试集的划分方式,于是大部分初学者就直接把所有样本放一起,随机抽取百分之多少作为训练集。这在故障诊断里是非常危险的。因为同一个轴承、同一次工况的相邻窗口样本高度相似,随机切分后,训练集和测试集里可能都包含同一段信号的邻居窗口,模型很容易“背答案”,看起来准确率很高,实际一到现场就失效。
正确的做法是按“实验对象”划分。比如CWRU里,让内圈故障的某些载荷样本进训练集,另一些载荷样本进测试集;XJTU-SY里,让同一个轴承的全部窗口要么都在训练集,要么都在测试集,绝不交叉。这样划分出来的准确率可能比随机切分低几个百分点,但更能反映模型的泛化能力。
4.3 从数据到基线:先用经典方法跑通全流程
拿到数据后,我建议先别急着上深度学习,而是先跑一个轻量级基线。比如先从每个窗口提取一组简单特征:时域的RMS、峰值、峰值因子、峭度、偏度和脉冲因子,频域的主频带能量、重心频率,如果处理的是轴承信号,再算一个包络谱特征,然后扔给随机森林或梯度提升树分类。这样做的好处是让你快速验证数据质量、标签是否对齐、划分逻辑是否合理。
等基线的分类准确率能稳定达到较高水平后,再换一维CNN或者LSTM做端到端学习,这时候你才有一个靠谱的对照对象。我见过太多人上来就是SOTA模型,最后连数据泄漏还是处理流程写错都没发现。经典方法虽然土,但它是检验数据流水线正确性的试金石。同样,在RUL任务上,先用线性回归或指数退化模型做一个简单基线,再上Transformer等模型,也能帮你判断模型提升究竟来自算法还是来自数据处理。
5. 面向产线与工业机器人场景的补充思路:数据不够,怎么凑
5.1 为什么产线系统数据集这么少
回到最开始的热词“加工产线工业机器人内部轴承故障诊断”,这类数据为什么几乎找不到开源版本?原因有几层:产线工况是连续的,不能停机给你贴传感器;机器人内部轴承的安装位置往往在减速器、关节电机里,传感器很难直接接触故障点;再加上产线数据涉及工艺参数、节拍信息和设备型号,企业通常视为机密。所以这类数据只能靠项目团队自己去采集,或者通过合作渠道获取,指望网上直接下载基本不现实。
更麻烦的是,即使同一个型号的工业机器人,在不同产线上转速、负载、润滑条件和环境温度都不一样。公开实验台上的轴承故障模式,迁移到机器人关节轴承上时可能有很大偏移。这也是为什么大家在搜索时会特别注明“基于数据驱动的加工产线工业机器人内部轴承故障诊断方法数据集”,本质上是在找一种既包含真实产线运行工况、又有故障标注的稀缺资源。
5.2 用公开数据训练,现场数据微调:迁移学习的可行路径
现场数据稀缺,不意味着你没活干。一个很务实的路径是:拿CWRU、PU这类公开数据集做预训练,建立对轴承各类故障信号的通用表征,然后到产线现场采集少量正常数据和尽可能少的故障数据,用微调或者域自适应技术把模型迁移过去。如果你运气好,能采到一两次真实故障或者拆机维修前的历史数据,那价值更大,哪怕只有几十秒钟的样本,也足够做小样本微调了。
另外,现场往往只有正常运行数据,没有故障数据,这时候更适合做异常检测任务。你可以用公开数据集中的正常样本训练一个单类分类器,比如基于深度自编码器的重构误差,或者基于高斯分布的异常分数,然后在现场数据上监测新的状态。模型不需要见过现场故障类型,只要现场出现与训练分布明显不同的特征,就会触发报警。这个方法比硬做故障分类更贴近实际。
5.3 仿真与故障注入:从MCU级到整机级的造数据思路
打开搜索热词还能看到“MCU故障诊断”,说实话这个领域几乎没有现成的开源数据集。但这类问题的数据可以通过仿真和故障注入来造。MCU或嵌入式控制器的常见故障包括复位、程序跑飞、ADC采样异常、PWM输出缺失、通信帧错误等,你可以在硬件在环或纯仿真环境里主动注入这些故障,记录故障前后的控制信号和状态量,这就形成了一份标注数据。虽然仿真数据和真实硬件存在差异,但用来验证诊断逻辑、训练分类器作为预训练模型,是完全可行的。
再说回轴承和机器人,也有类似的仿真思路。轴承故障机理相对成熟,你可以用动力学模型仿真不同损伤位置、不同损伤尺寸下的振动响应,生成大批量仿真样本;再加上真实实验台数据作为微调,可以明显缓解现场样本不足的问题。更进阶的做法是搭建数字孪生环境,把产线节拍、负载谱和机器人运动学模型结合起来,离线生成各种退化轨迹,再配合少量真实数据校准模型。这样产出的数据集虽然不能完全替代真实采集,但至少能让你把数据处理、模型训练、指标验证整个流程跑起来,而不是停在“没有数据所以什么都做不了”的状态。
我自己在实际项目中的习惯是:先把公开数据集吃透,用CWRU和XJTU-SY跑通所有流程,把数据划分、特征提取、模型训练、指标评估这一整套代码沉淀成自己的工具库。等真到了现场数据稀缺的环境,就可以用这套工具快速迁移和调整,而不是从头开始造轮子。数据集这种东西,贵精不贵多,与其把三十多个都下载下来放在硬盘里吃灰,不如认真吃透三四个经典数据,把“传感器信号到故障结论”的整条链路练熟了,再横向拓展到齿轮箱、电池和流程工业。等你哪天真面对产线机器人或MCU故障诊断时,能救你的不是硬盘里的数据,而是你已经跑通的思路和代码框架。