1. 实验数据集说明
凯斯西储轴承故障数据集是凯斯西储大学制作的一个球轴承故障诊断公开数据集[1]。电机轴承使用电火花加工 (EDM) 植入故障。在内滚道、滚动体(即球)和外滚道处分别引入了直径从0.007英寸到0.040英寸不等的故障。将故障轴承重新安装到测试电机中,并记录电机负载为 0 至 3 马力(电机速度为 1797 至 1720 RPM)的振动加速度传感器监测数据。在测点布置上,多数采集了三个位置的数据,DE表示驱动端,FE表示风扇端,BA表示基座端。
2. 数据形式
数据包括两个驱动端轴承的监测数据,一个风扇端的监测数据以及少量的baseline数据。故障类型包括滚珠、内圈和外圈故障三种。转速范围在1730-1797rpm之间,负载设置了0、1、2、3马力四种。通过EDM制造人工故障,故障直径(Fault diameter)包括0.007″ 0.014″0.021″三种(单位是密耳)。关于故障类型的细划分,可参考文献[2]。在采样频率上,包括12khz和48khz两种,文件夹如下。
3. 深度卷积模型构建与测试结果
由于预训练模型默认设置为三通道输入,此处复制了原始数据为三通道形式。
# 数据增维
X = X.reshape((4600, 32, 32, 1))
X = np.array(tf.tile(X,[1,1,1,3]))
# 划分数据集
X_train, X_test, Y_train, Y_test = train_test_split(X, Y_onehot, test_size=0.3, random_state=0)
测试(2)中构建了贯序式模型,本次测试了函数式方法 构建MobileNetv2模型。
from tensorflow.keras import layers, models
# 轻量级卷积模型结构构建
base_model = tf.keras.applications.MobileNetV2(input_shape=(32,32,3),
include_top=False, #是否包含顶层的全连接层
weights='imagenet')
inputs = tf.keras.Input(shape=(32, 32, 3))
x = base_model(inputs, training=True) # 参数变化
#全局池化
x = tf.keras.layers.GlobalAveragePooling2D()(x)
outputs = tf.keras.layers.Dense(10)(x)
model = tf.keras.Model(inputs, outputs)
# 模型超参数设置
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['accuracy'])
# 模型拟合
history = model.fit(X_train, Y_train, epochs=20,
validation_data=(X_test, Y_test))
模型训练过程可视化结果如下:
训练精度有点感人@_@ ,下次出个教程调优超参数!
参考文献
[1] https://engineering.case.edu/bearingdatacenter
[2] https://zhuanlan.zhihu.com/p/448210993
文章出处登录后可见!
已经登录?立即刷新