实际资料断层识别实战—教你用Python自动识别地震断层(附程序)

在前面的课程中,我们讲解了通过构造断层标签数据来训练神经网络模型。但在实际应用中,当我们拿到一个目标工区数据体资料,怎样自动进行断层识别呢?今天给大家进行一次全流程的讲解。

01 实验数据情况

这次我们使用一个模仿真实地震工区程度比较高的合成三维数据,来讲解拿到一个真实地震资料数据怎样来做断层自动识别。地震三维图像如图所示。

这是一个尺寸为(141,311,251)的三维数据体,有比较明显的断层结构,可以较好体现程序的断层识别能力。

02 断层自动识别

1.训练模型导入

我们使用前面训练好的UNet神经网络模型,具体训练方法见课程《深度学习断层实战(三)——UNet神经网络模型建立》。

从上面导入模型的代码来看,导入模型需要导入json文件和h5模型文件。

2.预测地震数据体

首先是读取地震数据,如图所示。

这里使用了obspy库的_read_segy方法来读取了三维地震数据。

接下来是地震数据的预测,主要代码如图所示。

代码的主要原理是先将整个数据体切分为模型的可以处理的大小(这里是128*128*128),然后使用模型对每个数据分块进行预测,最后再将模型预测结果进行重构组装为整个工区的预测结果。预测的结果以二进制的格式保存到了磁盘。

这里要注意:

对于数据体预测的运算量很大,对于普通的电脑配置(如CPU运行模型,内存8G以内),最好每次处理400*400*400以下的数据体。否则很容易内存资源耗尽,导致死机。

当然,如果你是GPU运行模型,或是内存资源比较大,可以一次处理比较大的数据体。

03 断层结果展示

断层识别后,我们就需要观察处理的效果了。

1.二维剖面断层效果显示

我们如果要观察二维剖面与对应的断层对比图。比如我们想看左边是剖面,右边是对应断层的效果,如图所示。

主要程序是这样写的:

这里展示了xiline为29的地震剖面效果。如果赋值三维数组的其它位置,可以显示xline, tline等不同维度的剖面效果。

我们将断层线设置为了红色,更容易观察。

如果希望观察剖面和断层叠加的图像,如图所示。

可以这样写程序:

其中alpha参数设置透明度,实现了地震剖面和断层的叠加。

2.三维数据体断层效果显示

如果我们想从三维视野来整体观察断层的识别结果,可以使用mayavi来绘制图形,如图所示。

主要原理和程序在前面课程《深度学习断层实战(五)——预测结果定性分析》有详细的讲解,大家可以移步过去学习。

从上面二维和三维的断层识别效果来看,UNet模型对比较主要断层识别效果还是比较好的,大的断层结构都能识别出来。

不过由于这个地震资料数据与实际情况相似,不是所有的断层结构都是非常规律的,识别出来的断层结果比仿真数据要差一些。

从图中可以看到,不管是断层的连续性还、准确性还是断层线条精细程度,都没有识别简单仿真数据那么理想。当然这里的模型结构和显示图像的参数都有进一步优化的空间,需要大家深入的研究和探索。

今天的课程就到这里。这节课讲解了非常实用的内容,教会大家使用真实数据做断层识别的整个流程。相信不管是做断层算法研究,还是做资料解释,都能给大家带来比较大的帮助。如果对文中的程序和数据感兴趣,欢迎联系我获取。再见。

相关阅读:

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

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

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

你可能感兴趣的:(实际资料断层识别实战—教你用Python自动识别地震断层(附程序))