深度学习断层实战(一)——断层标签数据自动生成(附程序)
深度学习断层实战(一)——断层标签数据自动生成
原创2021-11-12 20:51·科技州
通过深度神经网络识别断层,是当今断层识别领域最热门的方向。深度学习以数据为驱动,在数据特征识别和关系映射等方面体现出了非常强大的能力。
深度学习算法通过寻找隐藏在数据内部间的规律,并且能够高效率地找到输入数据与目标输出之间的映射关系,这使得深度学习算法非常适合在多种地震属性组合的条件下提取关键信息。因此,利用深度学习方法进行断层识别能够打破传统识别方法的局限性,成为了智能化地震解释的研究热点和重点之一。
一、机器生成断层标签方法
为了实现深度神经网络模型训练,需要提前准备大量的训练数据和标签。对于地震断层识别,常常需要在三维的数据体中进行标识。
这类工作非常的耗时耗力,而且主观性很强,容易出现错误标记和漏标记。因此,靠人工来准备三维地震断层训练数据是不太科学的。
为了提高断层识别模型的性能,我们研究了一套机器生成训练数据和断层标签的方法。主要操作流程如下:
1.生成一个基本的三维数据反射率模型,如下图:
2.在模型中增加一些折叠结构,如下图:
3.在模型中增加平面断层,形成褶皱。
4.使用地震波与反射率模型进行卷积,得到了地震数据模型。
5.增加随机噪声,让模型更加真实,提升了模型了鲁棒性。像这样的:
二、实战案例操作
接下来,我们通过Python研发了一套程序来实现自动生成三维地震数据和断层标签。
为了让程序高效运行,使用了CuPy。CuPy是NumPy兼容多维数组在CUDA上的实现的开源矩阵库,使用Python提供的GPU加速计算,实现了一些操作超过100倍的加速。
整体程序主要包括了八个部分。
1.创建一维反射模型
这里建立了随机的数值,使用tile函数建立了一维的反射模型。
2.应用高斯形变
这里使用高斯函数,实现了在模型中增加了折叠的结构。
3.应用平面变形
通过这段程序实现了整体平面的倾斜,并且使用了ElementwiseKernel函数实现了在GPU中并行的计算。
4.添加多形态断层
以上程序可以添加不同的形态的断层:包括断层的类型、位置、倾角都可以选择,实现了断层形态的多样化。同时在增加断层的时候,也就确定了断层标签的位置。
5.小波卷积反射模型
通过雷克子波与反射模型进行卷积运算,形成了更加近似于地震的数据模型。
6.添加一些随机噪声
程序随机添加了一些噪声,模拟了真实的干扰环境。
7.提取大小为128x128x128的数据体中心部分
程序提取了128*128*128范围的数据,减小了数据尺寸。
8.标准化数据振幅
程序切割了-1到1之间范围的数据,增强了剖面显示效果。效果是这样的:
最后通过程序可以展示剖面和对应断层标签。
以上就给大家讲解了机器生成三维断层数据及断层标签的全过程。如果大家对程序感兴趣,请联系我交流讨论。下节课再见。
扩展阅读: