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

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

作者: 科技州与数据州 | 来源:发表于2022-11-23 21:03 被阅读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开启地震深度学习科研之路

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/tdftfdtx.html