基于SwinTransformer与小波时频图的轴承故障诊断 PyTorch代码
通俗的说,Swin Transformer采用很巧妙的方式来处理大型图像,它会把图像分成许多小块,然后分别处理这些小块,最后再把它们组合起来,这样就可以更高效地处理大型图像了。
它首先通过利用patch partition将输入的图像分割为非重叠 patch。其次采用linear embedding,将patch投影到维度C,然后交替使用窗口注意力机制与移位窗口注意力,并采用patch merging进行下采样操作(起到CNN中池化层的作用)
一维特征图像化:区别于传统故障诊断是采用的一维时序特征提取方法:如均值方差,HHT包络谱,FFT频谱,小波能量谱等,小波时频图将一维信号转化为二维图像,提供了多种不同频率和分辨率的特征表示,这些特征能够更好地反映信号的动态特性和频率成分的变化。
局部-全局关注机制:传统的CNN模型通常在卷积层中通过固定大小的滤波器对整个图像进行卷积操作,而Swin Transformer则引入了局部-全局关注机制Window Attention。它通过将图像分成小块,并使用自注意力机制在不同尺度下对图像进行关注,使得模型可以更有效地捕获图像中的局部和全局信息,从而提高了图像分类或故障识别的性能。
长程依赖建模:由于Swin Transformer引入了自注意力机制,它可以更好地建模图像中不同区域之间的长程依赖关系。这使得模型可以更好地理解图像中不同部分之间的联系,从而更准确地进行分类或识别。
参数效率:Swin Transformer相对于传统的CNN和Transformer模型具有更好的参数效率。传统的Transformer都是基于全局来计算注意力的,因此计算复杂度十分高。而Swin Transformer则将注意力的计算限制在每个窗口内,进而减少了计算量。
适应大尺度图像:传统的CNN模型通常在处理大尺度图像时会面临性能下降的问题,而Swin Transformer则通过将图像分成小块,并使用自注意力机制在不同尺度下对图像进行关注,使得模型可以更好地适应大尺度图像的处理。
泛化能力强:Swin Transformer通过引入自注意力机制和局部-全局关注机制,使得模型可以更好地理解图像中的内容,并具有更强的泛化能力。这使得模型在不同数据集和任务上都能取得良好的性能表现。
采用西储大学轴承故障诊断数据集,48K/0HP数据,共10类故障类型,划分后每个样本的采样点为1024,每类故障各100个样本,因此一共1000个样本,然后7:2:1划分训练集,验证集,与测试集。
将测试集输入训练好的模型,得到99%的测试精度
原始样本分布混乱无规律
模型训练后实现类内样本聚合,类间样本分离
注:本程序相应的Python包的详细版本已附在压缩包内方便大家配置环境
完整代码:https://mbd.pub/o/bread/ZZybkpht
关注小编会不定期推送高创新型、高质量的学习资料、文章程序代码,为你的科研加油助力!