视频教你用CNN、UNet神经网络模型识别地震断层(附程序)

2022-11-23  本文已影响0人  科技州与数据州

各位同学,大家好。前期科技州推出了课程《深度学习断层实战(二)——CNN神经网络模型识别断层》和《深度学习断层实战(三)——UNet神经网络模型建立》受到大家广泛关注,也提出了一些学习问题,主要集中在环境配置和程序运行方面。今天我们就通过视频讲解,全流程给大家演示运行程序的方法。

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 程序运行

1.程序结构

本次课程运行的结构如图所示:

首先是两个文件夹。一是dataset文件夹,放置了数据集,包括训练数据和验证数据,参考前期生成断层数据的课程。二是model文件夹,包括了call_back,weights等文件夹,放置了训练的模型和配套文件。

其次有几个函数程序。一是CNN3D.py和UNET3D.py,这是我们构造的CNN自编码神经网络和UNet神经网络模型。二是metrics.py,这是构造了一个cross_entropy_balanced的损失函数,用于优化神经网络对断层的识别。三是datagen.py,这是通过提取数据集,供神经网络训练。

最后就是我们的主程序。分别是faultSeg-cnn.py和faultSeg-unet.py,实现了CNN网络和unet网络的全过程训练。

2.程序运行

本次程序运行环境为:

Python 3.8

Anaconda 3 Spyder 4.1.5

接下来就详细讲解程序运行。

(1)faultSeg-cnn.py

为了讲解CNN神经网络对断层数据训练详细过程,我们编写了程序。

一是参数的初始化,这里定义了地震体数据的初始参数和存放文件夹位置。

二是进行神经网络模型训练。包括加载网络模型,训练网络模型,保存网络模型。

以上部分我们先运行程序,完成神经网络模型的训练和保存。

三是查看模型效果。我们导入训练好的模型,可以看到模型中卷积层学习到的特征。至于对断层数据的识别和查看,大家可以学习《教你用Python自动识别地震断层》这节课程。

(2)faultSeg-unet.py

这段程序讲解了Unet神经网络对断层数据训练的详细过程。

程序结构与CNN类似。不过网络结构差别比较大,训练的时间更长,断层识别的效果更好。

运行方式同样是先运行网络训练部分程序,完成神经网络模型的训练和保存。然后再加载模型来查看学习的特征。

通过以上的讲解,大家就可以轻松自己使用CNN和UNET神经网络进行断层数据训练,结合后续断层识别的课程,相信对大家智能断层识别的研究有比较大的帮助。如果大家对程序感兴趣,请联系我交流讨论。

我是科技州,用心分享智能地震勘探干货,带你一同进步。再见。

相关阅读:

智能时代已到 助你勇攀储层勘探高峰

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

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

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

上一篇下一篇

猜你喜欢

热点阅读