针对故障诊断领域开源代码较少,小编整理搜集了一些开源代码与大家进行分享。本期分享的是轴承故障诊断迁移学习综述。由于该论文是2023年发表在TIM上的,综述了近6年的迁移学习方法。该开源代码有各种迁移学习方法的模型,因此这篇开源代码适合参考借鉴并在上面进行改进,适合具备一定的迁移学习和深度学习基础知识的学习者。
传统的基于深度学习的轴承故障诊断方法假设训练数据和测试数据遵循相同的分布。然而,对于实际场景中收集的轴承数据,这一假设并不总是正确的,导致故障诊断性能显着下降。为了满足这一假设,在深度学习中引入迁移学习的概念,将从其他数据或模型中学习到的知识进行迁移。深度迁移学习方法由于其出色的特征学习和领域迁移能力,近年来在轴承故障诊断中得到了广泛的关注。本文对2016年以来基于深度迁移学习的轴承故障诊断方法的发展进行了全面回顾。本文从标签、机器和故障划分目标域数据属性的角度,提出了一种基于深度迁移学习的轴承故障诊断方法。本文涵盖了基于深度迁移学习的故障诊断的全生命周期,并讨论了研究的挑战和机遇,为研究人员和从业者根据轴承故障诊断中遇到的实际问题,有效地识别合适的深度迁移学习模型提供了系统的指导。
图2为一个轴承迁移学习故障诊断实例示意图。
5.1 轴承故障诊断迁移学习流程
根据故障的产生情况,将上述数据集分为两组:人为故障数据集和加速退化故障数据集。7个数据集的详细信息如表1所示。
人为故障轴承数据集通常是通过对轴承进行人为加工损伤产生故障轴承,然后对故障轴承进行状态监测来生成故障数据的[94]。
加速退化数据集是由轴承在各种工况下的加速退化实验生成的,反映了轴承从新的到完全失效的完整生命周期。在加速退化实验结束时,可以得到不同的故障位置,如外圈、内圈、滚动体和保持架。
自2016年以来,深度迁移学习得到了广泛的关注,并成功应用于轴承故障诊断领域。本节对解决轴承跨域故障诊断问题的相关文献进行了系统综述。为了给读者一个全面的概述,所提到的参考文献总结在表2。
归纳迁移学习可以分为两种情况:监督迁移学习和半监督迁移学习。监督迁移学习要求所有的目标域标签都是可用的。半监督迁移学习允许在训练过程中对少量目标域数据进行标记,而对大量目标域数据进行去标记。此外,根据故障数据来源,本综述将有监督迁移学习和半监督迁移学习分为不同机器间迁移和同一机器间迁移,如表3所示。
7.1.1 监督迁移学习
监督迁移学习要求标签在源域和目标域都可用。基于监督迁移学习的常见故障诊断任务可分为不同机器之间和同一机器之间的迁移(见表3)。
在此迁移场景中,目标域的故障数据是从源域的不同机器上收集的。由于不同机器的机械结构、轴承类型、工况等不同,故障数据的分布也不同。利用源域数据训练的故障诊断模型在不进行知识迁移的情况下,不能达到令人满意的诊断效果
在此迁移场景中,源域和目标域数据从同一台机器收集,但工作条件不同。文献中现有的基于深度迁移学习的故障诊断方法可分为基于微调和基于少样本两大类。
半监督迁移学习结合了目标域中少量打标的故障数据和大量未打标数据的情况,提供了一种有效利用已打标和未打标数据的方法。在目标领域引入大量辅助的未打标数据,使迁移学习模型能够挖掘属于源域和目标域数据的共同潜在特征。现有的半监督迁移学习方法可分为基于统计的方法和基于对抗的方法。
本文综述了现有的轴承故障诊断中的迁移学习方法,将其分为不同机器之间的迁移和同一机器之间的迁移。此外,根据故障标签的性质,将不同/相同机器迁移场景下的方法进一步分为相同故障间迁移和不同故障间迁移。
轴承信号的时频域特性受机器类型和结构的影响很大,因此不同机器的特征分布可能有很大差异。为了解决不同机器之间的特征差异问题,研究人员利用深度迁移学习技术提出了多种方法,包括基于统计的、基于对抗的和基于few-shot的方法,如表4所示。
不同工况下同一机器之间的迁移是最常见的迁移学习场景。现有研究可分为相同故障间迁移和不同故障间迁移两大类。同一故障间的迁移包括基于统计的方法、基于对抗的方法和混合的方法,不同故障间的转移只包含基于对抗的方法,如表5所示。
许多研究表明,在目标域数据有限或源域数据与目标域数据分布不同的情况下,基于深度迁移学习的轴承故障诊断是有效的,可以达到比从头开始训练更高的准确率。受文献[165]的启发,作者在表6中引入了六个标准来评估其特征:
本文综述了2016年以来基于深度迁移学习的轴承故障诊断的发展概况。通过覆盖深度迁移学习的整个生命周期,包括源域数据选择、数据预处理和迁移学习模型选择,为即将开始或扩展轴承故障诊断工作的研究人员和从业者提供了详细的系统指南。介绍和讨论了七个开源轴承数据集和常用的数据转换方法,为研究人员和从业者提供了适当的数据选择和转换的选择。此外,从目标域数据属性按标签、机器和故障划分的角度,提出了一种基于深度迁移学习的故障诊断方法的新分类方法,可以帮助研究人员和从业者根据故障诊断中遇到的实际问题高效地找到合适的深度迁移学习模型。最后,讨论了未来研究的挑战和机遇,包括可移植性评估、数据质量差情况下迁移、多源迁移、早期故障诊断以及在不同机器之间迁移中的新应用。综上所述,本文系统阐述了2016年以来基于深度迁移学习的轴承故障诊断的发展情况,为该领域的研究发展提供了有价值的指导和对未来实践的重要意义。
This repository contains popular deep transfer learning algorithms implemented via PyTorch for cross-load fault diagnosis transfer tasks, including:
General supervised learning classification task: traing and test apply the same machines, working conditions and faults.
domain adaptation: the distribution of the source domain data may be different from the target domain data, but the label set of the target domain is the same as the source domain.
DDC: Deep Domain Confusion [arXiv 2014]
Deep CORAL: Correlation Alignment for Deep Domain Adaptation [ECCV 2016]
DANN: Unsupervised Domain Adaptation by Backpropagation [ICML 2015]
TODO
Open-set domain adaptation: the distribution of the source domain data may be different from the target domain data. What's more, the target label set contains unknown categories.
OSDABP: Open Set Domain Adaptation by Backpropagation [ECCV 2018]
TODO
Few-shot learning-based bearing fault diagnosis methods please see: https://github.com/Xiaohan-Chen/few-shot-fault-diagnosis
or further introductions to transfer learning in bearing fault diagnosis, please read our paper. And if you find this repository useful and use it in your works, please cite our paper, thank you~:
@ARTICLE{10042467,
author={Chen, Xiaohan and Yang, Rui and Xue, Yihao and Huang, Mengjie and Ferrero, Roberto and Wang, Zidong},
journal={IEEE Transactions on Instrumentation and Measurement},
title={Deep Transfer Learning for Bearing Fault Diagnosis: A Systematic Review Since 2016},
year={2023},
doi={10.1109/TIM.2023.3244237}}
python 3.9.12
Numpy 1.23.1
pytorch 1.12.0
scikit-learn 1.1.1
torchvision 0.13.0
Download the bearing dataset from CWRU Bearing Dataset Center and place the .mat
files in the ./dataset
folder according to the following structure:
dataset/
└── CWRU/
├── Drive_end_0/
│ └── 97.mat 109.mat 122.mat 135.mat 173.mat 189.mat 201.mat 213.mat 226.mat 238.mat
├── Drive_end_1/
│ └── 98.mat 110.mat 123.mat 136.mat 175.mat 190.mat 202.mat 214.mat 227.mat 239.mat
├── Drive_end_2/
│ └── 99.mat 111.mat 124.mat 137.mat 176.mat 191.mat 203.mat 215.mat 228.mat 240.mat
└── Drive_end_3/
└── 100.mat 112.mat 125.mat 138.mat 177.mat 192.mat 204.mat 217.mat 229.mat 241.mat
NOTE: When using pre-trained models to initialise the backbone and classifier in transfer learning tasks, run classification tasks first to generate corresponding checkpoints.
Four typical neural networks are implemented in this repository, including MLP, 1D CNN, 1D ResNet18, and 2D ResNet18(torchvision package). More details can be found in the ./Backbone
folder.
General Supervised Learning Classification:
Train and test the model on the same machines, working conditions and faults. Use the following commands:
python3 classification.py --datadir './dataset' --max_epoch 100
Transfer Learning:
If using the DDC transfer learning method, use the following commands:
python3 DDC.py --datadir './dataset' -backbone "CNN1D" --pretrained False --kernel 'Linear'
If using the DeepCORAL transfer learning method, use the following commands:
python3 DDC.py --datadir './dataset' -backbone "CNN1D" --pretrained False --kernel 'CORAL'
If using the DANN transfer learning method, use following commands:
python3 DANN.py --backbone "CNN1D"
Open Set Domain Adaptation:
The target domain contains unknow classes, use the following commands:
python3 OSDABP.py
The following results do not represent the best results.
The following results do not represent the best results.
General Classification task:
Dataset: CWRU
Load: 3
Label set: [0,1,2,3,4,5,6,7,8,9]
MLPNet | CNN1D | ResNet1D | ResNet2D | |
---|---|---|---|---|
acc (time domain) | 93.95 | 97.70 | 99.58 | 98.02 |
acc (freq domain) | 99.95 | 99.44 | 100.0 | 99.96 |
Transfer Learning:
Dataset: CWRU
Source load: 3
Target Load: 2
Label set: [0,1,2,3,4,5,6,7,8,9]
Pre-trained model: True
Time domain:
MLPNet | CNN1D | ResNet1D | ResNet2D | |
---|---|---|---|---|
DDC (linear kernel) | 75.47 | 85.53 | 91.79 | 91.32 |
DeepCORAL | 82.33 | 88.23 | 93.88 | 90.84 |
DANN | 87.68 | 94.77 | 98.88 | 93.95 |
Frequency domain
MLPNet | CNN1D | ResNet1D | ResNet2D | |
---|---|---|---|---|
DeepCORAL | 98.65 | 98.22 | 99.75 | 99.31 |
DANN | 99.38 | 98.74 | 99.89 | 99.47 |
Open Set Domain Adaptation
OSDABP Dataset: CWRU
Source load: 3
Target Load: 2
Source label set: [0,1,2,3,4,5]
Target label set: [0,1,2,3,4,5,6,7,8,9]
Pre-trained model: True
Multi-scale CNN and LSTM bearing fault diagnosis
@article{zhao2021applications,
title={Applications of Unsupervised Deep Transfer Learning to Intelligent Fault Diagnosis: A Survey and Comparative Study},
author={Zhibin Zhao and Qiyang Zhang and Xiaolei Yu and Chuang Sun and Shibin Wang and Ruqiang Yan and Xuefeng Chen},
journal={IEEE Transactions on Instrumentation and Measurement},
year={2021}
}
编辑:李正平
校核:张泽明、张勇、王畅、陈凯歌、赵栓栓
该文资料搜集自网络,仅用作学术分享,不做商业用途,若侵权,后台联系小编进行删除。