首页/文章/ 详情

深度学习专题之数据预处理 | 一维数据二维图像化方法分享(CWT、GAF、MTF)

10天前浏览1300

本文摘要:(由ai生成)

本文探讨了一维数据二维图片化在深度学习故障诊断领域的应用。通过CWT、GAF和MTF等方法将一维数据转换为二维图像,有助于特征提取、模型训练和异常检测。这些方法可捕捉信号的时频特征、时间依赖性和状态转移概率,提升时间序列分析效果。该应用为时间序列分析领域提供了新的视角,有助于处理和分析大量时间序列数据。文章还提供了Python实现代码,为实际应用提供了便利。

通过二维图片化的方法,可以提取出一维数据中隐藏的重要特征和模式,有助于后续的特征分析和模式识别。同时,二维图片化的数据更适合于深度学习模型的训练和应用,能够更好地捕捉数据的空间信息和相关性,提高模型的准确性和稳定性。因此,一维数据二维图片化在深度学习故障诊断领域具有重要的应用价值。适合于深度学习、故障诊断、信号处理领域学习者。

目录

1 前言

2 连续小波变换

    2.1 连续小波变换的基本原理

    2.2 利用连续小波变换二维图像化步骤

    2.3 python实现

3 格拉姆角场

    3.1 格拉姆角场的基本原理

    3.2 利用格拉姆角场二维图像化步骤

    3.3 python实现

4 马尔可夫转移场

    4.1 马尔可夫转移场的基本原理

    4.2 利用马尔可夫转移场二维图像化步骤

    4.3 python实现

5 结论

1 前言

二维图片化是将一维数据转换为二维图像的过程,通过这种转换,可以将原始的一维数据以更直观的方式展示出来,便于人们观察和分析数据的特征和趋势。这种技术在信号处理、数据分析、图像处理等领域中被广泛应用。将一维数据转换为二维图片的目的和意义主要有以下几点:

可视化展示:二维图片比一维数据更直观易懂,可以直观地展示数据的变化趋势、周期性、异常模式等,帮助人们更好地理解数据。

特征提取:通过二维图片化的过程,可以提取出数据中的重要特征信息,例如频率、幅度、周期性、相位等,这些特征对于后续的数据分析和模式识别非常有用。

模型训练:二维图片化的数据更适合于深度学习模型的训练和应用,能够更好地捕捉数据的空间信息和相关性,提高模型的准确性和稳定性。

异常检测:通过对二维图片化的数据进行分析和比较,可以更容易地发现数据中的异常模式或异常行为,有助于故障诊断和预测。

可解释性:二维图片化的数据更易于解释和理解,有助于向非专业人员或决策者展示数据分析结果,提高决策的依据性和可信度。

数据可视化:二维图片化的数据可以用于数据可视化,帮助用户直观地探索和分析数据,发现潜在的关联和规律

一维数据二维图片化不仅提高了数据的可视化效果和直观性,还能够帮助提取重要特征、训练深度学习模型检测异常和提高数据分析的可解释性,对深度学习故障诊断领域具有重要的应用价值。

本篇推文将介绍与深度学习故障诊断领域中一维数据二维图片化相关的信号处理方法。具体地,着墨写了以下内容:

连续小波变换(Continuous Wavelet Transform,CWT):介绍小波变换的基本原理和应用,以及如何利用连续小波变换将一维时间序列数据转换为二维图像,用于捕获信号的频率和时间信息。

格拉姆角场(Gramian Angular Field,GAF):格拉姆角场的概念和特点,以及如何使用格拉姆角场将一维时间序列数据映射为二维图像,反映数据间的相似度和差异性。

马尔可夫转移场(Markov Transition Field,MTF):将时序信号转换为二维矩阵,然后将矩阵转换为图片,用于分析序列数据的转换过程和模式。

2 连续小波变换

2.1 连续小波变换的基本原理

连续小波变换(Continuous Wavelet Transform,CWT)是一种信号处理技术,用于对信号进行多尺度分析,捕捉信号在不同频率和时间尺度上的特征。其基本原理如下:

连续小波变换利用小波函数对信号进行分解和重构。小波函数是一种局部化的函数,可以在时间和频率上具有局部性质,因此可以较好地捕获信号的局部特征。连续小波变换将信号与不同尺度和频率的小波函数进行卷积,得到不同尺度下的小波系数,从而实现对信号在频率和时间上的多尺度分析。CWT的公式为:

  (2-1)
其中,    由母小波经过伸缩与平移得到:
           (2-2)
式中,    为尺度因子,指的是与频率相关的伸缩;    为平移因子;    为小波基函数。若取信号中的低频特征,则选择较大的       值,若取信号中的高频特征,则选择较小的        值。        和        的意义示意图如图1所示。
图1    和  的意义示意图
小波基函数的选取是使用连续小波变换时的关键步骤,小波基函数选择的依据是波形应与实验信号的故障特征具有高度的相似性。因为Cmor小波具有良好的自适应性能,是Morlet小波的复数形式,并且Moret小波的波形与滚动轴承故障引起的冲击特征相似,因此,一般选择的CWT小波基函数为Cmor小波。Cmor小波的表达式为:
                     (2-3)
式中,    为带宽因子;    为中心频率因子。
连续小波变换作为一种强大的信号处理工具,可以对信号进行多尺度分析,具有较好的时频局部性和分辨率,在信号处理、图像处理、模式识别等领域有广泛的应用。比如:
信号分析:连续小波变换可以捕捉信号在不同频率和时间上的特征,常用于信号分析、时频分析、频谱分析等。
信号去噪:通过对小波系数进行阈值处理或压缩,可以实现信号的去噪和降噪,保留信号中的重要信息。
特征提取:连续小波变换可以提取信号的特征,用于信号分类、模式识别和特征提取任务。
图像处理:连续小波变换在图像处理中也有应用,可以实现图像的多尺度分析、边缘检测、纹理分析等。
2.2 利用连续小波变换二维图像化步骤
step1:选择小波函数。首先需要选择合适的小波函数作为变换的基函数。小波函数的选择通常取决于数据的特性和分析的目的,常见的小波函数包括Morlet小波、Haar小波、Daubechies小波等。
step2:尺度参数设置。连续小波变换涉及到尺度参数 a 和平移参数 b,需要设置合适的尺度参数范围。尺度参数决定了小波函数的频率,可以通过对尺度参数进行离散化或取对数等处理来得到一组离散的尺度值。
step3:进行连续小波变换。将一维数据与选择的小波函数进行连续小波变换,得到一组二维小波系数。
step4:生成二维图像。将得到的二维小波系数作为像素值,构建成二维图像。可以根据具体需求选择合适的图像显示方式,如灰度图或彩色图。
step5:图像后处理。对生成的二维图像进行后处理,包括图像增强、边缘检测、特征提取等,以便更好地展示和分析数据的特征。
总体来说,利用连续小波变换将一维数据转换为二维图像的关键步骤包括选择合适的小波函数、设置尺度参数范围、进行连续小波变换、生成二维图像,并对图像进行适当的后处理。这种方法可以帮助捕捉信号的时频特征和局部信息,适用于信号处理、图像处理、模式识别等领域。
2.3 python实现
下面是一个使用Python和matplotlib库实现将一维时间序列数据映射为二维图像的示例代码:
    import numpy as npimport pywtimport matplotlib.pyplot as plt# 生成随机一维数据np.random.seed(0)data = np.random.rand(1024)# 设置连续小波变换参数wavelet = 'morl'  # 小波函数选择Morlet小波scales = np.arange(1, 128)  # 尺度参数范围# 进行连续小波变换coefficients, frequencies = pywt.cwt(data, scales, wavelet)# 生成二维图像plt.figure(figsize=(10, 6))plt.imshow(np.abs(coefficients), extent=[-1, 1, 1, 128], cmap='jet', aspect='auto')plt.colorbar(label='Magnitude')plt.title('Continuous Wavelet Transform')plt.xlabel('Time')plt.ylabel('Scale')plt.show()

    图2 cwt生成效果示意图

    代码运行结果如图2所示。在这个示例中,我们首先生成了一个随机的一维数据 data,然后选择了 Morlet 小波作为小波函数,设置了尺度参数范围为 1 到 128,并利用 pywt.cwt 函数进行连续小波变换,最后利用 imshow 函数生成了二维图像。你可以根据实际需求调整小波函数、尺度参数范围以及数据的生成方式,以适应不同的应用场景。

    3 格拉姆角场

    3.1 格拉姆角场的基本原理
    GAF 图像编码的原理是通过使用格拉姆矩阵对一组矢量进行线性相关的计算,将一 段时间序列编码成二维图像,该图像很好的保留了时间依赖性。假设有 n 个实际观测 的时间序列    ,采用公式 3-1 对该序列进行重新缩放,使所有值在[-1,1] 或[0,1]区间内。然后使用公式 3-2 将缩放后的值    或   编码为角度      的余弦值,并将时间节点      编码为半径      。其中,      是正则化极坐标系空间的常数因子,用于调整极坐标系的跨度。
            (3-1)
                      (3-2)
    在格拉姆角场中,目标区间不同的时间序列,经过重新缩放后具有不同的角度边界。目标区间[0,1]和目标区间[-1,1]对应的分别是[0,   /2]中的余弦函数和[0,     ]内的余弦函数, 这一特性为后续神经网络的分类提供多种不同的格拉姆角域信息粒度。在极坐标系中对 时间序列进行表示后,利用各点的角度以及各点之间的角度差来确定彼此之间的时间相关性。GADF(对应做角度差) 及 GASF (对应做角度和)的定义如下:
     
       
    式中,    是经过缩放的时间序列,    是    的转置。 通过内乘的方法对向量    进行定义:    ;    。使用这两种不同的内乘法可以将这两种形式的格拉姆角场转 换为准格拉姆矩阵    。
    格拉姆角场编码技术相较于笛卡尔坐标系,最大的优势在于对时间序列进行缩放后, 其在极坐标系中仅有一个结果,利用极坐标系中的半径    来保持时间上的绝对联系,编 码过程如图 3 所示。
    图3 GAF图像编码示意图
    利用上述方法,可以将一个特定的时间序列转换成一个沿对角线对称的二维图像,并且保留了该图像的时变特性。
    3.2 利用格拉姆角场二维图像化步骤
    step1:准备时间序列数据。首先,准备一维的时间序列数据,例如一个包含时间序列值的数组或列表。这可以是任何类型的时间序列数据,比如传感器数据等。
    step2:构建格拉姆矩阵。使用时间序列数据构建格拉姆矩阵。格拉姆矩阵的计算方式是将时间序列数据中的每个时间点作为一个向量,然后计算这些向量之间的内积。
    step3:计算角度表示将格拉姆矩阵中的元素转换为角度表示。通常采用反余弦函数来进行转换。
    step4:生成二维图像。将计算得到的角度表示作为二维图像的像素值,生成二维图像。可以使用图像处理库(如matplotlib)来绘制和显示二维图像。
    总体来说,格拉姆角场是一种基于内积计算和角度变换的特征提取方法,可以有效地反映时间序列数据的时频特征和动态结构,具有保留关键信息、减少维度和用于特征提取等特点。
    3.3 python实现
    下面是一个使用Python和matplotlib库实现将一维时间序列数据映射为二维图像的示例代码:
      import numpy as npimport matplotlib.pyplot as plt# 准备一维时间序列数据(示例数据)np.random.seed(0)time_series = np.random.rand(100)# 计算格拉姆矩阵gram_matrix = np.outer(time_series, time_series)# 计算角度表示(在这里进行范围限制避免无效值警告)diag_sqrt = np.sqrt(np.outer(np.diag(gram_matrix), np.diag(gram_matrix)))angle_matrix = np.arccos(np.clip(gram_matrix / diag_sqrt, -1, 1))# 生成二维图像plt.imshow(angle_matrix, cmap='jet', aspect='auto')plt.colorbar(label='Angle (radians)')plt.title('Gramian Angular Field')plt.xlabel('Time')plt.ylabel('Time')plt.show()
      图4 GAF生成图像示意图
      代码运行结果如图4所示,在这个示例中,我们生成一个随机的一维时间序列数据 time_series,然后构建了格拉姆矩阵和计算了角度表示,最后使用matplotlib库生成了二维图像。这个二维图像可以反映出时间序列数据在时域上的相关性和结构信息。

      4 马尔科夫转移场

      4.1 MTF基本原理
      马尔科夫转移场(Markov transition field,MTF)在传统马尔科夫链模型上添加时间和空间因素,建立马尔科夫转移矩阵,将一维时域信号转化为二维特征图的基础上保留原始信号时间相关性。
      原始给定时序信号    根据不同时刻信号幅值将自身分为    分位数区域,不同数据点特征各不相同,据此将其映射到不同的 分位数区域      。然后,沿着时间轴 方向运用马尔科夫链计算各分位点的跃迁,由此 构建马尔科夫转移矩阵      ,见式4-1。
                               (4-1)
      式中,    为分位数区域    中数据点迁移到分位数区域    的概率。
      但马尔科夫转移矩阵对时序信号     和步长 的时间依赖性不高,时间信息和位置信息的忽略, 导致原始信号部分重要信息丢失。故此,拓展转 移矩阵    为马尔科夫转移场    ,计算公式如式4-2所示。
                              (4-2)
      式中,    为分位数区域    中数据点迁移到分位数区域    的概率。
      然后,依据矩阵  中各元素值与不同的像素点相对应,由此实现将一维信号转化为二维图 像的过程,实现可视化。MTF二维图像不仅保留了原始一维信号的时间信息,使其具有时间相关性,而且矩阵中元素各不相同,使得二维图像像 素差异较大,能更好地发挥 CNN 图像识别的优势。MTF 图像生成过程见图5。

      图5 MTF图像生成过程
      4.2 利用马尔科夫转移场二维图像化步骤
      step1:准备时间序列数据。首先,准备一维的时间序列数据,例如一个包含时间序列值的数组或列表。这可以是任何类型的时间序列数据,比如传感器数据等。
      step2:状态划分。将时间序列数据划分为一系列状态。这些状态可以是离散的,也可以是连续的,取决于数据的特性和分析的需求。常见的划分方法包括等距划分、基于阈值的划分或基于数据特征的划分。
      step3:计算状态转移概率。基于划分得到的状态序列,计算状态之间的转移概率。这可以通过统计每个状态转移到下一个状态的频次来实现,然后将频次转化为转移概率。
      step4:构建转移矩阵。将计算得到的转移概率表示为转移矩阵。转移矩阵的每个元素表示了从一个状态到另一个状态的转移概率,矩阵的大小与状态数量有关。
      step5:生成二维图像。将转移矩阵中的转移概率映射为颜色值或灰度值,生成二维图像展示状态之间的转移关系。常用的颜色映射包括热图(heatmap)或灰度图。
      4.3 python实现
      下面是一个使用Python和matplotlib库实现将一维时间序列数据映射为二维图像的示例代码:
        import numpy as npimport matplotlib.pyplot as plt# 准备一维时间序列数据(示例数据)np.random.seed(0)time_series = np.random.randint(0, 10, 100)  # 随机生成一维时间序列数据(假设取值范围为0到9)# 划分状态(假设状态范围为0到9)num_states = 10states = np.linspace(0, 9, num_states, endpoint=True)# 计算状态转移概率transition_matrix = np.zeros((num_states, num_states))for i in range(len(time_series) - 1):    current_state = np.argmin(np.abs(states - time_series[i]))  # 当前状态    next_state = np.argmin(np.abs(states - time_series[i + 1]))  # 下一个状态    transition_matrix[current_state, next_state] += 1# 归一化转移概率transition_matrix /= np.sum(transition_matrix, axis=1, keepdims=True)# 生成二维图像plt.imshow(transition_matrix, cmap='jet', aspect='auto')plt.colorbar(label='Transition Probability')plt.title('Markov Transition Field')plt.xlabel('Next State')plt.ylabel('Current State')plt.xticks(np.arange(num_states), [f'{s:.1f}' for s in states])plt.yticks(np.arange(num_states), [f'{s:.1f}' for s in states])plt.show()
        图6 MTF生成图像示意图

        代码运行结果如图6所示,在这个示例中,我们生了一个随机的一维时间序列数据 time_series,然后将数据划分为10个离散的状态,并计算了状态之间的转移概率,最后使用matplotlib库生成了二维图像展示状态之间的转移关系。这种方法可以帮助理解时间序列数据中状态的变化规律和转移概率,对于某些故障诊断场景有一定的应用价值。

        5 结论

        多项研究结果显示,将时间序列数据转换为二维图像,并运用成熟的计算机视觉技术进行特征提取和识别,可以显著提升效果,对时间序列数据的研究起到至关重要的作用。这种方法明显优于传统的时间序列分析方法,主要体现在以下几个方面:
        1. 转换过程本质上是一种升维操作,从而大幅增加了信息量,比如增强了不同时刻数据值之间的关系表达;

        2. 转换过程同时也是一种有针对性的数据处理过程,使数据的主要特征更加凸显;

        3. 可以充分利用计算机视觉领域的特征提取机制,高效地提取关键特征;

        随着数据采集技术的不断进步和设备的广泛应用,各种场景下产生的庞大时间序列数据亟需高效的分析方法。将时间序列转换为二维图像,并依托图像领域的研究成果进行分析,是一种崭新的突破性方法。此外,还存在一些有待挖掘的研究点,如转换过程中的数据不丢失问题。当前,时间序列分析领域相对于图像领域在研究进展上仍未有较大突破,因此这种方法可为相关领域的研究者带来全新的视角。

        来源:故障诊断与python学习
        振动pythonUM多尺度数字孪生
        著作权归作者所有,欢迎分享,未经许可,不得转载
        首次发布时间:2024-04-23
        最近编辑:10天前
        故障诊断与python学习
        硕士 签名征集中
        获赞 42粉丝 33文章 81课程 0
        点赞
        收藏

        作者推荐

        未登录
        还没有评论

        课程
        培训
        服务
        行家

        VIP会员 学习 福利任务 兑换礼品
        下载APP
        联系我们
        帮助与反馈