精华内容
下载资源
问答
  • 网上有关于轴承故障特征频率计算的资源,但是东一句,西一句,比较零散,而且表述上不太明确,容易让初学者走弯路,特整理有关资料并上传,希望能帮助到大家!共同进步!
  • 轴承、轴、齿轮是旋转机械重要组成部分,为了验证深度学习在旋转装备故障分类识别的有效性,本文选取凯斯西储大学轴承数据库(Case Western Reserve University, CWRU)[9]为验证数据。CWRU实验装置如图 4‑1所示。...
  • 旋转机械故障诊断公开数据集整理

    万次阅读 多人点赞 2019-04-19 10:17:44
    旋转机械故障诊断公开数据集整理 众所周知,当下做机械故障诊断研究最基础的就是数据,再先进的方法也离不开数据的检验。笔者通过文献资料收集到如下几个比较常用的数据集并进行整理。鉴于目前尚未见比较全面的数据...

    旋转机械故障诊断公开数据集整理

    众所周知,当下做机械故障诊断研究最基础的就是数据,再先进的方法也离不开数据的检验。笔者通过文献资料收集到如下几个比较常用的数据集并进行整理。鉴于目前尚未见比较全面的数据集整理介绍。数据来自原始研究方,笔者只整理数据获取途径。如果研究中使用了数据集,请按照版权方要求作出相应说明和引用。在此,公开研究数据的研究者表示感谢和致敬。如涉及侵权,请联系我删除(787452269@qq.com)。欢迎相关领域同仁一起交流。很多优秀的论文都有数据分享,本项目保持更新。星标是比较通用的数据集。个别数据集下载可能比较困难,需要的可以邮件联系我,如版权方有要求,述不提供。本文在github地址为旋转机械故障数据集

    1.☆CWRU(凯斯西储大学轴承数据中心)

    2.☆MFPT(机械故障预防技术学会)

    NRG Systems总工程师Eric Bechhoefer博士代表MFPT组装和准备数据。

    3.☆德国Paderborn大学

    • 链接:https://mb.uni-paderborn.de/kat/forschung/datacenter/bearing-datacenter/
    • 相关说明及论文[3, 4]。
    • Bin Hasan M. Current based condition monitoring of electromechanical systems. Model-free drive system current monitoring: faults detection and diagnosis through statistical features extraction and support vector machines classification.[D]. University of Bradford, 2013.
    • Lessmeier C, Kimotho J K, Zimmer D, et al. Condition monitoring of bearing damage in electromechanical drive systems by using motor current signals of electric motors: a benchmark data set for data-driven classification: Proceedings of the European conference of the prognostics and health management society, 2016[C].

    4.☆FEMTO-ST轴承数据集

    • 由FEMTO-ST研究所建立的PHM IEEE 2012数据挑战期间使用的数据集[5-7]。
    • FEMTO-ST网站:https://www.femto-st.fr/en
    • github链接:https://github.com/wkzs111/phm-ieee-2012-data-challenge-dataset
      http://data-acoustics.com/measurements/bearing-faults/bearing-6/
    • Porotsky S, Bluvband Z. Remaining useful life estimation for systems with non-trendability behaviour: Prognostics & Health Management, 2012[C].
    • Nectoux P, Gouriveau R, Medjaher K, et al. PRONOSTIA: An experimental platform for bearings accelerated degradation tests.: IEEE International Conference on Prognostics and Health Management, PHM’12., 2012[C]. IEEE Catalog Number: CPF12PHM-CDR.
    • E. S, H. O, A. S S V, et al. Estimation of remaining useful life of ball bearings using data driven methodologies: 2012 IEEE Conference on Prognostics and Health Management, 2012[C].2012
      18-21 June 2012.

    5.☆辛辛那提IMS

    • 数据链接https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/
    • 相关论文[8, 9]。
    • Gousseau W, Antoni J, Girardin F, et al. Analysis of the Rolling Element Bearing data set of the Center for Intelligent Maintenance Systems of the University of Cincinnati: CM2016, 2016[C].
    • Qiu H, Lee J, Lin J, et al. Wavelet filter-based weak signature detection method and its application on rolling element bearing prognostics[J]. Journal of Sound and Vibration, 2006,289(4):1066-1090.

    6.University of Connecticut

    • 数据链接:https://figshare.com/articles/Gear_Fault_Data/6127874/1
    • 数据描述:
      Time domain gear fault vibration data (DataForClassification_TimeDomain)
      And Gear fault data after angle-frequency domain synchronous analysis (DataForClassification_Stage0)
      Number of gear fault types=9={‘healthy’,‘missing’,‘crack’,‘spall’,‘chip5a’,‘chip4a’,‘chip3a’,‘chip2a’,‘chip1a’}
      Number of samples per type=104
      Number of total samples=9x104=903
      The data are collected in sequence, the first 104 samples are healthy, 105th ~208th samples are missing, and etc.
    • 相关论文[10]。
    • P. C, S. Z, J. T. Preprocessing-Free Gear Fault Diagnosis Using Small Datasets With Deep Convolutional Neural Network-Based Transfer Learning[J]. IEEE Access, 2018,6:26241-26253.

    7.XJTU-SY Bearing Datasets(西安交通大学 轴承数据集)

    由西安交通大学雷亚国课题组王彪博士整理。

    • 链接:http://biaowang.tech/xjtu-sy-bearing-datasets/
    • 使用数据集的论文[11]。
    • B. W, Y. L, N. L, et al. A Hybrid Prognostics Approach for Estimating Remaining Useful Life of Rolling Element Bearings[J]. IEEE Transactions on Reliability, 2018:1-12.

    8.东南大学

    • github连接:https://github.com/cathysiyu/Mechanical-datasets
      由东南大学严如强团队博士生邵思雨完成[12]。“Highly Accurate Machine Fault Diagnosis Using Deep Transfer Learning”
      Gearbox dataset is from Southeast University, China. These data are collected from Drivetrain Dynamic Simulator. This dataset contains 2 subdatasets, including bearing data and gear data, which are both acquired on Drivetrain Dynamics Simulator (DDS). There are two kinds of working conditions with rotating speed - load configuration set to be 20-0 and 30-2. Within each file, there are 8rows of signals which represent: 1-motor vibration, 2,3,4-vibration of planetary gearbox in three directions: x, y, and z, 5-motor torque, 6,7,8-vibration of parallel gear box in three directions: x, y, and z. Signals of rows 2,3,4 are all effective.

    9.Acoustics and Vibration Database(振动与声学数据库)

    提供一个手机振动故障数据集的公益性网站链接:http://data-acoustics.com/

    10.机械设备故障诊断数据集及技术资料大全

    有比较多的机械设备故障数据资料:https://mekhub.cn/machine-diagnosis

    11.CoE Datasets美国宇航局预测数据存储库

    • 链接:https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/
      [藻类跑道数据集] [CFRP复合材料数据集] [铣削数据集]
      [轴承数据集] [电池数据集] [涡轮风扇发动机退化模拟数据集] [PHM08挑战数据集] [IGBT加速老化Sata集] [投石机]数据集] [FEMTO轴承数据组] [随机电池使用数据组] [电容器电应力数据组] [MOSFET热过载时效数据组] [电容器电应力数据组 - 2] [HIRF电池数据组]

    参考文献

    • [1]mith W A, Randall R B. Rolling element bearing diagnostics using the Case Western Reserve University data: A benchmark study[J]. Mechanical Systems and Signal Processing, 2015,64-65:100-131.
    • [2]rstraete D, Ferrada A, Droguett E L, et al. Deep learning enabled fault diagnosis using time-frequency image analysis of rolling element bearings[J]. Shock and Vibration, 2017,2017.
    • [3] Bin Hasan M. Current based condition monitoring of electromechanical systems. Model-free drive system current monitoring: faults detection and diagnosis through statistical features extraction and support vector machines classification.[D]. University of Bradford, 2013.
    • [4] Lessmeier C, Kimotho J K, Zimmer D, et al. Condition monitoring of bearing damage in electromechanical drive systems by using motor current signals of electric motors: a benchmark data set for data-driven classification: Proceedings of the European conference of the prognostics and health management society, 2016[C].
    • [5] Porotsky S, Bluvband Z. Remaining useful life estimation for systems with non-trendability behaviour: Prognostics & Health Management, 2012[C].
    • [6] Nectoux P, Gouriveau R, Medjaher K, et al. PRONOSTIA: An experimental platform for bearings accelerated degradation tests.: IEEE International Conference on Prognostics and Health Management, PHM’12., 2012[C]. IEEE Catalog Number: CPF12PHM-CDR.
    • [7] E. S, H. O, A. S S V, et al. Estimation of remaining useful life of ball bearings using data driven methodologies: 2012 IEEE Conference on Prognostics and Health Management, 2012[C].2012
      18-21 June 2012.
    • [8] Gousseau W, Antoni J, Girardin F, et al. Analysis of the Rolling Element Bearing data set of the Center for Intelligent Maintenance Systems of the University of Cincinnati: CM2016, 2016[C].
    • [9] Qiu H, Lee J, Lin J, et al. Wavelet filter-based weak signature detection method and its application on rolling element bearing prognostics[J]. Journal of Sound and Vibration, 2006,289(4):1066-1090.
    • [10] P. C, S. Z, J. T. Preprocessing-Free Gear Fault Diagnosis Using Small Datasets With Deep Convolutional Neural Network-Based Transfer Learning[J]. IEEE Access, 2018,6:26241-26253.
    • [11] B. W, Y. L, N. L, et al. A Hybrid Prognostics Approach for Estimating Remaining Useful Life of Rolling Element Bearings[J]. IEEE Transactions on Reliability, 2018:1-12.
    • [12] S. S, S. M, R. Y, et al. Highly Accurate Machine Fault Diagnosis Using Deep Transfer Learning[J]. IEEE Transactions on Industrial Informatics, 2019,15(4):2446-2455.
    展开全文
  • 资源汇总

    2020-12-15 16:13:49
    2、中国-东南大学-齿轮数据数据链接: https://github.com/cathysiyu/Mechanical-datasets 3、中国-西安交通大学-轴承故障诊断数据数据链接: http://biaowang.tech/xjtu-sy-bearing-datasets/ 4、中国工业...

    算法数据获取:

    一. 故障诊断数据集:

    国内篇

    1、中国-武汉大学-转子数据集
    数据链接:
    https://data.mendeley.com/datasets/p9bsmj4xwg/1

    2、中国-东南大学-齿轮箱数据集
    数据链接:
    https://github.com/cathysiyu/Mechanical-datasets

    3、中国-西安交通大学-轴承故障诊断数据集
    数据链接:
    http://biaowang.tech/xjtu-sy-bearing-datasets/

    4、中国工业大数据创新大赛数据库
    数据链接:
    http://industrial-bigdata.com/datasets

    5、中国-江南大学-轴承故障诊断数据集
    数据链接:
    http://industrial-bigdata.com/datasets

    国外篇

    1、美国-凯斯西储大学轴承数据中心(CWRU)轴承故障诊断标准数据集
    数据链接:
    https://csegroups.case.edu/bearingdatacenter/pages/welcome-case-western-reserve-university-bearing-data-center-website

    2、美国-机械故障预防技术协会(MFPT)轴承故障诊断数据集
    数据链接:
    https://mfpt.org/fault-data-sets/

    3、德国-帕德博恩大学-转子故障诊断数据集
    数据链接:
    https://mb.uni-paderborn.de/kat/forschung/datacenter/bearing-datacente

    展开全文
  • 知识转移策略的跨域故障诊断

    千次阅读 2020-06-13 01:17:09
    知识转移策略的跨域故障诊断背景转移学习概述转移学习方法研究动机和问题设置跨域方法在故障诊断中的应用开源故障数据集 背景 数据驱动诊断方法的常用验证方式为通过将一个数据集分为训练集和测试集来保证这两个先决...

    背景

    数据驱动诊断方法的常用验证方式为通过将一个数据集分为训练集和测试集来保证这两个先决条件。但是,在实际的诊断场景中,这种验证方式是不切实际的,由于以下两个问题,很难满足前提条件:
    1. 通常,在建立诊断模型之前很难甚至不可能获得与测试数据集具有相同分布的训练数据集,因为这意味着我们需要在同一台机器甚至相同的工作条件下收集每个故障类别的数据。
    2. 对于使用中的机器,很难获得稀有的带标签的故障数据,因为在故障情况下可能不允许其连续工作。

    这两个障碍使得基于传统机器学习和深度学习的诊断方法无法应用于工程故障诊断。
    首先,由于相同的工作原理和从中生成这些数据的机器的相似故障机制,应该在来自多个来源的这些数据中包含相似的故障特征。第二,数据驱动的故障诊断(称为智能故障诊断)旨在模仿使用机器学习技术的诊断人员,而诊断人员可以通过扩展从其他相同类型的机器中学到的知识(不仅是从他们感兴趣的机器中学到的知识)来诊断故障。 也就是说,**在建立诊断模型时,可以利用相关数据集中的知识。**但是,当存在分布差异时,常规的机器学习和深度学习技术都无法直接使用。为了充分利用先前的多源数据,跨域故障诊断是一项新的尝试,它有可能克服当前数据驱动型故障诊断中的障碍。
    在这里插入图片描述
    (1)首次根据研究动机,跨领域策略和应用对象,对跨域故障诊断的研究工作进行了系统介绍。(2)在这篇综述中,包括了所有传统的转移方法,深度转移方法和基于对抗的转移方法,同时还总结了一些没有转移的跨域诊断方法。(3)我们对开源数据集进行了全面总结,以方便读者开始研究跨域故障诊断。(4)讨论了跨域故障诊断的几个未来研究方向。

    转移学习概述

    转移学习旨在解决两个或多个领域之间的学习问题。定义1所定义的域D是对相应主题或系统的特征的数学描述,例如图像分类中的图像特征、轴承和齿轮故障诊断中的振动信号特征。特征空间X通过D个特征描述被试的特征,P(X)描述被试所考虑问题的具体分布状态。与域D相对应的任务T,如定义2所示,定义了学习目标,即Y和X之间的映射关系。在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    在统计学习理论框架下的传统机器学习算法遵循一个基本假设,即训练数据和测试数据是从同一分布中提取的。如果不成立该假设,则这些方法的泛化性能可能会急剧下降。不幸的是,数据集之间的分布差异是现实应用中的普遍现象。例如,**在故障诊断中,不同的工作条件,负载,传感器的位置以及机器尺寸等可能导致振动信号发散,并导致特征空间中的分布差异。**在视觉识别中,不同的环境,光线,背景,分辨率和视角是可能影响图像数据分布的潜在因素[18],[19]。通常,为了保证传统学习方法在新的但相似的任务中的性能,目标任务下需要大量标记样本以重新训练相应的模型。但是,为任何新任务标记大量目标样品是费力的,并且对于实际应用而言是不现实的。同时,传统的机器学习方法在受到来自不同于测试条件的不同条件的数据训练时往往会崩溃。因此,开发能够利用来自其他相关数据集的知识(具有足够标记的样本但分布不同)来构造针对当前任务的健壮模型的学习算法是一个重要且引人注目的问题。通常,对来自源域的样本进行完全标记,但是目标域中的样本可能会在特定问题设置中可能未标记或部分标记
    转移学习旨在利用来自一个或多个相关数据集(称为源域)的知识来提高模型在当前数据集中(目标域)的性能。它的灵感来自于人类的能力,这些能力重用了先前任务中的知识,而无需从头开始学习新任务。在图中说明并比较了迁移学习和传统机器学习的学习过程

    在这里插入图片描述

    转移学习方法

    在计算机视觉和自然语言理解等领域,转移学习已成为近年来广泛讨论的话题。在[17] – [18] [19] [20] [21] [22]中可以参考有关转移学习和领域适应的一些评论。通常,转移学习方法根据“转移内容”的标准分为几类[17]。此外,由于强大的表示学习和端到端的培训能力,基于深度学习和基于对抗的传输方法最近得到了逐步研究[19]。因此,简要介绍以下几种转移策略,以帮助读者理解转移学习。
    1)实例重新加权方法
    实例重加权方法可用于解决域偏移问题,在该域偏移问题中,将估计的权重合并到损失函数中,以使加权的训练分布近似于测试分布。实际上,迁移学习的目标是学习一个函数ft(⋅)来预测目标域中测试样本的类标签。一般来说,ft(⋅)的最优参数θ*
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述这意味着利用源域数据训练的模型可以通过估计每个训练样本的权值Pt(X)/Ps(X)推广到目标域。有许多现有的策略是为学习权重而设计的[25]-[26][27][28][29]。Dai等人提出的一种流行的方法,称为TrAdaBoost。[27]已应用于故障诊断领域。其试图在集成学习架构AdaBoost下迭代重写源域数据。在每一轮迭代过程中,都会根据目标域数据计算出的误差,对源域样本重新加权,以减少“坏”源样本的影响,同时鼓励“好”源样本为目标域做出更多贡献。基于样本重加权的域自适应方法主要针对源域和目标域之间的差异不太大的情况[19]。
    2)特征转移方法
    转移学习的另一个直观想法是学习一个新的特征表示空间,其中源域和目标域看起来“相似”并且可以进行比较。在这种传输方法下的潜在假设是,存在一个公共子空间或更高级别的表示形式,用于对域之间的公共特征进行编码。在领域不变特征支持的新空间中,使用来自源领域的带标签数据训练的分类器可以通用到目标领域。 使用不同的传输标准,可以将特定的传输策略归类为:(1)特征转换[30] – [31] [32],(2)基于子空间的[33] – [34] [35],(3)基于稀疏编码的[36],[37]和(4)基于低秩表示的[38],[39]。
    转移成分分析(TCA),由Pan等人提出。[30]是一种典型的特征转移方法,已成功地应用于故障诊断问题。TCA的学习目标是寻找一个域不变的特征空间,在该空间中,两个域Ps(Xs)和Pt(Xt)之间的边缘分布距离最小。使用最大平均差(MMD)标准测量分布距离,如(3)[40]所示,TCA的目标函数由(4)定义
    在这里插入图片描述
    在这里插入图片描述
    3)分类器适应方法
    代替构造分类器之前学习领域不变特征空间,分类器自适应方法旨在直接设计用于转移学习任务的自适应分类器。这也是一种有效的策略,可以解决训练数据集与测试数据集之间分布不匹配的根本问题。根据参考文献,典型的分类器自适应方法可以分为:(1)基于核分类器的,(2)基于流形正则化的和(3)贝叶斯基于分类器
    Yang等人提出的自适应支持向量机(A-SVM)。[41]对于视觉概念分类,是理解这种转移策略的一种直观和典型的方法。A-SVM的目的是将源域分类器fs(x)对标记源数据进行训练,使之适应于目标任务的新分类器ft(x)。这个过程是通过在fs(x)的基础上添加一个形式为Δf(x)=wTϕ(x) 的偏差项来实现的
    在这里插入图片描述
    在这里插入图片描述
    4)基于深度学习的方法
    近年来,深度学习在实现语音识别,视觉目​​标识别,药物发现甚至机械故障诊断的最先进性能方面取得了巨大的成功。作为端对端系统,深度神经网络通过多个处理层来学习具有多个抽象级别的原始数据的表示形式。基于深度神经网络的转移学习方法旨在通过将领域自适应嵌入到深度学习的管道中来学习更多可转移的表示。
    基于深度学习的传输方法可以分为两类:(1)参数传输(2)表示自适应。
    参数传递是在各种应用程序中跨域方案下训练深度模型的常用策略。参数传递的直观思想是使用少量目标数据来微调预训练的深度神经网络(用于源域的模型)。通常,在具有大量标记数据的源域上训练预训练的深度神经网络
    表示适应的想法是将表示适应的目标嵌入到深度学习的过程中。通常,为了学习对故障和域不变性都具有判别力的表示形式,在深度神经网络的目标函数中添加了一个权衡项,该权衡项惩罚了域之间的表示分布差异。 使用域不变表示,可以提高深度模型在目标域上的泛化性能。
    Long 等人 提出了深度适应网络(DAN)架构。DAN基于CNN,其总体架构如图4所示。在(8)定义的DAN目标函数中,在CNN风险中加入一个基于多核MMD(MK-MMD)的自适应正则化项,在最后三个完全连通层(l1→l3)的隐式表示下,逼近源域和目标域的分布。最后,DAN增强了CNN任务特定层特征的可移植性。
    在这里插入图片描述
    其中第一项是CNN的分类成本,第二项是MK-MMD适应项。na表示源域和目标域的标记样本数。λ> 0是MK-MMD项的惩罚参数。
    图4。Long等人提出的深度适应网络(DAN)体系结构。学习可转换的特征[50]。在图中,输入表示输入层,conv表示卷积层,fc表示完全连接层。

    5)基于对抗的方法
    近年来,生成性对抗网络(generativedepartialnetworks,GAN)通过对抗性学习过程训练鲁棒的深层神经网络,在生成特征级表示方面取得了巨大的成功。GAN由两个模型组成:一个是提取数据分布的生成模型G,另一个是通过预测二进制标记来区分样本是来自G还是训练数据集的判别模型D。训练D以最大化将正确标签分配给训练示例和G生成的样本的概率。同时训练G使log(1-D(G(z))最小化。
    其中Pz(z)表示输入噪声的先验分布,Pdata表示数据分布
    其中Pz(z)表示输入噪声的先验分布,Pdata表示数据分布。

    受对抗学习过程的启发,基于对抗的迁移学习方法已被广泛研究为一种日益流行的想法。根据不同的策略,基于对抗的方法可以分为两类。 第一个是基于生成的策略[55] – [56] [57],其核心思想是在源数据的帮助下生成带有地面注释的合成目标数据,然后通过以下方式启用跨域任务:使用合成的目标数据。第二种是基于对抗适应的策略[58],[59],目的是通过使用域区分符来适应源域和目标域的表示形式分布。 在对抗学习过程中,当域区分符无法区分源域和目标域时,通过深度神经网络学习到的表示形式的相似性将得到保证。

    研究动机和问题设置

    在这里插入图片描述
    1)研究动机
    a:动机1:解决不同操作条件之间的跨域故障诊断

    训练数据集和测试数据集之间的分布差异是影响数据驱动故障诊断方法的泛化性能的根本原因。 机械系统运行条件的变化是可能导致数据集之间分布差异的主要因素。 因此,采用转移学习的方法是第一个动机,即使用从同一台机器的其他运行状况收集的历史数据为当前运行状况构建有效的故障识别模型。

    在旋转机械的诊断任务中,例如转子系统,轴承和齿轮箱,振动信号被最广泛地用于推断机械的健康状况,因为可以使用低成本的振动传感器轻松测量丰富的故障信息。旋转速度的变化将影响被测信号的振动频率和幅度,并进一步影响特征空间中数据的概率分布。 此外,工作负荷根据实际工业应用中的实际要求而变化。解决这种情况下故障诊断方法的性能下降非常重要。例如,在[60] – [61] [62] [63] [64] [65] [66] [67]中[68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78]提出了几种转移策略,以提高目标操作条件下诊断模型的性能通过重用来自不同转速和负载的数据。

    在工业生产中,工作环境的噪声是不可避免的且不可预测的,这也可能会改变特征空间中数据的分布状态。 针对这个问题,[73]和[74]提出了两种基于深度学习的方法,它们具有良好的抗噪和域自适应能力。

    在[79]中,Wang 等人。提出了一个深层传输网络来解决不同环境温度下电力设备的诊断问题。另外,在许多研究工作中[80] – [81] [82] [83] [84] [85] [86] [87] [88] [89],仅在不同工况之间进行诊断任务模拟传输方案以验证其方法的有效性。但是,这些研究工作的最终目的是解决一般的跨域故障诊断问题,而不仅限于工作条件的差异。

    b:动机2:解决不同故障程度之间的跨域故障诊断
    除了在不同工况下的动力外,还有一些研究工作考虑了不同故障程度之间的诊断任务[85],[90] – [91] [92] [93]。张等。 [90]使用不同故障直径的数据和不同负荷下不同故障直径的数据验证了他们提出的轴承诊断方法。参考文献[85],[92],[93]还研究了他们的方法对不同故障程度之间的诊断任务的性能。此外,早期故障的诊断是一个非常重要和困难的问题。通常,非常有限的初始故障数据可用于训练鲁棒的诊断模型,尤其是基于深度学习的模型Chen 等。在[91]中提出了一种基于深度自动编码器的参数传递学习方法。所提出的方法可以使用具有明显故障特征的故障样本来促进早期故障诊断

    c:动机3:通过利用来自不同但相关的机器或仿真模型的知识来提高诊断性能
    在上述研究工作中,尽管用于训练模型的源域数据集和要识别的目标域数据集来自不同的工作条件,工作环境或故障程度,但是从中收集监视信号的机器或系统是一样的。 但是,由于在过去使用要诊断的机器期间发生所有故障模式的可能性很低,并且通常可以收集有限数量的故障样本来训练诊断模型,因此在实际应用中实施该诊断方案可能会很费力。。

    通常,从其他相同类型的机器,实验室中的模拟实验或数学模拟模型收集或生成历史故障数据是更可行,更容易的方法。从可行性的角度来看,这些数据还包含此类机器或系统的固有故障信息,并且使用这些数据来训练诊断模型更符合数据驱动型故障诊断的工程要求。

    在这种动机下,几项研究工作组织了跨域诊断任务,即从不同的机器上获取训练数据集和测试数据集,以验证相应的转移诊断方法[94] – [95] [96]。在[94]中,Guo 等。提出了一种智能方法,即深度卷积传递学习网络(DCTLN),用于机械故障诊断。基于三个不同的数据集(凯斯西储大学(CWRU)轴承数据集,智能维护系统(IMS)轴承数据集和铁路机车(RL)轴承数据集)的六个跨域任务被用来验证该方法的有效性。在[95]中,Zhang 等人。提出了一种基于字典的监督转移子空间学习方法,该方法利用来自不同井的监测数据诊断抽油杆抽油系统。郑等。在[96]中提出了一种考虑多个源域的故障诊断方法,该方法利用一个轴承的数据建立了诊断模型,并诊断了不同模型的另一个轴承。

    此外,有一些研究工作使用实验室(或人工故障)的故障模拟数据来帮助诊断真实机器(或自然故障)的故障模式[92],[97] – [98] [99] [100 ] ]。这些研究工作的直观动机是,在实验室中模拟故障模式比在实际工程中收集故障数据更容易。在[97]和[98]中,Yang 等人。提出了两种在CNN框架下的深度传递方法,以利用实验室轴承仿真数据中的诊断知识来诊断实际的机车轴承。可以在以下地方找到类似的诊断案例[100]用于转子系统故障诊断。Kim和Youn [92]还专注于轴承故障诊断,根据从人为故障数据到寿命测试中收集的实际损坏数据的任务,基于深度参数传递评估了他们的诊断方法。

    另外,在实际应用中,由物理机生成的历史故障数据的可用性可能非常有限。可以描述物理机器或系统的固有行为和规则的仿真模型可以在不同的健康状况甚至不同的运行状况下生成大量数据。**利用来自虚拟仿真数据的知识(还可以提供对故障特征的洞察力),也是在故障诊断应用程序中使用转移学习的一种动机。**徐等。 [101]提出了一种结合深度迁移学习的数字孪生辅助故障诊断方法。源域的故障数据由过程设计器和过程模拟建立的数字车间生成,而目标域是相应的物理车间。Sobie 等。 [102]提出了一种模拟驱动的轴承种族故障分类智能诊断方法。在他们的方法中,采用了西门子LMS Imagine Lab Amesim仿真软件实现的一维3-DOF(自由度)轴承动态模型来创建故障仿真数据。在预处理步骤之后,使用生成的模拟数据训练分类模型,CNN和最近邻动态时间扭曲,然后将其用于诊断种子故障实验数据(CWRU数据,SpectraQuest数据和机械故障预防技术协会)数据)和工业风力涡轮机轴承数据。

    d:动机4:使用可视图像简化故障诊断任务
    通常,尽管深度神经网络可以通过多层转换来提取高质量的特征,但是训练用于故障诊断的深度学习模型需要大量的标记样本和大量的计算资源。然而,有限的故障数据不能支持鲁棒的多层神经网络的训练。受计算机视觉深度学习成功的推动,一些研究工作转移了使用ImageNet数据集(计算机视觉中广泛使用的图像数据集,可在http://www.image-net.org上进行预训练)对深度网络的一些参数进行传输,以加快培训并提高用于机械故障诊断的网络的准确性[103] – [104] [105] [106]。

    在[103]中,曹等人。提出了一种基于深度卷积神经网络的变速箱故障诊断学习方法。使用来自ImageNet数据集的大量图像数据(120万个),将经过预训练的深度网络的前21层传输到新的网络中,以进行故障诊断。新的网络由相同的前21层经过预训练的网络和三个新添加的层组成,并使用了针对变速箱故障诊断任务的有限数据进行了微调。同样,邵等人。[104]开发了深度学习框架来实现高精度的机器故障诊断。预先训练的网络VGG-16也使用ImageNet数据集进行了训练。但是,在微调阶段,预训练网络的最后两个卷积块和新添加的全连接层都是可以训练的。另外,[105]和[106]也提出了两种相似的用于机械故障诊断的深度传递方法。预训练网络也使用ImageNet数据集进行了训练,但是深度网络的结构与[103]和[104]中的结构不同。

    e:动机5:利用信息来源不完整的知识
    可能存在这样的诊断情况,即可以获得大量不完整信息的训练数据。 一些研究工作讨论了如何通过转移学习方法利用这些不完整的源域样本来促进目标诊断任务[90] – [91] [92] [93],[107],[108]。

    在[90]中,首先使用包含三种不同健康状况样本的源域数据对深层CNN进行训练,然后使用少量包含五类样本的目标数据对新的CNN进行微调。从预训练的CNN传输部分参数后。

    Zhong 等。提出了一种特征映射方法,通过重用在常规数据集上训练的CNN的内部层来提取故障数据集的特征表示[108]。这项工作表明了CNN在大型带注释的燃气轮机正态数据集上学习到的特征表示如何可以有效地转移到具有有限故障数据的故障诊断任务中。

    此外,参考文献[107]提出了一种故障诊断框架,该框架使用结构上不完整的样本来促进目标域的模型训练。他们宣称大量不完整的样本也包含有用的信息,将它们转移到目标诊断任务中将很有帮助。

    2)不同的问题设置
    对于上述研究工作,诊断问题的设置主要可以分为四类。尽管动机可能不同,但是这些研究工作的基本思想是利用相关任务中的诊断知识来帮助学习当前的诊断任务。通常,在诊断模型的训练阶段,总是始终只有一个带有大量完全标记样本的源域,但是目标域中可用样本的情况却有所不同。具体来说,主要有以下四种情况:
    在这里插入图片描述
    在这里插入图片描述
    b又称无监督域自适应
    在这里插入图片描述
    c只有目标域的正常样本可用,d通常解决域之间差异相对较小的诊断任务,例如不同操作条件

    在这里插入图片描述

    跨域方法在故障诊断中的应用

    分为四类:(1)传统传输方法,(2)深度传输方法,(3)基于对抗的方法和(4)其他方法。

    1)传统转移方式
    分为:1)基于实例权重的方法,2)基于特征的方法,以及3)分类器适应方法。
    在这里插入图片描述
    在[81]中,Shen 等人。提出了一种基于奇异值分解(SVD)+ TrAdaboost的轴承故障诊断方法。在他们的方法中,用SVD提取了振动信号自相关矩阵的特征值矢量作为诊断特征,Dai 等人 提出了基于实例的传递算法TrAdaboost 。[27]被应用来从不同的操作条件重新加权源域数据。这种方法也被用于感应电动机的故障诊断[83]。
    基于特征的转移学习方法在跨域故障诊断中得到了广泛的应用和发展。一些研究工作试图通过特征变换来学习一个新的空间,从而减少源域和目标域之间的分布差异。TCA,由Pan等人提出。[30]已被谢等人用于齿轮跨域故障诊断。[60],[61],滚动轴承,Chen等人。[72]和郭等人的delta 3D打印机。[123]。同样,Kang等人。[67]利用半监督TCA(SSTCA)诊断运行条件变化下的轴承故障。将多项式核Kpoly和径向基函数(RBF)核Krbf相结合,构造了SSTCA的多核函数Ki,j=αKpoly+(1-α)Krbf,其中0≤α≤1为多核系数。

    在[77]中,Tong等人。提出了一种基于可转移特征的轴承故障诊断方法,称为区域自适应(DATF)。DATF的目标是通过WTXD学习一个特征空间,在该空间中,域之间的边缘分布和条件分布同时最小化。XD=[Xs,Xt]∈RD×(ns+nt)是训练数据集的数据矩阵,其中Xs被标记,Xt被取消标记。DAFD的成本函数是
    在这里插入图片描述
    此外,一些研究工作提出了基于子空间的转移学习方法来解决跨域故障诊断问题。在文献[75]中,Zhang等人提出了一种基于子空间对准的无监督域自适应方法,用于不同运行条件下的轴承故障诊断。首先,利用主成分分析(PCA)生成源域Zs∈RD×d的子空间和目标域Zt∈RD×d的子空间。Zs和Zt的基向量是PCA变换的d个最大特征值对应的d个特征向量,利用PCA变换将源域和目标域(d维)的数据投影到d维子空间。提出了一种子空间对准方法,该方法通过变换矩阵W对准两个子空间,即解决后续优化问题。
    在这里插入图片描述
    此外,沉等。 [80]提出了一种改进的最小二乘支持向量机(LSSVM)方法,该方法将惩罚项和源域数据的约束条件添加到LSSVM的原始目标函数中。该方法属于分类器自适应算法,实现了滚动轴承的跨域故障诊断。

    2)深度转移方法
    在过去的几年中,已经深入研究了基于深度学习的用于跨域故障诊断的传递学习方法,可以将其分类为:(1)表示自适应,(2)参数传递和(3)其他深层转移策略。
    在表中,还列出了这些研究工作中采用的特定网络体系结构,包括CNN,AE及其变体和稀疏过滤(SF)。
    在这里插入图片描述
    a:基于表示适应的方法
    从表示学习的角度来看,深度网络可以通过多层非线性转换来学习高级抽象表示。 通常,较低层中的表示比较笼统,较高层中的表示则更针对学习目标。由于跨域故障诊断中域之间原始信号的差异,使用源域数据训练的网络在应用于目标域数据时往往会崩溃。这意味着同一深度网络学习到的源域和目标域的表示形式也不同。

    基于表示自适应的方法旨在学习在顶层或多个中间层的领域不可知表示,然后使用来自源域的大量样本的训练网络可以很好地执行目标任务。通常,这种方法通过在学习过程中增加一个权衡项来调整表示的统计分布,从而惩罚域之间的分布差异。 分布距离统计,如MMD[65]、[79]、[84]、[85]、[88]、[89]、[94]、[97]、[98]、[101]、[112]、相关比对(CORAL)距离[113]和Kullback-Leibler(KL)散度[63],通常用于比较故障诊断中域之间的分布偏移。我们将这些方法分为:(a)顶层自适应和(b)多层自适应。
    i)顶层适应
    直观地,深度神经网络由特征提取器和分类器(或标签预测器)组成。特征提取器的顶层表示是所有层中最抽象的表示,它直接连接到分类器,例如Softmax层或SVM,对应于特定的分类或回归任务。为了适应域之间的转换,提出了一些研究工作以在特征提取器的顶层中对齐源域和目标域的分布。通过这种方式,学习了两个域之间的域不变表示
    在CNN架构下,Han等人。[85]提出了一种具有联合分布自适应的深度传输网络。该方法的体系结构如图7所示。第一步,在源域的充分标记数据上预先训练CNN模型,并最小化以下优化目标
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    式中:ϕ:X→H是从原始空间到RKHS的非线性映射。在域自适应训练过程中,对未标记目标样本的伪标签进行迭代更新,以获得最优的预测精度。第三步,应用领域适应训练后的CNN对目标领域的未观察样本进行识别。对滚动轴承和齿轮箱进行了大量的跨域诊断,验证了该方法的适用性和实用性。
    图7 无监督域自适应的深度传输网络体系结构[85]。
    可以在[79]中找到类似的研究工作,以进行电力设备故障诊断。此外,杨等。在[97]中还提出了一种称为卷积自适应网络(CAN)的转移学习方法,CAN与[85]中提出的方法之间的主要区别在于CAN只是减少了两个域的顶层表示之间的边际分布差异,并且分布距离由MK-MMD估算

    同样在CNN架构下,Guo 等人。 [94]提出了一种智能的机械故障诊断方法,称为深度卷积传递学习网络(DCTLN),它也遵循顶层自适应策略。在他们的问题设置中,训练阶段提供了未标记的目标域样本。DCTLN包括条件识别模块和域自适应模块,如图8所示。通过具有16层的一维CNN来实现状况识别,其中最后一层被视为健康状况分类器。领域自适应是通过领域分类器和分布距离度量来实现的。自适应模块已连接到特征提取器,以帮助CNN学习领域不变表示。在DCTLN中, 第一个优化目标是使源域数据上的健康状况分类错误最小化, 以获取能够区分不同健康状况的学习功能。对于具有C类的源域数据集,条件识别的目标函数定义为标准Softmax回归损失
    在这里插入图片描述
    在这里插入图片描述
    DCTLN的第二个优化目标是最大化与特征抽取器相连的域分类器在源数据和目标数据上的域分类误差。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    图8 深卷积转移学习网络(DCTLN)的结构说明[94]。conv1,conv6表示卷积层,pool1,pool6表示池层,fc1,fc2,和fc3表示完全连接层。FO表示健康条件分类器的输出,DO表示领域分类器的输出。
    在这里插入图片描述
    在[112]中,Li 等。提出了一种在CNN架构下用于滚动轴承故障诊断的深度距离学习方法。他们方法的目标函数是
    在这里插入图片描述
    在AE架构下,Wen 等人。 [88]提出了一种顶层深度适应方法,该方法使用三层稀疏自动编码器(SAE)提取功率谱的特征,并应用MMD项来适应特征数据之间的分布差异。源域和目标域。所提出的方法的体系结构如图9所示。首先,通过标记的源数据和未标记的目标数据对三层稀疏自动编码器网络进行了预训练。然后,通过优化以下目标函数对整个网络进行微调
    在这里插入图片描述
    在这里插入图片描述
    徐等。 [101]还提出了一种类似的方法,即基于深度转移学习的两相数字双胎辅助故障诊断方法,该方法也是基于SAE体系结构的。

    ii)多层适应
    在特征提取器的顶层实现分布对齐是深度域自适应的最终目标。但是,顶层表示是通过对应于多个中间表示的不同级别的多个抽象过程来学习的。源域和目标域之间的多个中间层中表示的分布差异可能会影响顶层的最终适应结果。一些研究工作已经在顶层和多个中间层中同时实现了域自适应[63],[65],[84],[89],[98],[113]。
    在CNN架构下,Yang等人。提出了一种基于特征的传递神经网络(FTNN),利用实验室轴承数据中的知识对实际机车轴承进行诊断[98]。该FTNN模型的结构如图10所示,它采用域共享CNN从源域和目标域的原始振动数据中提取可转移特征。在域自适应过程中,自适应学习特征在两个卷积层conv1、conv2和两个完全连通层fc1、fc2中的分布。FTNN目标函数中的多层域适应项LD定义如下
    在这里插入图片描述
    图10。基于特征的传递神经网络(FTNN)模型的体系结构[98]。
    在[84]中,Li等人。提出了一种类似CNN结构下的多层域自适应方法。将衡量两个区域在多层中分布差异的MK-MMD项与CNN的分类损失相结合,用于学习区域不变特征。

    在AE架构下,Lu等人。[89]提出了一种用于故障诊断领域自适应的深层神经网络(DAFD)。DAFD遵循与[84]、[98]不同的域自适应策略,即源域和目标域之间的特征分布是逐层对齐的。在每一层中,在自动编码器Lae的损失函数中增加了一个用于减小源域和目标域分布差异的MMD项LD和一个用于增强代表性特征的加权正则化项Lweight。DAFD模型的最终目标函数

    在这里插入图片描述
    比较[89]和[84],[98],发现DAFD [89]的域自适应过程是在无监督的表示学习阶段逐层实现的,但是[84]和[98]中的过程是在有监督的学习阶段中通过一个步骤实施的
    类似于[89],钱等人。提出了一种基于SF结构的旋转机械故障诊断的深度传递学习方法,该方法也是一种无监督的特征学习方法[63]。在特征提取过程中,用高阶Kullback-Leibler(HKL)度量的分布距离惩罚项LD(φs,φt)与SF损失相结合。然后,特征提取器的目标函数是
    在这里插入图片描述

    b:基于参数传递的方法
    从特征转换的角度来看,深度神经网络通过从训练数据集中学习到的多层参数将输入信号转换为新的空间。因此,网络的输入和输出之间的隐式关系模型由各层之间的参数确定。对于跨域方案,参数传递方法假定相关任务的各个模型应共享一部分参数θcom

    在这里插入图片描述
    θcom 代表共同的参数,带 ’ 分别表示源域和目标域的特定参数

    基于这种想法,一些研究工作提出在训练网络执行目标任务时从源任务网络继承部分参数[69],[70],[87],[90] – [91] [92 ] ] [93],[103] – [104] [105] [106] [107] [108] [109]。在深度神经网络架构下,这些参数传递方法的基本过程包括三个主要步骤:
    1.使用源域数据来训练预训练的网络A。通常,来自源域的数据被完全标记,并且数据量足够大以训练健壮的标识模型。
    2.构造一个新的网络B用于目标任务,并从预训练的网络A传输参数的一部分用于初始化网络B。
    3.使用来自目标域的少量数据微调新网络B。

    在大多数情况下,新构造的网络B具有与网络A相同的特征抽取器结构,并且特征抽取器的参数是使用网络A在相应层中的参数初始化的。但是网络B的分类器层通常是以一种新的结构来构造的,其参数是随机初始化的
    这些用于跨域故障诊断的参数传递方法的微调策略可以归纳为四类,如图所示:
    1.使用目标域[69],[70],[87],[90],[93],[103],[106]和[109]的数据微调所有层(包括特征提取器和分类器);
    2.微调特征提取器和分类器层的一部分[104],[109];
    3.只需微调分类器层[105],[108],[109];
    4.选择性参数微调[92]。
    在这里插入图片描述
    在[109]中,Han等人。提出了一种基于预训练CNN的参数传递框架。在他们的研究工作中,讨论并比较了三种不同的参数传递策略,从深层结构的不同层次探讨了特征传递的适用性和意义。他们认为数据集大小和相似性这两个因素将指导参数转移策略的选择。当目标域的数据集较大时,对整个网络进行微调是一个不错的选择。当目标数据集较小且与源数据集相似时,最好确定特征抽取器的参数并对分类层进行微调。在最后一种情况下,目标数据集既小又不同于源数据集,重新训练前卷积块和分类层可能是有效的
    Kim and Youn [92]提出了一种选择性参数冻结方法,该方法可以将仅不必要的参数重新训练到目标数据,同时保留源网络中的重要参数。所提出的方法为调整层内的冻结和微调提供了一种选择

    c:其他深层转移策略
    除了以上两种策略外,还提出了其他几种基于深度神经网络的传输策略来解决跨域故障诊断任务。
    在[73]和[124]中,使用了一种**简单的域自适应方法,称为自适应批处理规范化(AdaBN)[125],它在网络上的所有批处理规范化层中将统计信息从源域调制到目标域,用于处理跨域故障诊断。**在AdaBN中,每一层按域的标准化保证了每一层接收的数据符合相似的分布,而不管源域或目标域是什么。给定一个使用源域数据预先训练的深度神经网络模型,AdaBN算法如下25],

    在这里插入图片描述
    在[82]中,Li等人。提出了一种基于深生成神经网络的跨域故障诊断方法。首先,通过训练Cs-1生成器生成目标域不同类别的伪故障样本,记录每一类别的正常样本和故障样本之间的关系。其次,训练了一个用于跨域分类的顶层深度自适应神经网络。在[126]中,CNN与边缘化的叠加去噪自动编码器结合,学习故障敏感特征,消除不同条件下的数据分布差异。在[68]中,肖等人。结合TrAdaBoost和CNN提出了一种故障诊断框架。

    3)基于对抗的方法
    最终,深度域适应的目标是学习源域和目标域之间的域不变表示。为了实现此目的,通常采用一种统计量来度量源域和目标域的表示形式之间的分布差异。然后,在表示学习过程中,通过将其权衡项添加到深度神经网络的原始目标函数中,可以惩罚域之间的分布距离。也就是说,源域和目标域的相似性由特定的距离测量统计量确定,并且具有低距离统计量值的表示被认为是域不变的。受到GAN的启发[54],基于对抗的领域适配通过相对于领域鉴别器的对抗目标来确定领域之间的相似性。
    领域对抗性神经网络(DANN)是一种具有代表性的基于对抗性的领域自适应方法(其结构如图12所示),已经在计算机视觉应用中成功实现[58]。Wang等人。在[86]中将DANN引入跨域故障诊断。为了使用深度神经网络学习区分和域不变表示,DANN使用了一种完全不同的方法,通过一个经过区别训练的分类器,基于分布的可分性来测量分布之间的差异。**DANN包括三个部分:带参数θf的特征提取器Gf、带参数θc的标签预测器Gc和带参数θd的区域鉴别器Gd。**在学习过程中,为了保证表示的区分性,DANN首先通过优化特征抽取器和标签预测器的参数来最小化标签预测损失Lc(θf,θc)。同时,为了获得域不变特征,DANN优化了特征提取器的参数,使域预测损失Ld(θf,θd)达到最大,这意味着源域和目标域的特征分布是相似的。同时,对区域鉴别器的参数θd进行优化,以减小区域预测的损失。从形式上讲,DANN可以被认为是下面的min max问题
    Architecture of domain-adversarial neural network (DANN) [58].
    图12 领域对抗神经网络(DANN)的体系结构[58]。
    在[120]中,同样的策略也被用来解决风力发电机和齿轮箱的诊断问题。但是,在训练阶段,没有使用目标域数据,而是将训练数据集随机分为两部分,以进行对抗训练。由于训练数据集包含来自多个来源的数据,因此在对抗过程中可以学习这些领域的领域不变特征或通用诊断知识。

    在上述[86],[120]的研究工作中,源域和目标域在对抗学习过程中使用了共享特征提取器,如图12所示。基于两种不同的特征提取器,Zhang 等人。 [76]提出了一种对抗性自适应一维CNN(A2CNN)方法,该方法与[59]中提出的对抗性区分域自适应(ADDA)非常相似。在A2CNN中,分别针对源域和目标域学习了两个CNN,称为源特征提取器GsF 和目标特征提取器 GŤF 如图13所示。目标特征提取器GŤF 具有相同的结构 GsF ,以及目标特征提取器的部分图层在域对抗训练之前由经过预训练的源初始化。由于允许学习更多特定于域的功能,这种方式可能更灵活。A2CNN已成功应用于在工况变化下轴承的跨域故障诊断。
    图13。对抗性自适应一维CNN(A2CNN)的体系结构[76]。
    为了减轻DANN损失的梯度消失,从而使源域和目标域的分布之间的Jensen-Shannon差异最小化,在[66]和[127]中提出了基于Wasseratein距离的对抗网络,用于受故障启发的故障诊断问题Wasserstein生成对抗网络(WGAN)[128]。
    在[66]中,Cheng等人。提出了一种基于Wasserstein距离的深度转移学习方法。在他们的方法中,Wasserstein-1距离,被用来测量域鉴别器的丢失。
    在[127]中,Zhang 等人还提出了一个名为Wasserstein距离引导多专业网络(WDMAN)的深层模型,该模型也使用Wasserstein距离来测量域歧视期间域之间的分布差异。在对抗训练过程中,WDMAN基于多个域批判者网络调整了多层域之间的分布,以提高先前的单层适应策略的传输能力。

    实际上,缺乏目标域的故障数据是影响故障诊断模型泛化性能的主要原因。使用GAN生成无限量的合成目标数据是解决这个问题的一个很有吸引力的替代方案。在[115]中,Lu等人。提出了一种结合深卷积生成对抗网络(DA-DCGAN)的直流串联电弧故障诊断方法,其结构如图14所示。DA-DCGAN首先从源域数据中学习到一种从正常到电弧的智能转换。然后利用目标域的正常数据,通过学习变换生成虚拟电弧数据,并采用域自适应方法,实现了目标域鲁棒可靠的故障诊断方案。
    图14 Lu 等人 提出的DA-DCGAN框架。[115]。

    4)其他跨域故障诊断策略
    除了使用知识转移策略解决跨域故障诊断问题的方法外,还有一些研究工作没有采用转移学习算法,而是考虑了跨域诊断任务。这些方法也是减轻传统数据驱动诊断方法的数据难题的可行方式。它们大多数是基于深度学习的诊断方法,它们从原始的监视信号(例如,振动信号[74],[99]或振动图像[116] – [117] [118],[121 ])中学习用于故障识别的抽象表示。]。基于缩小域之间差距的策略,我们将这些方法分为两个子类别:(1)基于特定的深层网络结构或训练策略;(2)基于预处理。这些方法的摘要可以在表4中找到。
    不使用转移策略的跨域故障诊断参考的摘要
    第一类是通过设计适当的网络结构或诊断模型的训练策略来减轻域差异[74],[99],[116] – [117] [118],[121]。 例如,张等人。 [74]提出了一种带训练干扰的卷积神经网络(TICNN)方法,该方法可以在嘈杂的环境和工作负载变化的情况下实现卓越的准确性,而无需任何域自适应算法。TICNN基于以下三个技巧增强了抗噪和域自适应能力:(1)在第一层使用了dropout来增加原始输入的噪声;(2)使用非常小的批处理训练来提高模型的泛化能力; (3)通过集成学习来提高算法的稳定性。其他方法,例如具有Atrous卷积的Deep Inception Net [99],基于胶囊网络的卷积神经网络[116],Snapshot Ensemble卷积神经网络[118]和噪声Deep Convolution神经模型[121]等也被采用或提出来促进模型在跨域诊断情况下的泛化能力。

    第二类是通过一些预处理方法来缓解域之间的差异,然后将传统的深度学习算法应用于构建诊断模型[100],[102],[119],[122]。

    在[100]中,Hyunseok 等人。提出了一种基于叠加全向再生信号的振动图像生成方法,然后在将其输入到DBN中进行故障识别之前,先对图像进行定向梯度直方图处理。在预处理步骤的基础上,通过使用来自小型试验台的数据训练诊断模型,所提出的方法实现了对实际500 MW汽轮机转子系统的准确诊断。值得注意的是,这种方法需要一对接近传感器。

    在[102]中,Cameron 等人。建议使用高分辨率轴承动力学仿真生成的数据来训练CNN网络,并诊断实际轴承。在他们的方法中,使用以下三个步骤对振动信号进行预处理:(1)计算加速度计信号包络;(2)在每个特征缺陷信号周期内进行角度同步平均;(3)信号归一化。包络信号包含有关轴承故障的诊断信息,角度同步平均是为了消除训练和测试数据集之间的转速和轴承模型的差异,信号归一化是为了消除振动幅度的可能影响。

    Wei 等。 [122]也提出了一种转速归一化方法来解决由转速波动引起的跨域学习问题。Han 等。 [119]提出了一种诊断框架,该框架将时空模式网络(STPN)方法与CNN相结合,可以诊断看不见的工作状态和故障严重程度。STPN建立在通过符号动态滤波生成的状态之间的跃迁概率公式的基础上,可以提取对操作条件和故障严重性具有鲁棒性的空间(测量之间)和时间特征(对于每个测量)。

    5)跨域诊断方法的输入

    实际上,不同的输入意味着不同方法可接受的不同数据类型,也意味着这些方法所需的特征抽象级别。

    在这里插入图片描述
    通常,基于传统转移学习的跨域诊断方法的输入是手工制作的功能,例如振动信号的统计参数[60],[61],[67],[71],[80],[ 96],[123],SVD特征值[81],[83]等。

    相反,基于深度转移学习,对抗策略和其他深度神经网络的跨域诊断方法的输入是原始监控信号或抽象水平较低的功能。根据不同的数据类型,我们将这些方法的输入分为两类:时间序列数据和图像数据。其中,一维时间序列是最常见的输入类型,例如原始或预处理的振动信号[68],[73],[74],[84],[90],[92],[94],[97 ] ] – [98] [99],[102],[109],[110],[120],[122],[127],[129]和频谱[63] – [64] [65] [66],[76],[78],[82],[86 ] ],[88],[89],[93],[112],[114],[124],[126]。其他方法使用2D图像作为输入,并且图像主要由信号段堆栈[70],[87],[100]和[105]生成,[115],[121]和时频表示(包括短时傅立叶变换[116],小波变换[104],[106],S变换[69],[117]和[118])。这些方法大多数基于深度神经网络,将故障特征学习,模式识别和知识传递的过程混合在一起。这是实现更高水平的智能故障诊断的新探索。

    应用

    本节总结了跨域故障诊断方法的应用。表6中提供了有关跨域故障诊断的应用对象的摘要。这些研究工作的相应统计数据如图15所示。轴承和变速箱是当前跨域诊断文献中两个最广泛的研究和验证对象。原因可能是来自不同机器和不同操作条件的一些开源故障数据可用,并且它们的跨域实验的实现相对容易
    在这里插入图片描述

    开源故障数据集

    CWRU [131],MFPT [132],帕德博恩大学数据集[133],DIRG数据集[134],IMS数据集[135],PHM12数据挑战数据集[136]和1个变速箱数据集,PHM09数据挑战数据集[137]进行了总结。

    讨论和未来方向

    在第三节中,对跨域故障诊断的研究工作进行了介绍和总结。这些研究工作大多数采用转移学习方法来解决跨域学习问题。最终,对于工业应用,数据驱动的故障诊断方法应在跨域方案下获得可比的泛化性能,在这种情况下,训练数据和测试数据来自不同的操作条件甚至不同的同类型机器。因此,开发准确的跨域故障诊断方法对于实现数据驱动型故障诊断的工业应用非常重要。将来,可以考虑并进一步研究以下潜在的研究方向:

    A.使用转移学习方法解决故障检测和RUL预后任务
    故障检测,诊断和剩余使用寿命(RUL)预后是支持基于状态的监视(CBM)系统的三个主要模块。域偏移,即训练数据和测试数据遵循不同的分布,是故障检测,诊断和RUL预后任务中的常见问题。对于故障检测,使用来自其他运行条件或其他相同类型机器的历史数据估算的检测阈值无法很好地适应当前的运行条件或要检测的机器,结果发生了错误警报。对于RUL的预后,一般来说,机器的退化过程与工作条件和工作环境密切相关,例如滚动轴承的寿命与其旋转速度,径向载荷和润滑质量有关。然而,在相同的工作条件下获取特定机器的大量生命周期数据非常困难,通常可以从其他相同类型的机器或不同的工作条件下获取生命周期数据来构建RUL预后模型。但是,使用这些生命周期数据训练的模型在直接应用于当前机器进行RUL预后时,可能会表现不佳,因为可能存在数据差异。转移学习可能是处理跨数据集检测和预后任务的可行方法,这些任务本质上也是域转移问题。通常,其他同类型机器或不同运行条件下的生命周期数据可用于构建RUL预后模型。但是,使用这些生命周期数据训练的模型在直接应用于当前机器进行RUL预后时,可能会表现不佳,因为可能存在数据差异。转移学习可能是处理跨数据集检测和预后任务的可行方法,这些任务本质上也是域转移问题。通常,其他同类型机器或不同运行条件下的生命周期数据可用于构建RUL预后模型。但是,使用这些生命周期数据训练的模型在直接应用于当前机器进行RUL预后时,可能会表现不佳,因为可能存在数据差异。转移学习可能是处理跨数据集检测和预后任务的可行方法,这些任务本质上也是域转移问题。

    但是,从有关机械健康监控的研究工作的概述来看,它们中的大多数只是着重于使用提议的转移学习或领域自适应方法解决故障识别问题。尽管在[111]中已经对转移学习的有效性进行了异常检测和[138]中进行了RUL预后的讨论,但是,更多地关注更多机器的故障检测和RUL预后任务仍然有意义。

    B.专注于不同但相同类型的机器之间的跨域诊断
    从数据获取的角度来看,转移学习减轻了基于传统机器学习算法的数据驱动型故障诊断方法的数据困境。使用转移学习,可以从不同于测试数据的分布中收集用于训练的数据,这使得有可能在实际诊断情况下构建数据驱动的诊断模型。

    当前,有关跨域故障诊断的大部分研究工作都讨论并验证了它们的传输方法在源域和目标域来自不同操作条件的跨域任务上的性能。然而,通过故障模拟从其他相同类型的机器的工作过程中或从实验室中获取各种故障的数据比从不同的工作条件中获得更可行的方式。因此,将所提出的转移学习方法应用于相同类型但不同机器之间的故障诊断任务具有更大的意义。在这种情况下,除了操作条件外,还有更多因素可能影响域之间的分布差异,并且使用迁移学习方法消除域差异更加困难。

    C.将转移学习方法与先验诊断知识相结合
    迁移学习的本质是减轻由于故障诊断问题中机器型号,运行条件​​或其他因素的差异而导致的训练数据与测试数据之间的差异。转移学习是一种可行的方式,但并非唯一。在[100],[102],[119]和[122]中,一些诊断方案通过信号预处理[100],[102],[122]或提取与领域无关的方法验证了解决跨域诊断问题的可能性手动功能[119]。例如,在[102]中将振动信号通过包络,角度同步平均和归一化先后进行处理,然后再输入到[102]中的CNN中,并且先验了有关轴承故障特征(包络)的知识,并消除了训练信号和测试信号之间的差异在这些步骤中考虑了角度同步平均和归一化。

    因此,将转移学习方法与先验诊断知识相结合可以在跨域诊断任务上实现出色的泛化性能。另外,当源域和目标域之间的差异很大时,这可能是解决跨域诊断任务的有效方法。同时,我们认为,考虑到先验诊断知识的信号预处理对于基于深度学习的诊断方法是非常必要的,因为通过深度神经网络学习一致的抽象概念(例如滚动轴承的故障特征频率)非常困难。原始监视信号(例如具有不同的转速,负载和采样频率)的网络。

    D.在多源场景下实施跨域故障诊断
    当前,上述基于迁移学习的大多数诊断方法在学习过程中仅考虑一个单一来源。但是,工程中可能有来自多个不同操作条件或其他相同类型机器的更多可用数据。来自多个来源的数据融合具有两个优点,其一是对故障特征的描述将更加全面,其二是通过增加训练数据可以减少模型训练期间过度拟合的风险。因此,从多个相关的源域中学习一般诊断知识并转移知识以促进目标任务也是一个关键问题。

    展开全文
  • 基于CNN网络的轴承故障诊断

    千次阅读 2021-08-13 21:45:29
    内容参考:《基于卷积神经网络的轴承故障 诊断算法研究》–张伟 代码参考: ...1 背景: 基于信号处理的特征提取+分类器的传统智能诊断算法,对专家经验要求高,...(1)数据量大,专业分析人员的数量严重不足,仅依靠人

    内容参考:《基于卷积神经网络的轴承故障 诊断算法研究》–张伟

    代码参考:
    https://github.com/AaronCosmos/wdcnn_bearning_fault_diagnosis

    1 背景:

    基于信号处理的特征提取+分类器的传统智能诊断算法,对专家经验要求高,设计耗时且不能保证通用性,已经不能满足机械大数据的要求。提出使用基于卷积神经网络智能诊断算法来自动完成特征提取以及故障识别。

    1.1 挑战

    机电产品故障诊断面临的挑战,有三大特点:
    (1)数据量大,专业分析人员的数量严重不足,仅依靠人力进行检测已不能满足要求,亟需能够进行自动诊断的智能算法。

    (2)数据类型多样化,每条数据来源于不同机械设备,工况,以及物理位置,数据特征难挖掘,诊断的难度加大 。

    (3)高速率情况下,装备中各零部件的联系更加紧密,一个零件的微小故障很可能引发连锁发应,致使整个设备瘫痪。

    1.2 轴承智能故障诊断算法研究现状

    轴承故障诊断时机械状态监测的热门研究方向,其算法的核心在于信号特征提取与模式分类两个部分。在轴承故障诊断领域,常见的特征提取算法有快速傅里叶变化,小波变换,经验模式分解以及信号的统计学特征等,常见的模式分类算法有支持向量机,BP 神经网络(也称为多层感知器),贝叶斯分类器以及最近邻分类器等。当下轴承故障诊断的研究热点是可以归结为 3 类:寻找更好的特征表达;寻找最适合的特征表达以及分类器的组合;以及发明新的传感器。

    1.3 智能诊断算法的研究存在以下几个问题:

    1)在一个机械系统中表现很好的特征提取器与分类器组合,当装置变化时,不能保证其能否继续保持高识别率,即算法组合的通用性不能保证。

    2)在进行故障诊断时,需要先分析机械系统的内在运行机理,再利用信号处理技术分析故障信号。这种做法,对设计人员的技术要求高,难度较大。

    3)目前利用数据驱动的特征提取方法,需要预先对信号进行快速傅里叶变换或者小波变换,这种做法存在丢失重要时域特征的可能。

    为了解决以上问题,最理想的方式是将特征提取与分类两个环节合二为一,这样不存在相互组合的难题,无需分析机械装置的内在机理,由于直接作用在原始信号上,也不会造成信息的缺失。

    然而,卷积神经网络具有“端到端”的特点,即可以通过一个神经网络完成特征提取、特征降维与分类器分类这一整套过程。卷积神经网络的这个特点无疑弥补了当下故障诊断方式的不足,为故障诊断提供了一种崭新的研究思路。

    如下图,为轴承智能诊断算法步骤分解
    在这里插入图片描述

    2 搭建卷积神经网络进行故障诊断(简称WDCNN)

    WDCNN网络搭建的两个关键点:

    1)WDCNN第一层为大卷积核,目的是为了提取短时特征,其作用与短时傅里叶变换类似。不同点在于,短时傅里叶变换的窗口函数是正弦函数,而 WDCNN 的第一层大卷积核,是通过优化算法训练得到,其优点是可以自动学习面向诊断的特征,而自动去除对诊断没有帮助的特征。

    2)为了增强 WDCNN 的表达能力,除第一层外,其与卷积层的卷积核大小均为3×1。由于卷积核参数少,这样有利于加深网络,同时可以抑制过拟合。每层卷积操作之后均进行批量归一化处理 BN(Batch Normalization),然后进行 2×1 的最大值池化。

    其中,BN目的是减少内部协变量转移,提高网络的训练效率,增强网络的泛化能力。

    网络结构图如下
    在这里插入图片描述

    网络结构参数表如下
    在这里插入图片描述

    3 实验

    数据集:凯斯西储大学(CWRU)滚动轴承数据中心

    数据网址https://csegroups.case.edu/bearingdatacenter/pages/download-data-file

    试验对象:为下图中的驱动端轴承,被诊断的轴承型号为深沟球轴承 SKF6205,有故障的轴承由电火花加工制作而成,系统的采样频率为 12kHz。被诊断的轴承一共有 3 种缺陷位置,分别是滚动体损伤,外圈损伤与内圈损伤,损伤直径的大小分别为包括 0.007inch, 0.014inch 和 0.021inch,共计 9 种损伤状态。

    如下图,为CWRU 滚动轴承数据采集系统
    在这里插入图片描述

    3.1 实验代码

    (基于Tensorflow1.5进行操作,win10,i7-9700k,RTX2070SUPER)

    (1)数据预处理代码如下

    from scipy.io import loadmat
    import numpy as np
    import os
    from sklearn import preprocessing  # 0-1编码
    from sklearn.model_selection import StratifiedShuffleSplit  # 随机划分,保证每一类比例相同
    
    
    def prepro(d_path, length=864, number=1000, normal=True, rate=[0.5, 0.25, 0.25], enc=True, enc_step=28):
        """对数据进行预处理,返回train_X, train_Y, valid_X, valid_Y, test_X, test_Y样本.
    
        :param d_path: 源数据地址
        :param length: 信号长度,默认2个信号周期,864
        :param number: 每种信号个数,总共10类,默认每个类别1000个数据
        :param normal: 是否标准化.True,Fales.默认True
        :param rate: 训练集/验证集/测试集比例.默认[0.5,0.25,0.25],相加要等于1
        :param enc: 训练集、验证集是否采用数据增强.Bool,默认True
        :param enc_step: 增强数据集采样顺延间隔
        :return: Train_X, Train_Y, Valid_X, Valid_Y, Test_X, Test_Y
    
        ```
        import preprocess.preprocess_nonoise as pre
    
        train_X, train_Y, valid_X, valid_Y, test_X, test_Y = pre.prepro(d_path=path,
                                                                        length=864,
                                                                        number=1000,
                                                                        normal=False,
                                                                        rate=[0.5, 0.25, 0.25],
                                                                        enc=True,
                                                                        enc_step=28)
        ```
        """
        # 获得该文件夹下所有.mat文件名
        filenames = os.listdir(d_path)
    
        def capture(original_path):
            """读取mat文件,返回字典
    
            :param original_path: 读取路径
            :return: 数据字典
            """
            files = {}
            for i in filenames:
                # 文件路径
                file_path = os.path.join(d_path, i)
                file = loadmat(file_path)
                file_keys = file.keys()
                for key in file_keys:
                    if 'DE' in key:
                        files[i] = file[key].ravel()
            return files
    
        def slice_enc(data, slice_rate=rate[1] + rate[2]):
            """将数据切分为前面多少比例,后面多少比例.
    
            :param data: 单挑数据
            :param slice_rate: 验证集以及测试集所占的比例
            :return: 切分好的数据
            """
            keys = data.keys()
            Train_Samples = {}
            Test_Samples = {}
            for i in keys:
                slice_data = data[i]
                all_lenght = len(slice_data)
                end_index = int(all_lenght * (1 - slice_rate))
                samp_train = int(number * (1 - slice_rate))  # 700
                Train_sample = []
                Test_Sample = []
                if enc:
                    enc_time = length // enc_step
                    samp_step = 0  # 用来计数Train采样次数
                    for j in range(samp_train):
                        random_start = np.random.randint(low=0, high=(end_index - 2 * length))
                        label = 0
                        for h in range(enc_time):
                            samp_step += 1
                            random_start += enc_step
                            sample = slice_data[random_start: random_start + length]
                            Train_sample.append(sample)
                            if samp_step == samp_train:
                                label = 1
                                break
                        if label:
                            break
                else:
                    for j in range(samp_train):
                        random_start = np.random.randint(low=0, high=(end_index - length))
                        sample = slice_data[random_start:random_start + length]
                        Train_sample.append(sample)
    
                # 抓取测试数据
                for h in range(number - samp_train):
                    random_start = np.random.randint(low=end_index, high=(all_lenght - length))
                    sample = slice_data[random_start:random_start + length]
                    Test_Sample.append(sample)
                Train_Samples[i] = Train_sample
                Test_Samples[i] = Test_Sample
            return Train_Samples, Test_Samples
    
        # 仅抽样完成,打标签
        def add_labels(train_test):
            X = []
            Y = []
            label = 0
            for i in filenames:
                x = train_test[i]
                X += x
                lenx = len(x)
                Y += [label] * lenx
                label += 1
            return X, Y
    
        # one-hot编码
        def one_hot(Train_Y, Test_Y):
            Train_Y = np.array(Train_Y).reshape([-1, 1])
            Test_Y = np.array(Test_Y).reshape([-1, 1])
            Encoder = preprocessing.OneHotEncoder()
            Encoder.fit(Train_Y)
            Train_Y = Encoder.transform(Train_Y).toarray()
            Test_Y = Encoder.transform(Test_Y).toarray()
            Train_Y = np.asarray(Train_Y, dtype=np.int32)
            Test_Y = np.asarray(Test_Y, dtype=np.int32)
            return Train_Y, Test_Y
    
        def scalar_stand(Train_X, Test_X):
            # 用训练集标准差标准化训练集以及测试集
            scalar = preprocessing.StandardScaler().fit(Train_X)
            Train_X = scalar.transform(Train_X)
            Test_X = scalar.transform(Test_X)
            return Train_X, Test_X
    
        def valid_test_slice(Test_X, Test_Y):
            test_size = rate[2] / (rate[1] + rate[2])
            ss = StratifiedShuffleSplit(n_splits=1, test_size=test_size)
            for train_index, test_index in ss.split(Test_X, Test_Y):
                X_valid, X_test = Test_X[train_index], Test_X[test_index]
                Y_valid, Y_test = Test_Y[train_index], Test_Y[test_index]
                return X_valid, Y_valid, X_test, Y_test
    
        # 从所有.mat文件中读取出数据的字典
        data = capture(original_path=d_path)
        # 将数据切分为训练集、测试集
        train, test = slice_enc(data)
        # 为训练集制作标签,返回X,Y
        Train_X, Train_Y = add_labels(train)
        # 为测试集制作标签,返回X,Y
        Test_X, Test_Y = add_labels(test)
        # 为训练集Y/测试集One-hot标签
        Train_Y, Test_Y = one_hot(Train_Y, Test_Y)
        # 训练数据/测试数据 是否标准化.
        if normal:
            Train_X, Test_X = scalar_stand(Train_X, Test_X)
        else:
            # 需要做一个数据转换,转换成np格式.
            Train_X = np.asarray(Train_X)
            Test_X = np.asarray(Test_X)
        # 将测试集切分为验证集合和测试集.
        Valid_X, Valid_Y, Test_X, Test_Y = valid_test_slice(Test_X, Test_Y)
        return Train_X, Train_Y, Valid_X, Valid_Y, Test_X, Test_Y
    
    
    if __name__ == "__main__":
        path = r'data\0HP'
        train_X, train_Y, valid_X, valid_Y, test_X, test_Y = prepro(d_path=path,
                                                                    length=864,
                                                                    number=1000,
                                                                    normal=False,
                                                                    rate=[0.5, 0.25, 0.25],
                                                                    enc=False,
                                                                    enc_step=28)
    

    (2)主程序代码如下

    from keras.layers import Conv1D, Dense, Dropout, BatchNormalization, MaxPooling1D, Activation, Flatten
    from keras.models import Sequential
    from keras.utils import plot_model
    from keras.regularizers import l2
    import preprocess
    from keras.callbacks import TensorBoard
    import numpy as np
    
    # 训练参数
    batch_size = 128
    epochs = 20
    num_classes = 10
    length = 2048
    BatchNorm = True # 是否批量归一化
    number = 1000 # 每类样本的数量
    normal = True # 是否标准化
    rate = [0.7,0.2,0.1] # 测试集验证集划分比例
    
    path = r'data\0HP'
    x_train, y_train, x_valid, y_valid, x_test, y_test = preprocess.prepro(d_path=path,length=length,
                                                                      number=number,
                                                                      normal=normal,
                                                                      rate=rate,
                                                                      enc=True, enc_step=28)
    # 输入卷积的时候还需要修改一下,增加通道数目
    x_train, x_valid, x_test = x_train[:,:,np.newaxis], x_valid[:,:,np.newaxis], x_test[:,:,np.newaxis]
    # 输入数据的维度
    input_shape =x_train.shape[1:]
    
    print('训练样本维度:', x_train.shape)
    print(x_train.shape[0], '训练样本个数')
    print('验证样本的维度', x_valid.shape)
    print(x_valid.shape[0], '验证样本个数')
    print('测试样本的维度', x_test.shape)
    print(x_test.shape[0], '测试样本个数')
    
    # 定义卷积层
    def wdcnn(filters, kernerl_size, strides, conv_padding, pool_padding,  pool_size, BatchNormal):
        """wdcnn层神经元
    
        :param filters: 卷积核的数目,整数
        :param kernerl_size: 卷积核的尺寸,整数
        :param strides: 步长,整数
        :param conv_padding: 'same','valid'
        :param pool_padding: 'same','valid'
        :param pool_size: 池化层核尺寸,整数
        :param BatchNormal: 是否Batchnormal,布尔值
        :return: model
        """
        model.add(Conv1D(filters=filters, kernel_size=kernerl_size, strides=strides,
                         padding=conv_padding, kernel_regularizer=l2(1e-4)))
        if BatchNormal:
            model.add(BatchNormalization())
        model.add(Activation('relu'))
        model.add(MaxPooling1D(pool_size=pool_size, padding=pool_padding))
        return model
    
    # 实例化序贯模型
    model = Sequential()
    # 搭建输入层,第一层卷积。因为要指定input_shape,所以单独放出来
    model.add(Conv1D(filters=16, kernel_size=64, strides=16, padding='same',kernel_regularizer=l2(1e-4), input_shape=input_shape))
    model.add(BatchNormalization())
    model.add(Activation('relu'))
    model.add(MaxPooling1D(pool_size=2))
    
    # 第二层卷积
    
    model = wdcnn(filters=32, kernerl_size=3, strides=1, conv_padding='same',
                  pool_padding='valid',  pool_size=2, BatchNormal=BatchNorm)
    # 第三层卷积
    model = wdcnn(filters=64, kernerl_size=3, strides=1, conv_padding='same',
                  pool_padding='valid', pool_size=2, BatchNormal=BatchNorm)
    # 第四层卷积
    model = wdcnn(filters=64, kernerl_size=3, strides=1, conv_padding='same',
                  pool_padding='valid', pool_size=2, BatchNormal=BatchNorm)
    # 第五层卷积
    model = wdcnn(filters=64, kernerl_size=3, strides=1, conv_padding='valid',
                  pool_padding='valid', pool_size=2, BatchNormal=BatchNorm)
    # 从卷积到全连接需要展平
    model.add(Flatten())
    
    # 添加全连接层
    model.add(Dense(units=100, activation='relu', kernel_regularizer=l2(1e-4)))
    # 增加输出层
    model.add(Dense(units=num_classes, activation='softmax', kernel_regularizer=l2(1e-4)))
    
    
    # 编译模型 评价函数和损失函数相似,不过评价函数的结果不会用于训练过程中
    model.compile(optimizer='Adam', loss='categorical_crossentropy',
                  metrics=['accuracy'])
    
    # TensorBoard调用查看一下训练情况
    tb_cb = TensorBoard(log_dir='logs')
    
    # 开始模型训练
    model.fit(x=x_train, y=y_train, batch_size=batch_size, epochs=epochs,
              verbose=1, validation_data=(x_valid, y_valid), shuffle=True,
              callbacks=[tb_cb])
    
    # 评估模型
    score = model.evaluate(x=x_test, y=y_test, verbose=0)
    print("测试集上的损失:", score[0])
    print("测试集上的准确度:",score[1])
    # plot_model(model=model, to_file='wdcnn.png', show_shapes=True)
    

    (3)运行结果如下
    在这里插入图片描述

    (4)启用tensorboard观察训练效果如下
    命令:tensorboard --logdir=logs 或者python -m tensorboard.main --logdir=logs(前面不行用后面)
    在这里插入图片描述

    4 问题延申

    4.1 关于噪声与变载问题

    在实际的工业应用中,工作环境十分复杂,有两个问题在故障诊断领域值得关注:

    1)工业现场的噪声无法避免,使用加速度计测得的振动信号易被污染,如何从含有噪声的信号中诊断出轴承的故障成为众多学者研究的重点;

    2)由于工作任务的变化,机器工作负载也会随之改变,如何利用在一个负载下的数据进行训练,对另一个负载下的信号进行诊断,是衡量智能诊断算法适应能力的重要指标。

    针对问题1:(噪声影响)

    问题描述:信号被噪声严重污染,人眼几乎无法辨析出原型号的振动特征。因此,从带有噪声的信号中提取出有效的故障信息,难度很大。

    如下图,为内圈故障信号,加性高斯白噪声及两者相加后 SNR=0dB 的信号
    在这里插入图片描述

    针对问题2:(变载情况)

    问题描述:工作负载的变化对一个机械系统很常见,当负载发生变化后,由传感器测得的信号也会发生变化。不同负载下,振动信号中特征的个数不相同,幅值大小也不一致,波动周期与相位差别也很大。以上情况会造成分类器对提取的特征无法进行正确归类,从而降低智能诊断系统的识别率。

    如下图,为不同负载下,归一化后内圈缺陷大小为 0.014inch 的诊断信号
    在这里插入图片描述

    解决方案
    结合AdaBN 算法。AdaBN是基于 BN 的领域自适应算法,主要用于图像识别领域。该算法使用目标领域样本在每一个 BN 层的均值与方差,替换原来 BN 层所使用的由源领域样本计算出的均值与方差。由于 BN 可以减少内部协变量,通过 BN 对源领域样本的作用,以及 AdaBN 对目标领域样本的作用,可以源领域与目标领域调整到一个新的分布空间,在此空间内,两者近似一致,从而达到领域自适应的目的。因为 WDCNN算法采用了 BN 算法,所以可以使用 AdaBN 算法来提高 WDCNN 模型的领域自适应能力,进而增强 WDCNN 模型在噪声以及负载变化的情况下的适应能力。

    框架图如下
    在这里插入图片描述

    如下图,WDCNN(AdaBN)在不同噪声环境下与其它算法的诊断率的对比:
    在这里插入图片描述

    4.2 AdaBN 算法依赖测试集统计学信息问题

    问题描述
    虽然 AdaBN 算法可以提高 WDCNN 模型的抗噪能力与变载领域自适应能力,但 AdaBN 算法需要整个测试集的样本在 WDCNN 每一个 BN 层的均值与方差,这对于一个故障诊断系统,在初期是难以满足的。

    解决思路
    1)根据部分测试样本的均值方差,对整体测试样本的均值方差进行估计;
    2)不获取任何测试集的信息,通过对 WDCNN 模型本身结构与训练方式进行改进,增强其泛化能力。

    具体措施
    (1)TICNN 模型的结构与 WDCNN 类似,第一层卷积核均为大卷积核,大小为 64×1,之后的卷积核均为 3×1 的小卷积核。两者结构上有两点不同:1)TICNN 模型的第一个卷积层的步长从 16 减少到了 8,这样做增加了 TICNN 模型在时域上的分辨率;2)TICNN 增加了一个卷积层与池化层,这样做可以增强网络的非线性表达能力。具体的模型参数如表 5-1 所示,其中第六个卷积层在卷积时没有采用零补,其余的卷积操作均采用零补。此外,第一个卷积层的输出神经元的个数为 4096,大于原始信号的长度 2048,表明第一个卷积层的特征是原始信号的过完备表达。

    (2)在使用第一层大卷积核进行卷积时,先对卷积核进行 Dropout 操作,这是 TICNN 模型的第一个训练干扰,目的是给 TICNN训练时提供不完整的信号,从而强化 TICNN 在信号部分缺失时的诊断能力。

    (3)TICNN 使用了极小的mini-batch 来进行批量训练,这是 TICNN 模型的第二个训练干扰,目的是增大 mini-batch 的均值方差变化范围增加,增强模型对测试集的均值方差于训练集发生的偏移时容忍度。

    (4)在测试阶段,采用集成学习的方式(Ensemble Learning)来进行预测。文中采用的是多数同意规则(Majority Voting),即独立训练 5 个 TICNN模型,对于同一个测试样本,采用投票的方式来决定信号所属故障。集成学习被用来提高模型的识别率,增强模型的稳定性。

    如下图,为TICNN结构参数表
    在这里插入图片描述
    如下图,为TICNN网络结构
    在这里插入图片描述

    如下图,为TICNN 模型的训练过程及测试过程流程图
    在这里插入图片描述
    如下图,为不同大小的 minibatch 下,TICNN 对噪声信号的识别率
    在这里插入图片描述
    如下图,为TICNN 在三种模式下的识别率
    在这里插入图片描述

    如下图,为集成 TICNN 在三种模式下的识别率
    在这里插入图片描述

    如下图,为TICNN 在不同噪声环境下与其它算法的识别率对比
    在这里插入图片描述

    如下图,为TICNN 算法及对照算法在 6 种不同域自适应场景中的识别率
    在这里插入图片描述

    展开全文
  • 选取凯斯西储大学轴承数据库(Case Western Reserve University, CWRU)为验证数据。 轴承通过电火花加工设置成四种尺寸的故障直径,分别为0.007、0.014、0.021、0.028英寸。 实验中使用加速度传感器采集振动信号...

空空如也

空空如也

1
收藏数 8
精华内容 3
关键字:

凯斯西储大学齿轮数据