上周完成《SeisInvNet》论文的初步阅读工作。
本周继续阅读《SeisInvNet》论文,并理解其逻辑结构。另外,在B站寻找视频了解了语义分割任务逻辑、深度学习一些概念等。
标题: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博客。
论文详细信息见:论文学习记录之SeisInvNet(Deep-Learning Inversion of Seismic Data)-CSDN博客。
给定地震数据:A-C表示不同来源的数据,a-c表示不同接收器记录的数据。同时,为了节约空间,数据不以其原始比例显示。
本文通过下列映射关系实现:
嵌入编码器中生成包含邻域信息、观测设置和全局上下文的嵌入向量,计算方式用下式表示:
首先提取同炮面(s相等)的地震道信息,接着进行CNN后获得领域信息,最后提起所在接收器的一道数据即可获得,流程图如下图所示。
将接收器r的位置和源位置s转换为one-hot编码。由于和,观测设置S(是维数的向量)
全局上下文的提取方式与上述邻域信息的提取类似。
给定的嵌入向量,首先使用具有几个全连接层(包括激活和范数运算)的MLPs将他们进一步压缩为大小为的向量,然后将每个向量重新调整为大小为的特征图。由于嵌入向量具有比原始地震数据小得多的维数,因此映射到特征图对于完全连接的层是可以接受的。本文设计了Generator生成器,输出与速度模型相同维度比的特征图。从这些特征图中,速度模型将被重建。因此,在训练之后,特征图的每个部分将表明速度模型的对应部分中的知识,特征图在空间上与速度模型对齐。另外,特征图来源于不同的源s和接收器r,每个特征图都有自己的敏感期。因此,会聚焦于速度模型的不同部分。
从下图中很容易看出,来自左接收器(#1 - 8)记录数据的特征图在左侧具有高激活,这意味着它可以提供更多的信息来重建速度模型的左侧部分。类似地,由中左接收器(# 9 - 16)、中右接收器(# 17 - 24)和右接收器(# 25 - 32)绘制的特征图分别具有用于重建速度模型的中左、中右和右部分的信息。但是,两种特征图对速度模型底部的响应都很小,这意味着很难从地震数据中推断出信息来重建底部,也意味着特征图的敏感区域不能覆盖整个速度模型。
特征图可视化。每个特征图都被放大以更好地说明。特征图显示了清晰的敏感区域(黄色区域)。
速度模型解码器收集所有的特征图,并从中解码知识,以通过具有多个卷积层(包括激活函数和范数操作)的CNNs的回归速度模型(它的大小为)。在训练过程中,速度模型解码器随机丢弃若干个特征图(dropout),使解码器在重建速度模型时不再只依赖某些特征图,提高了其鲁棒性,防止了过拟合。
SSIM定义为:
其中,x和y是两个对应的窗口,而和用于维持稳定的两个常数。SSIM的得分范围从0到1,当两个窗口中的信息完全相同时,SSIM得分达到最大值。
因此,除了最小化范数度量,在这项工作中,将同时最大化SSIM度量。具体来说,应用L2范式和多尺度结构相似性(MSSIM)来计算每个数据对的损失率:
其中,分别表示第i-th数据对的反演结果和地面真实情况,是以k为中心的、大小为r的两个对应窗口。本文在总R的不同尺度上进行SSIM,对于每一个尺度r都有一个权重来控制它的重要性。
数据集包含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个参数,可以进行端到端的训练,无需任何预处理和后处理。
为了方便,使用一系列希腊字母来表示SeisInvNet的每个变体和基线模型,()对应InversionNet,()对应具有L1损失的基线模型,()对应具有L1损失的SeisInvNet模型,()对应具有L2损失的基线模型,()对应具有L2损失的SeisInvNet模型,()对应具有L2和MSSIM损失的基线模型,()对应具有L2和MSSIM损失的SeisInvNet模型。
从测试数据集中随机选择所有方法的结果。从上到下的每一行分别展示了速度类型I和IV的例子。
不同方法在五个指标和两个数据集上的性能统计
本章节的学习参考该链接:1.深度学习要解决的问题_哔哩哔哩_bilibili。
本节主要记录深度学习的起源、定义、重要性、流程等。
深度学习是机器学习的一种,其基本结构是深度神经网络,解决如何提取特征的问题。
深度学习存在的问题:
机器学习的流程:
特征工程的作用:
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近邻不能用来图像分类?
从输入到输出的映射:每个特征x对应不同的权重参数W——>每个类别的得分
数学表示:,通常情况下,W称为权重参数—对结果起决定性影响的因素(在学习过程中不断进行调整,另外多组权重参数构成了决策边界),b称为偏执参数—起到微调作用(各自类别,各自微调)
损失函数(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。通过该项目了解了语义分割的流程。
地震勘探领域,时间序列数据指地震波在地下的传播速度、反射等信息,空间图像指地下结构的二维或三维成像。时间序列数据到空间图像的映射,是要将随时间变化的数据转化为空间域的表示,以揭示地下结构形态的过程。该过程中面临的挑战主要包括以下几点:
SSIM是一种衡量两幅图片相似度的指标。与PSNR一样,SSIM也经常用作图像质量的评价。
SSIM输入是两张图像,其中一张是未经压缩的无失真图像(即gouth truth),另一张是恢复出的图像。假设输入的两张图像分别是x和y,那么:
其中,,公式1是SSIM的数学定义:
,
,
,
其中,是亮度比较/对比(以平均灰度衡量,通过平均所有像素的值得到),是对比度比较(通过灰度标准差来衡量),是结构比较(结构对比比较的是经过归一化后与的比较)。分别代表x和y的平均值,分别代表x和y的标准差,代表x和y的协方差,而分别为常数,避免分母为0带来的系统错误。
注意:在实际工程计算中,一般设定,以及,可以将SSIM简化为下:
总结:
学习参考:SSIM (Structure Similarity Index Measure) 结构衡量指标+代码 - 知乎 (zhihu.com);
MSSIM-平均结构相似性是SSIM的实践常用方法。当需要衡量一张图片的质量,经常使用的是一个一个窗口计算SSIM然后求平均。
答:现在地震反演中都使用的监督学习,已知正确答案。
2. 目前有一部分网络对Unet进行改进,例如Unet++,这些可以在地震反演中尝试吗它是一种基于深度监督的编码器-解码器网络结构,它通过引入多级特征融合和跳跃连接的方式提高了语义分割和实例分割任务的准确性和细节保留能力。
多级特征融合:Unet++通过在解码器中加入更多的融合模块,使得网络可以在不同层次上进行多级特征融合,从而更好地提取图像的语义信息。
跳跃连接:Unet++中的跳跃连接允许从编码器到解码器直接传递信息,以帮助保留更多的细节信息。具体而言,Unet++的解码器部分会根据不同层次的特征融合结果,将相应的特征图与编码器对应层次的特征图进行拼接,形成跳跃连接。这种机制可以有效地将低级别的细节信息传递到高级别语义分割结果中,提高分割的精度和边界的锐利度。
在《Physics-Guided Data-Driven Seismic Inversion Recent progress and future opportunities in full-waveform inversion》这篇综述中还提到了一部分数据驱动的端到端重建方法: