目錄
一、研究思路
?1、基于小波時(shí)頻圖和CNN的滾軸故障診斷方法的研究思路如下:
二、數(shù)據(jù)集介紹與數(shù)據(jù)處理
? 1、數(shù)據(jù)集介紹
2、數(shù)據(jù)集分割與合并
3、數(shù)據(jù)集分析
三、小波時(shí)頻圖導(dǎo)出
四、CNN網(wǎng)絡(luò)的構(gòu)建和測(cè)試
1、CNN網(wǎng)絡(luò)構(gòu)建
?2、訓(xùn)練參數(shù)的優(yōu)化
4、訓(xùn)練結(jié)果
一、研究思路
?1、基于小波時(shí)頻圖和CNN的滾軸故障診斷方法的研究思路如下:
(1)信號(hào)采集系統(tǒng)通過軸承試驗(yàn)臺(tái)采集滾動(dòng)軸承在不同狀態(tài)下的振動(dòng)信號(hào),并通過數(shù)據(jù)分割與合并? 構(gòu)造信號(hào)樣本集。
(2)對(duì)樣本集中的振動(dòng)信號(hào)進(jìn)行CWT,再生成于信號(hào)相對(duì)應(yīng)的時(shí)頻圖。
(3)建立CNN模型,選擇一定數(shù)量的特征圖作為訓(xùn)練樣本,對(duì)CNN進(jìn)行訓(xùn)練。
(4)將特征圖樣本集中的剩余樣本作為測(cè)試樣本,對(duì)訓(xùn)練好的CNN進(jìn)行測(cè)試。
二、數(shù)據(jù)集介紹與數(shù)據(jù)處理
? 1、數(shù)據(jù)集介紹
? ? ? ?振動(dòng)數(shù)據(jù)來源于美國(guó)凱斯西儲(chǔ)大學(xué)的開發(fā)數(shù)據(jù)集。軸承試驗(yàn)裝置的示意圖如圖1-1所示。平臺(tái)組成:一個(gè)1.5KW(2馬力)的電動(dòng)機(jī)(圖左側(cè));一個(gè)扭矩傳感器/ 譯碼器(圖中間連接處);一個(gè)功率測(cè)試計(jì)(圖右側(cè));驅(qū)動(dòng)端軸承為SKF6205 ,采樣頻率為12Khz和48Khz;電子控制器(圖中沒顯示) 。軸承試驗(yàn)裝置的示意圖如圖1-1所示。平臺(tái)組成:一個(gè)1.5KW(2馬力)的電動(dòng)機(jī)(圖左側(cè));一個(gè)扭矩傳感器/ 譯碼器(圖中間連接處);一個(gè)功率測(cè)試計(jì)(圖右側(cè));驅(qū)動(dòng)端軸承為SKF6205 ,采樣頻率為12Khz和48Khz;電子控制器(圖中沒顯示) 。
圖1-1 軸承試驗(yàn)裝置示意圖
DE - drive end accelerometer data 驅(qū)動(dòng)端加速度數(shù)據(jù);
FE - fan end accelerometer data 風(fēng)扇端加速度數(shù)據(jù);
BA - base accelerometer data 基座加速度數(shù)據(jù)(正常);
time - time series data 時(shí)間序列數(shù)據(jù);
RPM- rpm during testing 轉(zhuǎn)每分鐘,除以60為旋轉(zhuǎn)頻率;
B -滾動(dòng)體故障;IR – 內(nèi)圈故障;OR –外圈故障;
驅(qū)動(dòng)端和風(fēng)扇端軸承外圈的損傷點(diǎn)分別放置在3點(diǎn)鐘、6點(diǎn)鐘、12點(diǎn)鐘三個(gè)不同位置。
數(shù)據(jù)文件為Matlab格式。每個(gè)文件包含風(fēng)扇和驅(qū)動(dòng)端振動(dòng)數(shù)據(jù),以及電機(jī)轉(zhuǎn)速。
? ? ? 12k_Fan_End_OR007@6_3_297.mat這個(gè)是12KHZ采樣頻率下驅(qū)動(dòng)端外圈故障、@6是外圈的損傷點(diǎn)在6點(diǎn)鐘位置、3代表電機(jī)載荷模式、297是編號(hào)。數(shù)據(jù)集由12kHz采樣率下電機(jī)端軸承的故障數(shù)據(jù)(DE)60個(gè)、12kHz采樣率下風(fēng)扇端軸承的故障數(shù)據(jù)(FE)45個(gè)、48kHz采樣率下電機(jī)端軸承的故障數(shù)據(jù)(DE)52個(gè),還有正常運(yùn)轉(zhuǎn)的軸承數(shù)據(jù)4個(gè)組成。
圖1-2 ?12k驅(qū)動(dòng)端故障數(shù)據(jù)列表
? ? ? ?如圖1-2所示,左邊第一列是4種故障尺寸,由于第4種故障缺少外圈故障,所以一般選取前3種尺寸。這樣的話內(nèi)圈、滾動(dòng)體、外圈3種故障就有3*3也就是9種故障分類,再加上正常狀態(tài)就是最常見的10分類方式。如果不考慮故障尺寸進(jìn)行4分類的比較少見,主要是這樣的話難度降低不少,結(jié)果提升的空間不大,畢竟10分類也沒有很麻煩,而且10分類可以直接根據(jù)文件來創(chuàng)建數(shù)據(jù)集,不用進(jìn)行數(shù)據(jù)集的合并。外圈故障分為3種,這里我只取取6點(diǎn)鐘的,因?yàn)椴煌较虻牟町悤r(shí)間上并不大,進(jìn)行區(qū)分也沒有那么多必要性。
2、數(shù)據(jù)集分割與合并
? ? ? 將采集到的振動(dòng)信號(hào)進(jìn)行分割,每個(gè)樣本包含1024個(gè)采樣點(diǎn)。每種工況下正常狀態(tài)的樣本為350個(gè),不同故障類型下,不同損傷大小及不同工況的樣本為117個(gè),最后得到正常狀態(tài)和三種故障狀態(tài)的樣本各1400個(gè)。
表2-1是軸承不同狀態(tài)的信號(hào)樣本列表。
表2-1 ?軸承不同狀態(tài)的信號(hào)樣本列表
損傷尺 |
負(fù)載/ |
電機(jī)轉(zhuǎn)速/ |
正常 |
內(nèi)圈 |
滾動(dòng)體 |
外圈 |
0 |
0 |
1797 |
350 |
—— |
—— |
—— |
1 |
1772 |
350 |
—— |
—— |
—— |
|
2 |
1750 |
350 |
—— |
—— |
—— |
|
3 |
1730 |
350 |
—— |
—— |
—— |
|
0.007 |
0 |
1797 |
—— |
117 |
117 |
117 |
1 |
1772 |
—— |
117 |
117 |
117 |
|
2 |
1750 |
—— |
117 |
117 |
117 |
|
3 |
1730 |
—— |
117 |
117 |
117 |
|
0.014 |
0 |
1797 |
—— |
117 |
117 |
117 |
1 |
1772 |
—— |
117 |
117 |
117 |
|
2 |
1750 |
—— |
117 |
117 |
117 |
|
3 |
1730 |
—— |
117 |
117 |
117 |
|
0.021 |
0 |
1797 |
—— |
116 |
116 |
116 |
1 |
1772 |
—— |
116 |
116 |
116 |
|
2 |
1750 |
—— |
116 |
116 |
116 |
|
3 |
1730 |
—— |
116 |
116 |
116 |
|
總計(jì) |
|
—— |
1400 |
1400 |
1400 |
1400 |
? ? ? ?表2-1是我選取論文里的信號(hào)樣本。這里3個(gè)損傷尺寸、3種故障類型。一共3*3=9種故障類型,加上正常,一共10種。4種負(fù)載狀態(tài),4*10=40。這還不算外圈故障里面損傷點(diǎn)在不同位置的情況。
? ? ? ?這里分類選擇可以選擇4分類。即正常信號(hào)、滾動(dòng)體故障、內(nèi)圈故障、外圈故障。
? ? ? ?從分類講,我找相關(guān)的論文大多數(shù)是用10分類。因?yàn)?分類的指標(biāo)普遍都太好了,做的人確實(shí)也較少,但是實(shí)際操作起來也不會(huì)簡(jiǎn)單多少。從工程上講,區(qū)分故障種類的同時(shí)我們肯定更希望知道故障的大致嚴(yán)重程度,所以我又做了一個(gè)10分類的程序。
表2-2 ?不同故障樣本的數(shù)量及標(biāo)簽配置
信號(hào)類型 |
訓(xùn)練樣本 |
測(cè)試樣本 |
樣本標(biāo)簽 |
正常信號(hào) |
900 |
500 |
[1 0 0 0 ] |
內(nèi)圈故障 |
900 |
500 |
[0 1 0 0 ] |
滾動(dòng)體故障 |
900 |
500 |
[0 0 1 0 ] |
外圈故障 |
900 |
500 |
[0 0 0 1 ] |
總計(jì) |
3 600 |
2 000 |
|
圖2-1 不同故障樣本的數(shù)量及標(biāo)簽配置
這里選取出的數(shù)據(jù)集一共是5600個(gè)(訓(xùn)練:3600,測(cè)試:2000),每一類是1400個(gè)(訓(xùn)練:900,測(cè)試:500),訓(xùn)練集和測(cè)試集的比例大約是0.6428:0.3572。
3、數(shù)據(jù)集分析
時(shí)域分析:在相關(guān)論文中,以時(shí)域分析作為輸入的較多。時(shí)域分析中處理起來也很簡(jiǎn)單,編程容易。
頻域分析:頻域數(shù)據(jù)的優(yōu)點(diǎn)就是提取了頻域信息,特征明顯。因?yàn)槭茄芯啃盘?hào),還是頻域圖更加直觀,傳統(tǒng)的方法里故障頻率是至關(guān)重? 要的指標(biāo),而且我們數(shù)字信號(hào)處理的重點(diǎn)也是頻域的內(nèi)容,但是頻域數(shù)據(jù)丟失了時(shí)間特征。
時(shí)頻圖分析:通過小波變換或者短時(shí)傅里葉變換形成時(shí)頻圖,將圖片作為輸入。這里的輸入信號(hào)是圖像。缺點(diǎn)就是數(shù)據(jù)量大,處理起來? 有點(diǎn)慢。這篇論文使用的是連續(xù)小波時(shí)頻圖,我用程序來對(duì)比一下不同數(shù)據(jù)的差別。
圖2-2 不同故障信號(hào)進(jìn)行時(shí)域和頻域分析對(duì)比
?
圖2-3 不同故障信號(hào)進(jìn)行時(shí)頻圖對(duì)比
采用cmor3-3小波基對(duì)軸承樣本數(shù)據(jù)集中的信號(hào)進(jìn)行CWT,生成時(shí)頻圖。以圖2-2的第一列4個(gè)信號(hào)為例,其時(shí)頻圖如圖2-3第一列所示。
matlab的數(shù)據(jù)分析部分代碼
%% 加載原始數(shù)據(jù)
load 0/12k_Drive_End_B007_0_118; %讀取數(shù)據(jù)集
a1=X118_DE_time';
load 0/12k_Drive_End_IR007_0_105;
a2=X105_DE_time';
load 0/12k_Drive_End_OR007@6_0_130;
a3=X130_DE_time';
load 0/normal_0_97;
a0=X097_DE_time';%10
L=1024; %取數(shù)據(jù)集里的樣本長(zhǎng)度為L(zhǎng)=864
data0=[]
start_point=randi(length(a0)-L); %隨機(jī)取一個(gè)起點(diǎn)
end_point=start_point+L-1;
s0=[data0 ;a0(start_point:end_point)];
data1=[]
start_point=randi(length(a1)-L); %隨機(jī)取一個(gè)起點(diǎn)
end_point=start_point+L-1;
s1=[data1 ;a1(start_point:end_point)];
data2=[]
start_point=randi(length(a2)-L); %隨機(jī)取一個(gè)起點(diǎn)
end_point=start_point+L-1;
s2=[data2 ;a2(start_point:end_point)];
data3=[]
start_point=randi(length(a3)-L); %隨機(jī)取一個(gè)起點(diǎn)
end_point=start_point+L-1;
s3=[data3 ;a3(start_point:end_point)];
fs=48000;
y0=fft(s0,length(s0));
f0=fs*(0:length(s0)-1)/length(s0);
y0=fft(s0,length(s0));
t0=0:1/fs:length(s0)/fs;
y1=fft(s1,length(s1));
f1=fs*(0:length(s1)-1)/length(s1);
y1=fft(s1,length(s1));
t1=0:1/fs:length(s1)/fs;
y2=fft(s2,length(s2));
f2=fs*(0:length(s2)-1)/length(s2);
y2=fft(s2,length(s2));
t2=0:1/fs:length(s2)/fs;
y3=fft(s3,length(s3));
f3=fs*(0:length(s3)-1)/length(s3);
y3=fft(s3,length(s3));
t3=0:1/fs:length(s3)/fs;
%繪制時(shí)域圖
%--------------------------------------------
subplot(421);
plot(s0);
title('正常信號(hào)時(shí)域圖');xlabel('時(shí)間/S');ylabel('幅度');
%繪制頻譜響應(yīng)圖
%--------------------------------------------
subplot(422);
plot(f0,abs(y0));title('正常信號(hào)頻譜');xlabel('頻率/HZ');ylabel('幅度/dB');
%--------------------------------------------
subplot(423);
plot(s1);
title('B故障信號(hào)時(shí)域圖');xlabel('時(shí)間/S');ylabel('幅度');
%繪制頻譜響應(yīng)圖
%--------------------------------------------
subplot(424);
plot(f1,abs(y1));title('B0故障信號(hào)頻譜');xlabel('頻率/HZ');ylabel('幅度/dB');
%--------------------------------------------
subplot(425);
plot(s2);
title('IR故障信號(hào)時(shí)域圖');xlabel('時(shí)間/S');ylabel('幅度');
%繪制頻譜響應(yīng)圖
%--------------------------------------------
subplot(426);
plot(f2,abs(y2));title('IR故障信號(hào)頻譜');xlabel('頻率/HZ');ylabel('幅度/dB');
%--------------------------------------------
subplot(427);
plot(s3);
title('OR故障信號(hào)時(shí)域圖');xlabel('時(shí)間/S');ylabel('幅度');
%繪制頻譜響應(yīng)圖
%--------------------------------------------
subplot(428);
plot(f3,abs(y3));title('OR故障信號(hào)頻譜');xlabel('頻率/HZ');ylabel('幅度/dB');
N=1024;
fs=12000;
t=0:1/fs:N/fs;
%% 各種變換時(shí)頻圖
wavename='cmor3-3';%cmor是復(fù)Morlet小波,其中3-3表示Fb-Fc,F(xiàn)b是帶寬參數(shù),F(xiàn)c是小波中心頻率。
totalscal=256;
Fc=centfrq(wavename); % 小波的中心頻率
c=2*Fc*totalscal;
scals=c./(1:totalscal);
f=scal2frq(scals,wavename,1/fs); % 將尺度轉(zhuǎn)換為頻率
coefs0=cwt(s0,scals,wavename); % 求連續(xù)小波系數(shù)
coefs1=cwt(s1,scals,wavename); % 求連續(xù)小波系數(shù)
coefs2=cwt(s2,scals,wavename); % 求連續(xù)小波系數(shù)
coefs3=cwt(s3,scals,wavename); % 求連續(xù)小波系數(shù)
figure
subplot(4,3,1)
imagesc(t,f,abs(coefs0)/max(max(abs(coefs0))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('正常小波時(shí)頻圖');
subplot(4,3,4)
imagesc(t,f,abs(coefs1)/max(max(abs(coefs1))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('B故障小波時(shí)頻圖');
subplot(4,3,7)
imagesc(t,f,abs(coefs2)/max(max(abs(coefs2))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('IR故障小波時(shí)頻圖');
subplot(4,3,10)
imagesc(t,f,abs(coefs3)/max(max(abs(coefs3))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('OR故障小波時(shí)頻圖');
% 短時(shí)傅里葉變換時(shí)頻圖
% spectrogram(s,256,250,256,fs);
% 時(shí)頻分析工具箱里的短時(shí)傅里葉變換
f = 0:fs/2;
[tfr,t,f] = tfrstft(s0');
tfr = tfr(1:floor(length(s0)/2), :);
subplot(4,3,2)
imagesc(t, f, abs(tfr)/max(max(abs(tfr))));%得到一個(gè)彩色圖像
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('正常短時(shí)傅里葉變換時(shí)頻圖');
%st
[st_fre,st_times,st_frequencies] = st(s0,4);
subplot(4,3,3)
imagesc(t,f,abs(st_fre)/max(max(abs(st_fre))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('正常廣義S變換時(shí)頻圖');
%%%%%%%%%%%%%%%%%%%%
f = 0:fs/2;
[tfr,t,f] = tfrstft(s1');
tfr = tfr(1:floor(length(s1)/2), :);
subplot(4,3,5)
imagesc(t, f, abs(tfr)/max(max(abs(tfr))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('B故障短時(shí)傅里葉變換時(shí)頻圖');
%st
[st_fre,st_times,st_frequencies] = st(s1,4);
subplot(4,3,6)
imagesc(t,f,abs(st_fre)/max(max(abs(st_fre))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('B故障廣義S變換時(shí)頻圖');
%%%%%%%%%%%%%%%%%%%%
f = 0:fs/2;
[tfr,t,f] = tfrstft(s2');
tfr = tfr(1:floor(length(s2)/2), :);
subplot(4,3,8)
imagesc(t, f, abs(tfr)/max(max(abs(tfr))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('IR故障短時(shí)傅里葉變換時(shí)頻圖');
%st
[st_fre,st_times,st_frequencies] = st(s2,4);
subplot(4,3,9)
imagesc(t,f,abs(st_fre)/max(max(abs(st_fre))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('IR故障廣義S變換時(shí)頻圖');
%%%%%%%%%%%%%%%%%%%%
f = 0:fs/2;
[tfr,t,f] = tfrstft(s3');
tfr = tfr(1:floor(length(s3)/2), :);
subplot(4,3,11)
imagesc(t, f, abs(tfr)/max(max(abs(tfr))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('OR故障短時(shí)傅里葉變換時(shí)頻圖');
%st
[st_fre,st_times,st_frequencies] = st(s3,4);
subplot(4,3,12)
imagesc(t,f,abs(st_fre)/max(max(abs(st_fre))));
set(gca,'YDir','normal')
colorbar;
xlabel('時(shí)間 t/s');ylabel('頻率 f/Hz');title('OR故障廣義S變換時(shí)頻圖');
三、小波時(shí)頻圖導(dǎo)出
把訓(xùn)練集用連續(xù)小波變換轉(zhuǎn)換成時(shí)頻圖,對(duì)訓(xùn)練集數(shù)據(jù)進(jìn)行小波時(shí)頻提取,并保存在對(duì)應(yīng)的文件夾下 ??
小波時(shí)頻圖_mat/test_img/“個(gè)數(shù)”-“類型”.jpg
小波時(shí)頻圖_mat/test_img/“個(gè)數(shù)”-“類型”.jpg
這里要注意我用MATLAB導(dǎo)出時(shí)因?yàn)闃颖居?600個(gè),所以速度很慢,用Python導(dǎo)出時(shí)速度就會(huì)快一些,但是Python是從0開始的,不管是“個(gè)數(shù)”還是“類型”,而MATLAB是從1開始。
python的部分代碼
import pywt
import matplotlib.pyplot as plt
import numpy as np
from data_preprocess import prepro
path = '0'
x_train, y_train, x_test, y_test = prepro(
d_path=path,
length=1024,
number=100,
normal=True,
rate=[0.7, 0.3],
enc=False, enc_step=28)
for i in range(0, len(x_train)):
N = 1024
fs = 12000
t = np.linspace(0, N/fs, N, endpoint=False)
wavename = 'cmor3-3'
totalscal = 256
fc = pywt.central_frequency(wavename)
cparam = 2 * fc * totalscal
scales = cparam / np.arange(totalscal, 1, -1)
[cwtmatr, frequencies] = pywt.cwt(x_train[i], scales, wavename, 1.0 / fs)
plt.contourf(t, frequencies, abs(cwtmatr))
plt.axis('off')
plt.gcf().set_size_inches(875/96, 656/96)
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)
plt.margins(0, 0)
plt.savefig('./小波時(shí)頻圖 py/train_img/' + str(i) + '-' + str(y_train[i]) + '.jpg')
plt.clf() #避免內(nèi)存溢出
plt.close() #釋放內(nèi)存
for i in range(0, len(x_test)):
N = 1024
fs = 12000
t = np.linspace(0, N/fs, N, endpoint=False)
wavename = 'cmor3-3'
totalscal = 256
fc = pywt.central_frequency(wavename)
cparam = 2 * fc * totalscal
scales = cparam / np.arange(totalscal, 1, -1)
[cwtmatr, frequencies] = pywt.cwt(x_test[i], scales, wavename, 1.0 / fs)
plt.contourf(t, frequencies, abs(cwtmatr))
plt.axis('off')
plt.gcf().set_size_inches(875/96, 656/96) #設(shè)置圖片大小以英尺為單位
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0) #去除邊緣
plt.margins(0, 0)
plt.savefig('./小波時(shí)頻圖 py/test_img/' + str(i) + '-' + str(y_test[i]) + '.jpg')
plt.clf() #避免內(nèi)存溢出
plt.close() #釋放內(nèi)存
四、CNN網(wǎng)絡(luò)的構(gòu)建和測(cè)試
1、CNN網(wǎng)絡(luò)構(gòu)建
CNN網(wǎng)絡(luò)一共有5個(gè)層級(jí)結(jié)構(gòu):輸入層、卷積層、激勵(lì)層、池化層、全連接FC層。論文中的采樣層即池化層。
1.輸入層:與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)/機(jī)器學(xué)習(xí)一樣,模型需要輸入的進(jìn)行預(yù)處理操作。即第二部分?jǐn)?shù)據(jù)處理。
2.卷積層:找出圖像中的某些特征與過濾器(Filter)進(jìn)行過濾,過濾的過程就是求卷積的過程。這里過濾器就是卷積核。
3.激勵(lì)層:所謂激勵(lì),實(shí)際上是對(duì)卷積層的輸出結(jié)果做一次非線性映射。Sigmoid函數(shù)、Tanh函數(shù)、ReLU、Leaky ReLU、ELU、Maxout。
4.池化層:池化(Pooling)也稱為欠采樣或下采樣。主要用于特征降維,壓縮數(shù)據(jù)和參數(shù)的數(shù)量,減小過擬合,同時(shí)提高模型的容錯(cuò)性。
5.輸出層(全連接層):經(jīng)過前面若干次卷積+激勵(lì)+池化后,終于來到了輸出層,模型會(huì)將學(xué)到的一個(gè)高質(zhì)量的特征圖片全連接層。其實(shí)在全連接層之前,如果神經(jīng)元數(shù)目過大,學(xué)習(xí)能力強(qiáng),有可能出現(xiàn)過擬合。
這里我們通過不同圖片的命名來區(qū)分標(biāo)簽:x_1.jpg是正常狀態(tài),x_2.jpg是內(nèi)圈故障,x_3.jpg是滾動(dòng)體故障,x_4.jpg是外圈故障。
輸入特征圖的大小為28×28(同時(shí)用64×64對(duì)比); 隱層由兩層卷積層和兩層采樣層交替組成,第一層和第二層卷積層的卷積核個(gè)數(shù)分別為6和12,卷積核的大小取為5 ×5,激活函數(shù)選擇 sigmoid 函數(shù); 采樣層(池化層)的采樣方式選擇均值采樣,即對(duì)特征圖求其p × p區(qū)域內(nèi)的平均值,區(qū)域大小取2×2且區(qū)域不重疊; 分類器選擇softmax 分類器。
網(wǎng)絡(luò)結(jié)構(gòu)圖3-1。
圖3-1 ?CNN網(wǎng)絡(luò)結(jié)構(gòu)
?2、訓(xùn)練參數(shù)的優(yōu)化
采用學(xué)習(xí)率自適應(yīng)調(diào)整、以訓(xùn)練誤差作ρ為停止條件的方法對(duì)網(wǎng)絡(luò)作進(jìn)一步優(yōu)化,具體方法如下: 初始學(xué)習(xí)率設(shè)定為0.009,最小學(xué)習(xí)率設(shè)定為0.6,每迭代五次就調(diào)整一次學(xué)習(xí)率,學(xué)習(xí)率的衰減因子設(shè)定為0.97。
如果我們直接用默認(rèn)的學(xué)習(xí)率(0.001)和ReLU激活函數(shù)效果會(huì)更好,收斂的更快。
4、訓(xùn)練結(jié)果
圖3-2 ?訓(xùn)練過程的準(zhǔn)確率和誤差曲線
這里我們發(fā)現(xiàn)第二個(gè)圖的收斂比第一個(gè)圖慢,所以第一個(gè)圖的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)更優(yōu),第一個(gè)圖輸入層28*28 ,第一層和第二層卷積層的卷積核個(gè)數(shù)分別為6 和12,卷積核的大小取為 5 × 5,激活函數(shù)選擇 sigmoid 函數(shù)。
圖3-3 ?測(cè)試混淆矩陣
注意matlab版本要有深度學(xué)習(xí)工具箱,我的是2022a版本,python要用tensorflow2.6
代碼下載鏈接:
matlab版:??正在為您運(yùn)送作品詳情文章來源:http://www.zghlxwxcb.cn/news/detail-418604.html
python版:??正在為您運(yùn)送作品詳情文章來源地址http://www.zghlxwxcb.cn/news/detail-418604.html
到了這里,關(guān)于基于小波時(shí)頻圖和2D-CNN的滾動(dòng)軸承故障檢測(cè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!