一、前言
上周完成《SeisInvNet》论文的初步阅读工作。
本周继续阅读《SeisInvNet》论文,并理解其逻辑结构。另外,在B站寻找视频了解了语义分割任务逻辑、深度学习一些概念等。
二、论文SeisInvNet
标题:Deep learning Inversion of Seismic Data—地震数据的深度反演
作者:Shucai Li, Bin Liu, Yuxiao Ren, Yangkang Chen, Senlin Yang, Yunhai Wang, Member, IEEE, and Peng Jiang, Member, IEEE
主要解决的问题:解决地震勘探领域中从时间序列数据到空间图像(地震速度模型)的映射挑战,通过深度神经网络(DNN)直接从地震数据重建速度模型。
现有方法存在的不足:解决地震勘探领域中从时间序列数据到空间图形的映射这一不适定问题的传统方法是通过迭代算法—存在非线性映射差和非唯一性强(不充分的观测或观测数据的噪声污染)的缺点;其他尝试可能会引入人为干预错误或未充分利用地震数据
对于DNN深度学习主导的FWI任务,可以简化为下列映射:
通常,对于图像到图像之间的映射,CNN是优选方案。但是在这篇文章中,直接使用CNN不是最佳选择,理由如下:
DNN主要面临的挑战:弱空间对应性、地震数据与速度模型之间的不确定反射-接收关系、地震数据的时变性。
InversionNet直接构建从原始地震数据到相应速度模型的映射,尊存自动编码器架构,从编码整个地震数据的嵌入向量解码速度模型—由于数据在嵌入向量中被极度压缩,解码的速度模型可能丢失细节。
因此,文章提出在地震数据输入到网络之前经过一系列嵌入手段对数据的空间进行重构-编码,并通过DNN进行空间补齐,最后使用CNN对对齐数据进行训练-解码。
创新点:
- 可以充分利用所有地震数据:增强每条地震道的领域信息、观测设置和相应的地震剖面背景
- 可以从每条地震道中学习速度模型空间对应的特征图:通过全连接层来学习空间对齐的特征映射,该特征图具有与整个速度模型相对应的信息,进一步连接重建速度模型,可以处理地震数据的不确定性和时变特性(使用到了图像嵌入的想法)
主要思想:提出一种端到端的地震反演网络(SeisInvNet),具有新的组件,可以充分利用所有地震数据。具体来说,从每条地震道开始,用它的领域信息、观测设置和相应的地震剖面的全面背景来增强它。然后,从增强的地震道中,可以学习空间对齐的特征图,并进一步以重建速度模型。
学习补充:SeisInvNet-CSDN博客。
- Deep-learning seismic full-waveform inversion for realistic structural models:在原SeisInvNet网络基础上,扩宽了嵌入操作维度范围,在一定程度上提升了SeisInvNet的效果,同时,提出了更多的模拟地层结构的仿真手段来弥补原SeisInvNet的泛化性不足的问题。
论文详细信息见:论文学习记录之SeisInvNet(Deep-Learning Inversion of Seismic Data)-CSDN博客。
2.1 符号介绍
- 地震数据的大小为[S,T,R],分别表示震源个数、时间步长的数量、接收器个数,设置为[20,1000,32]。因此将有640条记录的地震道,从而生成640个特征图。
- 速度模型的大小为[H,W],分别表示速度模型的高度和宽度,设置为[100,100]。
2.2 SeisInvNet框架介绍
给定地震数据:A-C表示不同来源的数据,a-c表示不同接收器记录的数据。同时,为了节约空间,数据不以其原始比例显示。
- (a)嵌入编码器用一个嵌入向量代替每条原始地震道,其中嵌入向量有邻域信息(用白色透明的长方形条框表示),观测设置(用正方形表示,例如图上的红色小正方形),相应地震剖面的全局上下文(用绿色、蓝色的长方形条框表示);
- (b)空间对齐特征生成器将每个嵌入向量转换为特征图,其信息与速度模型空间对齐;
- (c)速度模型解码器收集所有的特征图,从这些特征图中解码只是以回归速度模型;
- (d)通过最小化L2指标和最大化MSSIM指标来优化解码器、生成器和解码器的参数,使输出更接近地面真实值。
本文通过下列映射关系实现:
2.2.1 嵌入编码器
嵌入编码器中生成包含邻域信息、观测设置和全局上下文的嵌入向量,计算方式用下式表示:
- 邻域信息:
首先提取同炮面(s相等)的地震道信息,接着进行CNN后获得领域信息,最后提起所在接收器的一道数据即可获得,流程图如下图所示。
- 观测设置:
将接收器r的位置和源位置s转换为one-hot编码。由于和,观测设置S(是维数的向量)
- 全局上下文:
全局上下文的提取方式与上述邻域信息的提取类似。
2.2.2 空间对齐特征生成器
给定的嵌入向量,首先使用具有几个全连接层(包括激活和范数运算)的MLPs将他们进一步压缩为大小为的向量,然后将每个向量重新调整为大小为的特征图。由于嵌入向量具有比原始地震数据小得多的维数,因此映射到特征图对于完全连接的层是可以接受的。本文设计了Generator生成器,输出与速度模型相同维度比的特征图。从这些特征图中,速度模型将被重建。因此,在训练之后,特征图的每个部分将表明速度模型的对应部分中的知识,特征图在空间上与速度模型对齐。另外,特征图来源于不同的源s和接收器r,每个特征图都有自己的敏感期。因此,会聚焦于速度模型的不同部分。
从下图中很容易看出,来自左接收器(#1 - 8)记录数据的特征图在左侧具有高激活,这意味着它可以提供更多的信息来重建速度模型的左侧部分。类似地,由中左接收器(# 9 - 16)、中右接收器(# 17 - 24)和右接收器(# 25 - 32)绘制的特征图分别具有用于重建速度模型的中左、中右和右部分的信息。但是,两种特征图对速度模型底部的响应都很小,这意味着很难从地震数据中推断出信息来重建底部,也意味着特征图的敏感区域不能覆盖整个速度模型。
特征图可视化。每个特征图都被放大以更好地说明。特征图显示了清晰的敏感区域(黄色区域)。
2.2.3 速度模型解码器
速度模型解码器收集所有的特征图,并从中解码知识,以通过具有多个卷积层(包括激活函数和范数操作)的CNNs的回归速度模型(它的大小为)。在训练过程中,速度模型解码器随机丢弃若干个特征图(dropout),使解码器在重建速度模型时不再只依赖某些特征图,提高了其鲁棒性,防止了过拟合。
2.2.4 损失函数
SSIM定义为:
其中,x和y是两个对应的窗口,而和用于维持稳定的两个常数。SSIM的得分范围从0到1,当两个窗口中的信息完全相同时,SSIM得分达到最大值。
因此,除了最小化范数度量,在这项工作中,将同时最大化SSIM度量。具体来说,应用L2范式和多尺度结构相似性(MSSIM)来计算每个数据对的损失率:
其中,分别表示第i-th数据对的反演结果和地面真实情况,是以k为中心的、大小为r的两个对应窗口。本文在总R的不同尺度上进行SSIM,对于每一个尺度r都有一个权重来控制它的重要性。
2.3 数据集准备
数据集包含12000个不同的速度模型和相应的合成地震数据对,命名为SeisInv数据集。速度模型被设计成具有水平分层结构,具有沿界面沿着随机分布的几个小的起伏跌宕。通常,数据集中的速度模型可以根据地下界面的数量分为四个子集,分别为I,II,III和IV型。在每个类别中,通过首先生成地质界面,然后用从[1500,4000]中随机选择的恒定速度值填充两个相邻界面之间的层,设计了3000个不同的模型。根据地下实际地质条件的统计,越深地层的地震波速度越大。
训练数据集的总体统计数据。a)速度随深度的分布。红色星号表示垂直轴上所示深度上速度分布的平均值,蓝色间隔表示相应的标准差。b)速度模型中值的直方图。蓝色条表示在相应速度区间内具有速度值的网格数。c)速度模型上的界面分布。每个网格中的接口数量通过右侧色图可视化。
在本文的地震资料数值生成中,速度模型的网格尺寸为100 × 100,在地表上均匀布置20个震源,每隔5个网格,在地表的每个网格上布置100个接收器。通常,声波方程如下所示:
其中,p表示压力,即声波场,v表示介质的波速,x和y是空间坐标,t是时间。
本文随机将SeisInv数据集分为三组,10000用于训练,1000用于验证,1000用于测试。为了降低计算复杂度,并便于与其他方法进行比较,只利用前1000个时间步的数据,并从100个接收器中对32个接收器记录的数据进行均匀采样。因此,的大小为【20,1000,32】,的大小为【100,100】。为了验证SeisInvNet的有效性,本文使用完全卷积网络作为基线模型。具体来说,本文设计了基于编码器-解码器网络的基线模型,如[32](32表示:Inversionnet:使用卷积神经网络进行准确高效的地震波形反演)中所使用的。
为了优化SeisInvNet和基线模型,使用Adam优化器,batchsize为12,并按照“poly”学习率策略将初始学习率设置为5e-5。在训练过程中,总共执行了200个epoch,并在Velocity Model Decoder中将丢弃率设置为0.2。SeisInvNet中最长的路径有24层(每一层都是卷积或全连接操作,激活操作和范数操作的组合)。SeisInvNet有大约10M个参数,可以进行端到端的训练,无需任何预处理和后处理。
2.4 实验展示
为了方便,使用一系列希腊字母来表示SeisInvNet的每个变体和基线模型,()对应InversionNet,()对应具有L1损失的基线模型,()对应具有L1损失的SeisInvNet模型,()对应具有L2损失的基线模型,()对应具有L2损失的SeisInvNet模型,()对应具有L2和MSSIM损失的基线模型,()对应具有L2和MSSIM损失的SeisInvNet模型。
从测试数据集中随机选择所有方法的结果。从上到下的每一行分别展示了速度类型I和IV的例子。
不同方法在五个指标和两个数据集上的性能统计
三、深度学习
本章节的学习参考该链接:1.深度学习要解决的问题_哔哩哔哩_bilibili。
3.1 深度学习定义
本节主要记录深度学习的起源、定义、重要性、流程等。
深度学习是机器学习的一种,其基本结构是深度神经网络,解决如何提取特征的问题。
深度学习存在的问题:
- 可解释性差:深度学习模型通常被认为是“黑箱”,因为其决策过程很难解释,这使得人们很难理解模型为什么会做出某个决策,也使得模型难以被信任。
- 对数据和计算资源依赖性强:深度学习需要大量的标注数据,通常需要强大的计算资源来训练模型。对于数据量小或者计算资源有限的场景,深度学习可能无法发挥出最佳的效果。
- 鲁棒性不足:深度学习模型容易受到对抗性攻击的影响,即通过在输入数据中添加微小的扰动,就可以使模型做出错误的决策。这使得深度学习模型在某些场景下可能不够可靠。
- 模型优化困难:深度学习模型的优化是一个复杂的问题。为了提高模型的性能,需要仔细选择合适的网络结构、优化算法、学习率等。而且,模型在训练过程中可能会陷入局部最优解,导致模型性能不佳。
- 数据分布问题:在深度学习中,一个常见的问题是训练数据和测试数据之间存在分布差异。这可能导致模型在测试时的表现不如在训练时出色。为了解决这个问题,需要使用一些技术来处理数据分布差异,例如数据增强、迁移学习等。
机器学习的流程:
- 数据获取
- 特征工程
- 建立模型
- 评估与应用
特征工程的作用:
- 数据特征决定了模型的上限
- 预处理和特征提取是最核心的
- 算法和参数选择决定了如何逼近这个上限
IMAGENET数据集:22K categories and 14M images
机器学习常规套路:
- 收集数据并给定标签
- 训练一个分类器
- 测试,评估
def train(train_images, train_labels):
# build a model for images -> labels...
return model
def predict(model, test_images):
# predict test_labels using the model...
return test_labels
K邻近计算流程:
- 计算已知类别数据集中的点与当前点的距离
- 按照距离依次排序
- 选取与当前点距离最小的K个点
- 确定前K个点所在类别的出现频率
- 返回前K个点出现频率最高的类别作为当前点预测分类
为什么K近邻不能用来图像分类?
- 背景主导是一个最大的问题,而我们关注的却是主体(主要成分)
- 思考:如何让机器学习学到哪些是重要的成分呢?
3.2 神经网络基础
3.2.1 线性函数(得分函数)
从输入到输出的映射:每个特征x对应不同的权重参数W——>每个类别的得分
数学表示:,通常情况下,W称为权重参数—对结果起决定性影响的因素(在学习过程中不断进行调整,另外多组权重参数构成了决策边界),b称为偏执参数—起到微调作用(各自类别,各自微调)
3.2.2 损失函数
损失函数(Loss Function)在机器学习中用于评估模型预测的好坏。它通常是一个非负实数函数,表示模型预测值与真实值之间的差距,可以做分类、回归等任务(区别在于如何定义损失函数)。损失函数的选取取决于具体的机器学习任务和模型类型,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。
在训练过程中,损失函数会计算每个样本的预测误差,并用于调整模型的参数以最小化总体的预测误差。最小化损失函数的过程是通过优化算法来寻找使损失函数值最小的模型参数。损失函数的选择对于模型的训练和性能至关重要,不同的损失函数适用于不同类型的问题。例如,回归问题常用均方误差作为损失函数,而分类问题常用交叉熵作为损失函数。
损失函数=数据损失+正则化惩罚项,通常情况下,正则化惩罚项可以直接使用平方项完成,即:
注意:越强大的网络,越强大的模型,过拟合的风险越大。
如何把一个得分值转换成一个概率值呢?
Softmax分类器: Softmax是一种数学函数,主要用于将一组任意实数转换为一个概率分布的实数。其本质是一种归一化函数,可以将一组任意的实数值转化为在[0, 1]之间的概率值。Softmax常用于多分类问题中,因为它可以将分类器最后的输出转换为概率形式,便于理解和比较。
在二分类问题中,Softmax函数可以看作是逻辑函数的推广。而在多分类问题中,Softmax函数是逻辑回归的进一步推广。它可以用于处理多于两个类别的分类任务,将多分类的输出数值转化为相对概率,使得每个类别的概率之和为1,并且每个输出值都在0到1之间。
Softmax函数的计算方法是将模型的预测结果通过指数函数进行转换,然后除以所有转化后结果之和,得到每个类别的概率分布。这样可以保证输出的概率值非负且总和为1,使得模型更容易理解和解释。
- 归一化:,其中,
- 计算损失值:
四、语义分割
语义分割(Semantic Segmentation)是计算机视觉中的一个基本任务,主要用于识别图像中的对象,并对每个像素进行分类,将图像中的每个像素划分为不同的类别,使得具有相同语义的像素被划分到同一个类别中。
语义分割的实现基于深度学习技术,通过对大量的标注数据进行训练,让模型学习到从原始图像中提取有用的特征来进行像素级别的分类。这种技术在自动驾驶、机器人视觉、医疗影像分析等领域有着广泛的应用前景。
语义分割与图像分类和物体检测有所不同。在图像分类任务中,通常是将整个图像作为一个整体进行分类,而不会对图像中的每个像素进行分类。在物体检测任务中,虽然会涉及到像素级别的分类,但通常只关注图像中的特定物体或区域,而不会对整个图像进行像素级别的分类。
Labelme:开源的图像标注工具,使用Python和PyQT编写,支持对图像进行多边形、矩形、圆形、多段线、线段、点形式的标注,可用于目标检测、图像分割等任务。
学习参考:Pytorch 搭建自己的Unet语义分割平台(Bubbliiiing 深度学习 教程)_哔哩哔哩_bilibili。通过该项目了解了语义分割的流程。
五、遇到的问题及解决
5.1 如何理解从时间序列数据到空间图像的映射挑战
地震勘探领域,时间序列数据指地震波在地下的传播速度、反射等信息,空间图像指地下结构的二维或三维成像。时间序列数据到空间图像的映射,是要将随时间变化的数据转化为空间域的表示,以揭示地下结构形态的过程。该过程中面临的挑战主要包括以下几点:
- 数据处理和整合:时间序列数据通常非常庞大,需要高效的数据处理方法来确保准确的成像。同时,数据整合也是一个挑战,因为不同来源和不同条件下的数据可能具有不同的特性,需要进行适当的校准和整合。
- 复杂地质结构的建模:地下结构通常是复杂多变的,如何建立精确的地质模型,并从时间序列数据中提取有用的信息,是实现高质量成像的关键。
- 信号处理和图像重建:在将时间序列数据转换为空间图像时,需要采用先进的信号处理和图像重建技术。包括去除噪声、增强信号、处理缺失数据等,以确保生成的图像具有高分辨率和高清晰度。
- 算法效率和可扩展性:随着数据量的增长,算法效率和可扩展性变得至关重要。需要开发高效且可扩展的算法和计算工具,以处理大规模的地震数据集。
- 数据解释和可视化:如何将生成的空间图像转化为易于理解的地质信息,并对其进行有效的可视化展示,也是一大挑战。这需要借助先进的解释技术和可视化工具。
5.2 如何理解地震数据的不确定性与时变特性
- 不确定性:地震数据的不确定性主要来自于地震波传播的复杂性和观测条件的限制。由于地震波在地下的传播过程中会受到多种因素的影响,如岩性、地质构造、地下水位等,使得地震数据的解释变得非常复杂。此外,观测条件的限制,如地震仪器的精度、观测环境的噪音等,也会导致地震数据的不确定性。为了减小这种不确定性,可以采用更先进的数据处理和解释方法,如深度学习技术,对地震数据进行更准确的分析和解释。
- 时变特性:地震数据的时变特性主要表现在地震波的传播速度和强度会随着时间和空间的变化而变化。这种变化可能是由于地下岩性的变化、地质构造的运动、地下水位的变化等多种因素引起的。为了处理这种时变特性,需要对地震数据进行动态分析和反演,考虑时间和空间的变化因素,建立更符合实际情况的地震模型。
5.3 SSIM与MSSIM
SSIM是一种衡量两幅图片相似度的指标。与PSNR一样,SSIM也经常用作图像质量的评价。
SSIM输入是两张图像,其中一张是未经压缩的无失真图像(即gouth truth),另一张是恢复出的图像。假设输入的两张图像分别是x和y,那么:
其中,,公式1是SSIM的数学定义:
,
,
,
其中,是亮度比较/对比(以平均灰度衡量,通过平均所有像素的值得到),是对比度比较(通过灰度标准差来衡量),是结构比较(结构对比比较的是经过归一化后与的比较)。分别代表x和y的平均值,分别代表x和y的标准差,代表x和y的协方差,而分别为常数,避免分母为0带来的系统错误。
注意:在实际工程计算中,一般设定,以及,可以将SSIM简化为下:
总结:
- SSIM具有对称性,即;
- SSIM是一个0到1之间的数,越大表示输出图像与无失真图像的差距越小,即图像质量越好。当两幅图像一模一样时,。
学习参考:SSIM (Structure Similarity Index Measure) 结构衡量指标+代码 - 知乎 (zhihu.com);
MSSIM-平均结构相似性是SSIM的实践常用方法。当需要衡量一张图片的质量,经常使用的是一个一个窗口计算SSIM然后求平均。
- 将原始图像和失真图像进行预处理,包括灰度化、降噪等操作,以消除可能存在的失真和噪声对计算结果的影响。
- 将预处理后的图像使用滑动窗口分割为N块,以获得多个窗口图像。
- 加权计算每一个窗口的均值、方差以及协方差,通常采用高斯核,然后计算对应块的结构相似性SSIM,最后将平均值作为两张图像的结构相似性度量。
六、小结
6.1 存在的问题
- 1. 个人理解:地震反演中大部分为无监督学习,监督学习一般如何打标签?
答:现在地震反演中都使用的监督学习,已知正确答案。
-
2. 目前有一部分网络对Unet进行改进,例如Unet++,这些可以在地震反演中尝试吗它是一种基于深度监督的编码器-解码器网络结构,它通过引入多级特征融合和跳跃连接的方式提高了语义分割和实例分割任务的准确性和细节保留能力。
多级特征融合:Unet++通过在解码器中加入更多的融合模块,使得网络可以在不同层次上进行多级特征融合,从而更好地提取图像的语义信息。
跳跃连接:Unet++中的跳跃连接允许从编码器到解码器直接传递信息,以帮助保留更多的细节信息。具体而言,Unet++的解码器部分会根据不同层次的特征融合结果,将相应的特征图与编码器对应层次的特征图进行拼接,形成跳跃连接。这种机制可以有效地将低级别的细节信息传递到高级别语义分割结果中,提高分割的精度和边界的锐利度。
- 3. InversionNet、Unet等网络提出较早,肯定有很多人在此基础上进行了创新,如果找到足够多的创新点,对其进行排列组合然后尝试可以吗?
- 4. SeisInvNet中观测设置由两个One-hot编码组成,什么是One-hot编码,如何理解?
- 5.这些字母的含义是特定的吗?
6.2 下周安排
-
在《Physics-Guided Data-Driven Seismic Inversion Recent progress and future opportunities in full-waveform inversion》这篇综述中还提到了一部分数据驱动的端到端重建方法:
- 阅读论文:《Deep-learning seismic full-waveform inversion for realistic structural models》