各位同学,大家好。前期科技州推出的《深度学习断层实战(一)——断层标签数据自动生成》课程受到大家广泛关注,也提出了一些学习问题,主要集中在环境配置和程序运行方面。今天我们就通过视频讲解,全流程给大家演示运行程序的方法。
01 环境的配置
1.基本程序环境
我们的课程主要都是在Python环境下运行的,所以大家需要配置Python相关运行环境。我们常用Anacoda 的Spider作为集成编辑器。这款软件既是免费软件,也具有较好的调试功能。
另外我们的课程涉及深度学习的内容比较多,我们会用到tensorflow和keras,这也请大家自行安装。
以下是我们推荐的程序和引用库版本。
Python 3.8
keras 2.3.1
tensorflow 2.2.0 或 tensorflow-gpu 2.2.0
另外特别提示:
强烈建议大家配置具有独立NVIDIA显卡的运行环境,并装好CUDA驱动和Python的tensorflow-gpu版本,充分使用GPU加速计算。
后续我们课程中有关深度学习的处理,特别是断层和储层的处理,使用GPU加速比CPU会快很多个数量级。
2.本课程用到的引用库
这本次课程中,我们还会用到几个引用库。
一是cupy库,主要功能是NumPy兼容多维数组在CUDA上的实现。
简单介绍一下CuPy:
CuPy是一个开源矩阵库,使用NVIDIA CUDA加速。CuPy使用Python提供GPU加速计算。CUPY使用CUDA相关库,包括 CuBLAS、CUDNN、Curand、CuoSver、CuPaSeSE、Cufft和NCCL,以充分利用GPU架构。CuPy加速了一些超过100倍的操作。
安装这个引用库的前提是必须要安装CUDA驱动,只能在GPU环境下运行。使用这个库的原因是三维地震数据生成计算量巨大,需要GPU来加速。因此安装cupy库需要查看相关文档,安装对应的CUDA驱动环境。
有如下的对应关系:
二是bruges库,主要功能是用于地震反射数据的建模和后处理,包含几个常见的地球物理功能。
安装方法
pip install bruges
三是matplotlib库,主要功能是用于绘制各种图像的模块,用于数据的分析和展示。
安装方法
pip install matplotlib
四是scipy库,这是一个专用于科学计算中常见问题的工具箱。其不同的子模块对应不同的应用,如插值、积分、优化、图像处理、统计、特殊函数等。在课程中可以用来生成不同的地震结构。
安装方法
pip install scipy
本次课程这几个引用库的推荐版本是:
cupy-cuda102 9.1.0
bruges 0.4.2
matplotlib 3.3.2
scipy 1.4.1
02 程序运行
本次程序运行环境为:
Python 3.8
Anaconda 3 Spyder 4.1.5
接下来就详细讲解程序运行。
1. Fault_Train.py
为了讲解断层数据构造的详细过程,我们编写了Fault_Train.py程序,将原来在jupyter notebook上面运行的Fault_Detection.ipynb程序复制了过来。这个程序主要是演示了仿真三维地震断层数据和断层标签数据是怎样逐步生成的,现在我们就来详细讲解程序运行的过程。
一是参数的初始化,这里定义了构造地震体数据的初始参数。比如构造的二维地震剖面尺寸是200*200,最终生成的地震体三维尺寸是128*128*128。
二是构建了三维反射模型。通过随机的数值,使用tile函数建立了三维的反射模型。
三是应用高斯形变。这里使用高斯函数,实现了在模型中增加了折叠的结构。
四是应用平面变形。通过这段程序实现了整体平面的倾斜。
五是添加线性断层。通过以上程序添加了不同的形态的断层:包括断层的类型、位置、倾角都可以选择,实现了断层形态的多样化。同时在增加断层的时候,也确定了断层标签的位置,生成了断层标签数据。
六是通过小波卷积反射模型。通过雷克子波与反射模型进行卷积运算,形成了更加近似于地震的数据模型。
七是添加一些随机噪声。通过随机添加了一些噪声,模拟了真实的干扰环境。
八是提取仿真数据体和断层标签。提取大小为128x128x128的中心部分数据,减小了数据体尺寸。
九是标准化数据振幅。对地震数据进行了标准化处理,并将超出-1和1范围的数据强制赋值为-1和1,增强了剖面显示效果。
十是显示生成的断层剖面和断层标签。显示了x、y、z三个方向的地震剖面和断层标签。
最后这段是加载保存好的断层和标签,并显示图像。这部分在下一个程序讲解。
2. Fault_Train_auto.py
上一个程序主要是为了演示地震断层数据生成的过程,程序执行起来比较繁琐。在实际工程中,我们希望仿真数据按照我们的需要自动生成、保存,方便后续使用。因此,我们编写了Fault_Train_auto.py程序。这个程序会调用2个函数程序,一是datagen.py,封装了地震断层数据生成的程序;二是utility,封装了地震断层显示的程序。
Fault_Train_auto.py的运行方法简洁明了。
一是配置初始参数。
patch_size,num_data_tr,num_data_val参数配置表示我们生成仿真数据体三维尺寸为128,训练集数据生成200个,验证集数据生成20个。
后面tr_path,vl_path等参数分别指定了训练集、验证集以及其中地震数据和标签数据的文件夹名字和路径。
二是生成仿真数据。同样调用SyntheticSeisGen函数,就随机生成了训练集和验证集数据,并将数据存储到了制定的位置。这一步耗费的时间比较久,需要耐心等待。
三是查看地震图像和断层图像。我们可以随意选择其中的地震数据和断层标签,从x、y、z三个方向查看二维剖面效果。
通过以上的讲解,大家就可以轻松自己生成三维的地震断层数据,为后续的智能断层识别打下基础。如果大家对程序感兴趣,请联系我获取。
我是科技州,用心分享智能地震勘探干货,带你一同进步。再见。
相关阅读:
智能时代已到 助你勇攀储层勘探高峰
如何在地震勘探研究更上一层楼?带你一起深度学习识别断层
怎样轻松入门地震勘探研究:先从地震数据处理开始
深度学习地震去噪实战:教你如何从0开启地震深度学习科研之路