基于小波时频图和2D-CNN的齿轮箱故障检测

文章目录

  • 前言
  • 一、小波时域图
    • 1.时域图介绍
    • 2.matlab从时间序列自动提取并保存
  • 二、CNN图像分类
    • 1.训练集测试集
    • 2.训练过程
    • 3.混淆矩阵图
  • 总结


前言

        以东南大学齿轮数据集,选取行星齿轮z方向振动信号数据,选取 1024 个连续采样点为一个信号样本,通过小波变换将一个时域信号样本转换成时频图像。采集到 5 类运行状态的传感器信号,每一类到采集 1000 个时域图像,将总体样本按照 9:1 的比例划分训练集与测试集,传输到CNN网络上,进行故障分类。

数据集(本文选取了第四列行星齿轮z方向):


一、小波时域

1. 小波时域图介绍

        机械设备不同运转状态下展现出来的时域、频域模式是各不相同的,因此可以利
用二维时频图像中特有的特征信息作为故障相关特征,通过深度神经网络来训练学习,
从而实现故障分类识别。有很多种方法可以实现时频分布的生成,考虑到时频域分辨
率问题,小波变换是一种广泛应用于机械故障诊断领域的时频分析方法,因此本文使
用连续小波变换( CWT )来实现一维时间序列的时频分布生成。

2. Matlab提取时域图并保存

以保存surface为例,提取1000张小波时域图并保存

 Matlab代码如下:

%%
%东南大学齿轮箱数据集;保存1000个时频图
clear
clc
N = 1024000;
fs = 5120;
t = (1:1:1024)/fs;         %采样时间
%load('healthtest.mat');
%s = healthtest(:,1)';
load('surface.mat');
s = surface(:,1)';
y_reshaped = reshape(s,1024,1000)';  
for i = 1:size(y_reshaped, 1)
    %figure(1)
    %subplot(16,1,i);
    %plot(t,y_reshaped(i,:))
    %xlabel('时间/s')
    %ylabel('时域幅值/A')
    %title('时域波形')          %时域波形
    % 连续小波变换
    wavename='cmor3-3';%表示连续小波变换中使用的一个特定的 Morlet 小波
    totalscal=256;
    Fc=centfrq(wavename); % 小波的中心频率
    c=2*Fc*totalscal;
    scals=c./(1:totalscal);
    f=scal2frq(scals,wavename,1/fs); % 将尺度转换为频率
    coefs=cwt(y_reshaped(i,:),scals,wavename); % 求连续小波系数
    %figure
    imagesc(t,f,abs(coefs));
    set(gca,'YDir','normal')
    colorbar;
    xlabel('时间 t/s');
    ylabel('频率 f/Hz');
    %title('小波时频图');
    %axis([0 8 0 5000])
    axis off;
    colorbar('off');
    folder = 'C:\Users\16021\Desktop\WCT\data\surface'; % 修改为您的文件夹路径
    % 构造文件名
    filename = sprintf('surface.%d.png', i);
    % 保存绘图到指定文件夹
    saveas(gcf, fullfile(folder, filename), 'png');
end

生成五组时域图,每组含有1000张时域图:

二、CNN图像分类

1.训练集和测试集

每一类到采集 1000 个时域图像,将总体样本按照 9:1 的比例划分训练集与测试集,划分python代码如下:

"""
size:将图片划分为训练集和测试集
"""
import os
import random
import shutil
def split_train_test_folder(parent_folder, ratio):
    """
    将parent_folder文件夹下的图片按照ratio的比例分割成训练集和测试集,
    分割后的训练集和测试集中的图片将分别存放在train和test文件夹中
    :param parent_folder: 父文件夹路径,文件夹下存放着待分割的子文件夹以及图片
    :param ratio: 分割比例
    """
    train_folder = os.path.join(parent_folder, 'train_test','train')
    test_folder = os.path.join(parent_folder, 'train_test', 'test')
    if not os.path.isdir(train_folder):
        os.makedirs(train_folder)
    if not os.path.isdir(test_folder):
        os.makedirs(test_folder)

    for group_folder in os.listdir(parent_folder):
        if os.path.isdir(os.path.join(parent_folder, group_folder)):
            group_path = os.path.join(parent_folder, group_folder)
            file_list = os.listdir(group_path)
            total_num = len(file_list)
            test_num = int(total_num * ratio)
            train_num = total_num - test_num
            random.shuffle(file_list)
            train_list = file_list[:train_num]
            test_list = file_list[train_num:]
            for file in train_list:
                src_file = os.path.join(group_path, file)
                dst_file = os.path.join(train_folder, file)
                shutil.copy(src_file, dst_file)
            for file in test_list:
                src_file = os.path.join(group_path, file)
                dst_file = os.path.join(test_folder, file)
                shutil.copy(src_file, dst_file)

    print("Finish splitting dataset!")
split_train_test_folder('C:/Users/16021/Desktop/WCT/data/', 0.1)

得到如下文件夹:

2.训练过程

训练过程:

2.预测率


3.混淆矩阵图:

写在最后

东南大学数据集:

链接:https://pan.baidu.com/s/1z0ltUARlSC0EQceCaOW41Q 
提取码:vjfz

东南大学齿轮箱数据集SUFD (qq.com)

参考文献:

基于深度学习的旋转机械故障诊断方法研究 东南大学

参考公众号:故障诊断与寿命预测工具箱

上面链接过期了,最新链接:

链接:https://pan.baidu.com/s/1wp4t_oMtqQR_0bVx9RBNFA 
提取码:gcq3

东南大学齿轮箱数据集SUFD (qq.com)

  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值