美文网首页
深度学习地震数据去噪理论讲解(附程序)

深度学习地震数据去噪理论讲解(附程序)

作者: 科技州与数据州 | 来源:发表于2022-05-20 15:38 被阅读0次

    以下文章来源于作者夜剑听雨。

    一、深度学习在地震数据去噪中的研究方向

    人工智能是指让机器获得像人类一样的智能机制的技术,这一概念最早出现在 1956 年召开的达特茅斯会议上。这是一项极具挑战性的任务,人类目前尚无法对人脑的工作机制有全面科学的认知,希望能制造达到人脑水平的智能机器无疑是难于上青天。即使如此,在某个方面呈现出类似、接近甚至超越人类智能水平的机器被证明是可行的(邱锡鹏,2020)。

    CNN具有自动学习高度复杂的非线性特征的能力,将其应用于叠前地震数据随机噪声的压制中,通过对叠前地震数据中随机噪声特征的自动学习,实现自动且高效的随机噪声分离(李海山等,2020)。

    面波作为很强的干扰波出现在地震勘探中,大大降低了地震记录的分辨率和信噪比。深度学习作为一种数据驱动类方法, 能够从大量数据样本中学习得到有效信号与噪声的区别, 自适应建立深度神经网络来压制噪声。

    大多数传统三维地震数据重建方法对噪声较为敏感,且不能应对规则缺失的数据。相比于传统的方法,基于深度学习的方法可以克服传统方法对数据先验信息的要求,使得在对地震数据的去噪和重建过程中只需要考虑数据的分布,大大降低了重建过程中的复杂度(王峰,2020)。

    深度学习技术存在较多的不可解释性,更强调工程实用性需要大量实践经验,数据科学家更像是工程师,每个环节的处理经验对训练效果具有显著影响。

    二、深度学习在地震信号处理中的研究流程

    正演地震记录:通过正演软件得到炮集记录以及结合部分实际的地震记录。

    地震数据切片:对无噪声数据和含噪声采用相同的方式,在炮集记录的高、宽方向滑动一定的步长,得到同一个位置的特征和标签。

    假设无噪声数据为x ,每个像素都有一个噪声偏量v,得到的含噪数据为y。

    去噪任务的目的,就是根据噪声图像y=x+v ,恢复出干净图像y的过程。

    DnCNN在VGG的基础上进行修改,网络结构是(卷积、BN、ReLU)级联的结构,模型内部并不像ResNet一样存在跳远连接,而是在网络的输出使用残差学习。残差学习策略是指在网络中输入含有噪声的观测图片, 通过网络的隐藏层隐式地移除干净图片, 以噪声数据作为输出(于四伟等,2021)。

    第1层卷积层(Convolution)的卷积核大小设置为 3×3,卷积的步长(Strides)设置为 1,卷积核的数量为 64,激活函数采用ReLu。第2~16层在每次卷积方式同第一层一样,增加了批归一化(Batchnormalization),用于加快网络的收敛速度使特征图的大小和输入相等,避免因为卷积而损失特征,然后再用激活函数ReLu。最后一层卷积层的卷积核大小也设置为 3*3,卷积核的数量为 1(合并通道数),此时的结果是信号,最后用输入数据减去此时结果,就得到了噪声(残差学习)。

    搭建网络:利用Pytorch或TensorFlow搭建深度学习框架。

    训练网络:训练过时查看训练集合验证集损失函数的最小值,以及测试集在评估指标上的最大值。

    基于模块化的设计思路,将深度学习研究变成易操作的流水作业。

    三、基于DnCNN的地震数据去噪实验

    1、本工程一共有data、model、utils三个文件夹。

    2、data/sgy_data中test.sgy是一个30炮干净的地震记录,运行utils/sgy-nyp.py这个代码,

    可以将这个sgy文件分割成单炮的地震记录,并且去除道头,只保留了地震道信息,同时对30炮地震记录加入随机噪声。无噪声数据存储在clean文件夹中,含噪声数据存储在noise文件夹中。然后运行utils/GetPatches.py代码,将含噪声和干净的炮集记录,切分为一些列64*64大小的patches,并且使用了数据增强。含噪声数据patches作为特征放在feature文件中,干净数据patches作为标签放在label文件中,这样就完成了数据集的制作。

    3、model中的dncnn是网络架构文件,这里的DNCNN输出的是残差。运model/train.py文件,通过utils/dataset.py自定义加载数据集,并且按照8:1:1划分数据集,没训练一次就会,验证,并测试一次。训练和验证用的loss会保存到loss_sets.txt文件中,测试用的评估指标是信噪比,结果将保存到snr_sets.txt文件中,训练时间.txt记录的是训练用的时间。

    4、 utils/SignalProcess中有信噪比,傅里叶分析,f-k分析,各种滤波方法,用于验证网络结果好坏。

    5、具体内容请查看代码注释。

    四、总结

    代码模块化的意义在于,让后面的研究可以专注于修改神经网络模型(调结构或换网络),不用花费大量时间在其他的基础工作上,方便后期的研究和代码的维护。

    附录

    [1] 邱锡鹏. 神经网络与深度学习[M]. 北京: 机械工业出版, 2020.

    [2]李海山, 陈德武, 吴杰,等. 叠前随机噪声深度残差网络压制方法[J]. 石油地球物理勘探, 2020(3):13.

    [3]于四伟, 杨午阳, 李海山,等. 基于深度学习的地震散射面波智能压制方法[J]. 科学通报, 2021, 66(18):12.

    [4]王峰. 基于深度学习的地震数据去噪和重建方法的研究[D]. 浙江大学.

    [5] Kai Z , Zuo W , Chen Y , et al. Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising[J]. IEEE Transactions on Image Processing, 2016, 26(7):3142-3155.

    如需下载配套程序数据和PPT,请在联系我获取。

    相关阅读:

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

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

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

    相关文章

      网友评论

          本文标题:深度学习地震数据去噪理论讲解(附程序)

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