最近读了一篇轴承故障诊断的文章,通过将一维数据转化为二维灰度图,然后使用CNN进行训练。
文章名为:基于双通道 CNN 与 SSA-SVM 的滚动轴承故障诊断
具体原理如下:
1.数据归一化:选择长度为1024的信号,并将次信号归一化到[0,1]的范围。
2.分组:将归一化的数据按顺序分为32组,每组有32个数据点。
3.形成二维矩阵:将这32组数据按顺序沿列方向依次拼接,形成形状为32*32的二维矩阵。
4.将二维矩阵转换为灰度图,灰度图的明暗由该点元素大小决定。
下为转换示意图:
代码实现:
数据转换这部分代码实现比较简单,使用reshape并转置即可
data_reshaped = data.values.reshape(32, 32).T
然后使用matplotlib库把data_reshape转换为灰度图就可以了。
plt.imshow(data_reshaped, cmap='gray', interpolation='nearest')
下面是我使用其他数据生成的灰度图
这也是一种可行的时间序列成像方法(至少有论文佐证)
上述文章一维数据转换的方法和论文“Application of Multiscale Learning Neural Network Based on CNN in Bearing Fault Diagnosis”的方法一致。
但两种方法分组拼接方式不一致,中文方法是沿着列方向将每组拼接在一起,英文是沿着行方向将每组拼接在一起。下图为英文拼接方式示意图:
可以看出,两者原理一致,仅拼接方向不同。