运行效果:一维振动信号变为二维灰度图,利用局部二值模式(LBP)深化灰度图特征,然后利用CNN进行特征提取,最后使用softmax分类器和SVM进行分类对比(Python_哔哩哔哩_bilibili
所有用到的库的版本
1.数据集(凯斯西储大学CWRU数据集),四种负载下数据集,每种负载下分别有内圈故障,外圈故障,滚动体故障和正常四种状态。
2.项目流程
以0HP文件夹为例,打开后如下图所示
create_picture.py是将一维信号转成二维灰度图像的程序,
code.py是主程序,主要功能:读取灰度图像数据集,利用局部二值模式(LBP)对灰度图像特征提取,突出故障特征,分成训练集和测试集(4:1),再利用 CNN进行特征提取。针对CNN提取到的特征,第一种方法是利用softmax进行分类,获得测试准确率;第二种方式是,利用SVM(又分了两种不同核参数)进行分类,获得测试准确率。
3.效果图
0HP数据集
随意选取一张灰度图像的原始图像和经局部二值模式处理后的照片展示
softmax分类器下结果可视化
SVM分类器下结果可视化
C=1
C=100
CNN提取的训练集特征可视化(softmax/svm分类器前一层的特征)
CNN提取的测试集特征可视化(softmax/svm分类器前一层的特征)
1HP数据集
softmax分类器
训练集和测试集的准确率曲线
SVM分类器
C=1
C=100
CNN提取的训练集特征可视化(softmax/svm分类器前一层的特征)
CNN提取的测试集特征可视化(softmax/svm分类器前一层的特征)
2HP数据集
softmax分类器
SVM分类器
C=1
C=100
CNN提取的训练集特征可视化(softmax/svm分类器前一层的特征)
CNN提取的测试集特征可视化(softmax/svm分类器前一层的特征)
3HP数据集
softmax分类器
SVM分类器
C=1
C=100
CNN提取的训练集特征可视化(softmax/svm分类器前一层的特征)
CNN提取的测试集特征可视化(softmax/svm分类器前一层的特征)
4种负载下的平均测试集准确率(每个实验跑5次)
0HP | 1HP | 2HP | 3HP | |
softmax分类器 | 100% | 99.37% | 99.27% | 99.68% |
SVM(C=1)分类器 | 100% | 99.69% | 99.27% | 100% |
SVM(C=100)分类器 | 99.69% | 99.69% | 99.27% | 100% |
实验结果为,softmax分类器在四种负载下的平均准确率为99.58%,svm分类器在四种负载下的平均准确率为99.74%(C=1),99.66(C=100)。
效果最好的是SVM(C=1),但是也没高出softmax分类器太多,因为从CNN提取的特征可视化可以看出,经LBP深化灰度图像特征,再经CNN提取的特征已经有很好的可区分性了。
对项目感兴趣的,可以关注最后一行
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import cv2
import os
import keras
import tensorflow as tf
from tqdm import tqdm
from sklearn import __version__ as sklearn_version
from matplotlib import __version__ as matplotlib_version
#数据和代码的压缩包:https://mbd.pub/o/bread/ZJ6bkp1p