ECA-VGG16迁移故障诊断,附MATLAB代码

部署运行你感兴趣的模型镜像

概要

目前网络上关于ECA注意力机制的代码多是基于pytorch实现的,这给习惯使用MATLAB的小伙伴增高了学习门槛,本期小淘采用MATLAB代码实现了ECA注意力机制,并将其融入经典的VGG16网络。在凯斯西储大学轴承数据上进行了验证。并在不同工况条件下进行了迁移学习。效果极好!

ECA(Efficient Channel Attention)注意力机制是SENET的改进版,它去除了原来SENET中的全连接层,换成了1*1的卷积核进行处理,使得模型参数变小,变得更加轻量级,因为ECA的作者认为卷积具有良好的跨通道信息捕捉能力,因此捕捉所有通道的信息是没必要的,因此取消了全连接层,换成了1*1的卷积。 

在这里也浅谈一下自己关于对ECA机制的理解,以下理解仅代表个人看法(不对勿喷!)

之前的文章我曾经采用MATLAB语言实现过SE注意力机制,因为ECA是SE的改进,因此这里再提一下SE机制。

SE注意力机制首先通过全局平均池化来汇总每一个特征通道的信息,可以想象成是把整个图像的信息压缩成一个小的统计数据,然后,SE机制会对这些汇总后的信息先后输入一个全连接层+一个Relu线性激活层+一个全连接层+Sigmod函数,且两个全连接层的先后经过降维和升维,再配合Relu线性激活层与sigmod函数,既保证了训练参数的简化,增加了训练速度,还计算出了各个通道的重要度。SE机制的结果图如下:

  • SE机制的论文地址:https://arxiv.org/abs/1709.01507

d731c007277c9e1d3fbcb942e12ef823.jpeg

ECA注意力机制与SE相同的地方在于,它也是首先通过了一个全局平均池化层,先将整个图像信息进行了压缩,而在之后,它是通过一个局部卷积来捕捉通道间的依赖关系,而不是全局操作,这样可以大大减少计算量,同时保留注意力机制的效果。最后,ECA根据计算得到的通道重要性调整特征,提升重要特征的权重,抑制不重要的特征,从而提高模型的整体性能。ECA机制的结果图如下:

2f616b8b738037424614acecb80b6454.jpeg

ECA机制的论文下载链接:https://arxiv.org/pdf/1910.03151.pdf

理解了ECA机制,接下来就是编代码环节了,不得不说,这注意力机制用MATLAB编起来真的有很多坑!简直快给我干秃了。

ECA-VGG16模型介绍

VGGNet荣膺2014 年ImageNet 图像分类第2名的好成绩, 其中VGG16 是VGGNet 中分类性能最好的网络之一, 其网络结构如图所示。

871583123a603de29ff07861efe34873.png

本期推出的ECA-VGG16 模型结构,参考如下:

ca9e7295751433249f2d4865cf843e63.png

为形象表示,这里我画了一个结构图,高清的visio图一并放在附件了。

a3863a9d9a2db94242dc0040eb619e80.png

本期模型改进的参考文献来源:侯向宁,刘华春,侯宛贞.基于改进VGG16网络模型的花卉分类[J].计算机系统应用,2022,31(07):172-178.DOI:10.15888/j.cnki.csa.008582.

本期对VGG16 网络做了如下改进: 前5 段卷积的每个卷积层中均加入ECA 视觉注意力单元、BN 层和ReLU 激活函数. 其中ECA单元用于学习各通道的重要程度, 从而增强有用特征并抑制无用特征. BN 层 (batchnormalization) 的作用是加快网络的训练和收敛的速度, 防止梯度爆炸及梯度消失, 使模型会变得更加稳定; ReLU 激活函数能增强网络的非线性、防止梯度消失、减少过拟合并提高网络训练的速度. 为防止过拟合, 第6 段的两个FC 层后面均加入dropout. Softmax用于最终的分类, 由于采用的轴承数据集有10 种状态,因此最后的Output为10。

实验结果展示

先说实验结果:实验均是在900个样本进行训练,300个样本测试。

标准的VGG16,在工况0条件下,诊断准确率为:98.667%

da4e51565390e22e5abf4205589c6219.jpeg

融合ECA机制的VGG16在工况0条件下,诊断准确率为:100%

cf48d3fab88f98546f111562e8d8e208.jpeg

将工况0的模型迁移到工况1时只采用小样本(每种故障取20个样本)对全连接层微调,其他层进行冻结,训练速度大幅度提升,测试集(1000个样本)的诊断准确率为:99.9%

f4cda494868df76ee0bda204557e882f.jpeg

将工况0的模型迁移到工况2时,只采用小样本(每种故障取10个样本)对全连接层微调,其他层进行冻结,训练速度大幅度提升,测试集(1100个样本)的诊断准确率为:99.5%

afb33e9d57d6e1f7c6560e9053253775.jpeg

将工况0的模型迁移到工况3时,只采用小样本(每种故障取10个样本)对全连接层微调,其他层进行冻结,训练速度大幅度提升,测试集(1100个样本)的诊断准确率为:99.6%

a76ac64af43453e7c3bf4256e0c6f3e7.jpeg

3.实验过程:基于ECA-VGG16模型,在不同工况下实现迁移学习的轴承故障诊断

实验步骤如下:

第一步:处理不同工况的西储大学数据。西储大学数据详情截图如下:

7671bdb16868091ccf4da033335cbf92.png

可以看到第二列的电机载荷分为0、1、2、3四种工况,这里只取故障直径为0.1778、0.3556、0.5334mm时的四种工况。对四种工况数据进行处理,处理方式如下:

采取部分重叠的采样方法即从原始信号中采集样本,相邻的采样样本之间存在部分重叠。将原始时域信号每2048个数据点组成一个样本,为了保证每个数据点都能采集到,相邻的样本点会有重叠的1048个数据点,滑动窗口的步长为1000。最终每个工况包含10种故障类型,每种类型包含120个样本。

第一步的代码整理截图如下,最后得到Working condition0.mat、Working condition1.mat、Working condition2.mat、Working condition3.mat,分别表示工况0、1、2、3。

e11ab449f1971dcf516e0883ae2bde40.png

第二步:将第一步数据转换为连续小波变换时频图:

将第一步得到的四种不同工况的数据进行同步提取小波变换,提取的图片放在了相应的“工况x连续小波变换视频图”文件夹内,然后再将图像进行一个压缩,之所以压缩,是为了后续训练模型节省时间,代码整理截图如下:

c279838328e1600b4b9fdae1e1ac3969.png

第三步:模型训练与不同工况下的迁移学习

首先采用ECA-VGG16网络对工况0的数据进行训练与测试,选每组故障的前90个样本进行训练,后30个样本测试,准确率可达100%。

ECA-VGG16-TSNE降维前后分布图如下:

e0b2d699d43b8115ba0098321bbb1e40.jpeg

迁移学习:然后将工况0下将训练好的ECA-VGG16模型的基础单元模块和ECA模块进行冻结,采用工况1、2、3的小样本数据(每种故障类型只取20组样本)对模型的全连接层进行微调,并采用剩下的1000个样本(每种故障类型100个)进行测试。

第三步的代码目录截图如下:

d215af154e06f2fce1847d593806cc39.png

代码获取

或者点击下方阅读原文获取。

下方卡片关注后获取

您可能感兴趣的与本文相关的镜像

PyTorch 2.7

PyTorch 2.7

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘个代码_

不想刀我的可以选择爱我

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值