智能地震相预测:教你用深度学习进行工区地震相预测(附程序)

地震相是储层表征的方法之一,通过对目标区域有利层序内地震相的研究,可以确定储层的沉积相及横向的分布范围,从而为储层的综合预测奠定基础。

01 地震相介绍

地震相是指沉积相在地震资料上的响应,地震相一词来源于沉积相,可以理解为沉积相在地震剖面上表现的总和。地震相包括在地震剖面上的响应,在水平切片或层振幅平面图上的响应,在反演速度剖面上或正演模型上的响应等。地震相分析的方法就是识别每个层序内独特的地震反射波组特征及其形态组合,并将其赋予一定的地质含义,进而进行沉积相的解释,这一过程称为地震相分析。

地震相分类是储层表征的步骤之一,三维地震和地震属性等油气储层表征技术的进步丰富了专家对地下的描述。然而,对这一巨大数据量的分析却成了一项复杂的任务,人工分析已经不能适应工程上的需要。本文后续将带领大家探索使用深度学习在地震相分类中的应用。

02 项目实战

1.实验数据介绍

本次实战项目使用荷兰F3的数据。荷兰北海区域富含碳氢化合物沉积物,北海大陆架位于荷兰海岸附近,被划分为不同的地理区域,用字母表的不同字母来描述;在这些区域内是标有数字的较小区域。其中一个区域是尺寸为16km x 24km的矩形,称为F3区块,见图。

根据区块的层位和断层解释情况,对该区块进行了三维建模,最终的3D地质模型如图所示:

2.深度学习实现地震相预测

数据构建:

我们用来训练和测试网络模型的最终地震模型并不是F3的全部区域。为了满足网络运算,我们还从目标训练数据切割小块数据进行训练。对于非常大的地震体数据,这种方法比使用整个剖面进行训练更可行。在训练时,从训练集的inlines和crosslines线中随机抽取地震数据块及其相关标签。在测试阶段,模型在inlines和crosslines方向上对重叠的小块数据进行采样,并对结果进行平均,以生成inlines或crosslines的二维标记测试集。

结合工区的整体数据存在缺失等情况,我们使用的数据在inline100至701、crossline300至1201之间,以及1005至1877之间深度的范围,。Inline 300和crossline 1000将整个区域分为四个部分。其中西北区域用于训练,而西南区域构成测试集1。

整个地震相分为了6类:

生成训练集

训练集数据包括:train_seismic.npy和train_seismic.npy,分别为地震数据体和对应的地震相分类标签。

在机器学习的应用程序中,仔细选择训练集和测试集都是至关重要的,在地震数据中尤其如此。因为相邻的剖面高度相关,随机选择训练和测试区域将实现更好的测试结果,而这些结果并不代表测试模型的实际泛化性能。因此,尽可能减少训练集和测试集之间的相关性非常重要。确保训练集和测试集对数据集中的所有类都有足够的表示也很重要。

本文随机选择7个测井的数据来生成训练集。这样相当于模拟在工区打下了7口测试井,然后搞清楚测井的地震相情况。

选取坐标点包括:

通过将数据切割为32×32的小块和标签来生成训练集数据。这里为了适应模型的训练,使用小块的尺寸是32×32。

上面程序的X_train和Y_train就是供模拟训练的数据集。

生成测试集

同样的原理,使用测试集1的数据test1_seismic.npy和test1_labels.npy来生成测试集数据。不过如果测试数据区域较大,生成的测试集数据量将很大,普通计算资源无法承受。因此我们切割了部分区域的测试集数据。

训练/测试集数据分离

在大多数情况下,准备的训练数据分类不会平衡,会影响模型的泛化性。

比如本实验的训练数据分类情况如下:

从统计结果来看,分类的样本数量很不均匀。

为了提升训练数据均衡性,可以使用随机采样的方法。

通过上面程序随机采用后,训练数据分类就成了下面的情况:

这样就均衡了很多。

然后按照20%的比例,分割训练数据和验证数据。

模型训练

模型参数:

本次使用的神经网络模型如图所示。这里主要是用的二维卷积神经网络,中间激活函数使用relu,使用2×2的最大池化层来提取特征。使用Dropout(0.2)来降低过拟合风险。对于多分类问题,最后一层使用softmax来激活,loss函数使用categorical_crossentropy,优化器使用rmsprop。

预设使用30个迭代来训练数据,并且设置连续3次验证Loss值低于0.01时退出训练。这是为了防止过拟合发生。在实际训练过程中,到14个迭代就退出训练了。训练曲线如下:

测试验证

为了测试模型的预测能力。我们把训练好的模型用于测试集地震数据的地震相预测,再与真实标签数据进行对比。

训练集数据用的是:test1_seismic.npy和test1_labels.npy,这是与训练数据不同的另外一个区域。

首先看看预测数据集的分类情况。

可以看到预测数据集的分类是严重不平衡的,这给模型预测带来了较大的挑战。

这里评价模型优劣的量化参数可以使用平均准确率、查准率、召回率、F1-Score等进行计算。

本实验的量化参数结果如下:

从结果来看,本文模型的准确率达到了近90%,说明整体预测能力比较好。但是其它几个参数较低,说明在细节的预测能力上还有改进空间。当然,这个结果与预测数据集不均衡性有较大关系。

除了上述参数,还可以使用混淆矩阵来查看效果,结果如下:

从混淆矩阵结果来看,Lower North的预测准确性较高,这是因为这个类别数量最多。

最后,通过图形化来直观看看模型对地震剖面预测的效果图。

从上图来看,最左边是地震剖面图,中间是地震相的标签,右边是预测结果。从整体来看,预测的分类结果与标签数据大致吻合,大部分地震相边界也比较接近。不过也出现了较多的杂乱数据,这些需要在后续进行优化。

全工区地震相预测

最后,可以将训练好的模型对整个工区地震数据进行地震相的预测。这部操作和前面测试验证相似。

全工区的预测主要流程包括:一是将地震体数据抽样为网络模型可以预测的小块数据。二是使用网络模型对小块数据进行预测。三是对预测结果进行三维重构,就形成了与原始地震体数据对应的地震相预测标签。

今天的课程就到这里。这节课程通过一个真实地震项目的讲解,给大家完整呈现了对地震工区数据进行地震相分类预测的全过程。如果对程序和数据感兴趣,请联系我获取,再见。

相关阅读:

如何在地震勘探研究更上一层楼?带你一起深度学习识别断层

怎样轻松入门地震勘探研究:先从地震数据处理开始

深度学习地震去噪实战:教你如何从0开启地震深度学习科研之路

你可能感兴趣的:(智能地震相预测:教你用深度学习进行工区地震相预测(附程序))