常德宽 雍学善 王一惠 杨午阳 李海山 张广智
(①中国石油大学(华东),山东青岛 266555;②中国石油勘探开发研究院西北分院,甘肃兰州 730020)
地震数据解释过程中一项重要的任务是断层解释,因为断层可以成为油气运移的主要通道,也可以侧向封堵而形成断块油气藏。因此,准确识别断层对油气的勘探开发具有重要意义。断层在地震剖面上表现为同相轴低连续或高度不连续性。传统的断层解释多由人机交互方式完成,效率低,人为因素可能导致结果不确定性大,加大了油气勘探开发的成本和风险。
为了提高断层解释的效率,研究人员提出了很多方法。Bahorich等[1]提出互相关方法,对每道地震数据及其邻域的地震道进行归一化互相关以识别断层。然而,该方法不适用于低信噪比的地震数据。Marfurt等[2]和Hale[3]将相似性算法用于检测地震数据中的不连续性。Marfurt等[4]提出特征结构相干算法,用于构造具有特征分解矩阵的协方差矩阵和特征分解矩阵。这些算法对断层识别的精度均很高,但对于低信噪比条件下的地震数据则需要更多的计算时间。Pedersen等[5]首次将蚂蚁追踪方法用于提取小断层,且合并形成较大的断层面。Aurnhammer等[6]提出遗传算法用于自动化地震图像中的断层识别。印兴耀等[7]提出使用离心窗倾角扫描的曲率属性识别小断层。陈雷等[8]利用相似性传播聚类与主成分分析进行断层识别。赵凤全等[9]将构造导向滤波用于断裂识别,取得了较好的应用效果。Wu等[10]提出3D图像处理方法,自动计算与断层相邻的图像样本的断层面和倾斜滑动矢量。上述方法可用于断层识别,但基于经验的参数设置可影响断层识别结果的准确性。
近年来,深度学习在多个领域取得了显著的成就,特别是在分类、特征提取等方面具有突出的优势。在地震勘探领域,研究人员探索了深度学习方法在地震数据处理和解释中的应用。Srisutthiyakorn[11]将深度学习方法用于预测渗透率。Lewis等[12]应用深度学习方法,利用FWI反演模型的地震图像建立地质模型。Huang等[13]应用深度学习方法,利用地震属性分析地质特征。Serfaty等[14]通过主成分分析和局部角度域深度学习分离地震波场。Chang等[15-16]将生成对抗网络用于地震数据插值。Wang等[17]将深度残余网络用于地震数据插值。王钰清等[18]利用卷积神经网络(Convolutional Neural Network,CNN)压制地震随机噪声,通过数据增广的方式生成标签数据,以提高去噪模型的泛化能力。张玉玺等[19]利用深度学习进行多属性盐丘自动识别。李海山等[20]利用深度残差网络压制地震数据噪声。Xiong等[21]和Wu等[22]应用深度学习方法进行断层智能化识别,取得了初步效果。Xiong等[21]使用相干体作为断层标签数据,训练深度学习模型,预测结果与应用相干体技术预测断层结果相似,精度并未明显提高。Wu等[22]使用正演合成数据制作标签数据集,用于深度学习模型训练,在构造简单的实际工区数据断层识别中取得了较好效果,但在复杂构造工区数据的断层识别中存在明显假象。Chang等[23]提出利用U-Net网络进行断层识别,利用合成数据和实际数据一起训练深度学习模型,试图解决智能断层识别网络的泛化能力弱的问题。
为了提高地震数据断层识别的精度和效率,本文结合U-Net架构和深度残差网络(ResNet),构建智能地震数据断层识别网络(SeisFault-Net)。U-Net架构适用于数据特征检测和提取,ResNet网络结构有助于训练深度深层网络,因此利用两种网络架构的优势可有效提高深层网络训练收敛速度和断层识别精度。同时,SeisFault-Net利用GPU进行数据处理,因此可大幅提高断层检测效率。
ResNet是一种用于训练更深层网络的框架[20],通过在卷积神经网络块(图1a)上添加一个跳跃连接(Skip Connection),将输入向量和卷积层的输出融合在一起构建残差学习块(图1b)。利用图1a所示的卷积神经网络块构建深层网络时,层数的增加会导致深层存在网络梯度消失或者爆炸现象,使深度网络模型难以有效训练,出现模型退化问题。He等[24]提出的残差神经网络块(图1b)用于解决深层网络模型退化问题,该网络结构基于恒等映射的思想,即每堆叠一层网络,堆叠前的输入与堆叠后的输出相同,使新增网络层只需学习一个残差函数即可。
图1 卷积神经网络块(a)和残差神经网络块(b)x为输入地震数据;F(x)为残差函数;ReLU为激活函数
深度残差网络由堆叠的多个残差学习块组成,每个残差学习块的残差函数为
I(xl)=xl+F(xl,θl)
(1)
xl+1=f[I(xl)]
(2)
式中:I(xl) 为同等映射函数;xl和xl+1表示第l个残差学习块的输入和输出,l∈N,N为网络堆叠层数;F是残差函数;θl表示第l个残差学习块的卷积核;激活函数f使用的是整流线性单元函数ReLU[25]。
同等映射函数允许将较深层中的梯度值快速传递到较浅层,这有效解决了网络训练过程中由于链式求导法则导致的梯度爆炸或梯度消失的问题,从而提高网络训练过程的稳定性和效率。
U-Net架构最初由Ronneberger等[26]提出并用于生物医学图像的目标分割。U-Net架构具有多尺度、多层次的特征,能有效识别、定位目标的边界。U-Net由编码子网络和解码子网络构成。编码子网络对数据进行编码学习,池化层和上采样层将数据流放大、缩小到不同尺度,实现对数据降维或升维计算。解码子网络学习在不同尺度下的数据流中的特性信息,使U-Net架构可以进行端到端训练,实现数据的语义分割。在编码子网络和解码子网络之间利用跳跃连接将多层信息进行融合,可提高目标特征识别的精度。
鉴于断层识别需要准确刻画边界和位置,本文将U-Net网络和ResNet结合构建用于地震数据断层识别的SeisFault-Net。SeisFault-Net将ResNet训练深层网络的优势与U-Net架构的特征分割相结合,实现对地震数据断层的高精度识别。
SeisFault-Net如图2所示,设计为对称结构,由三类层构成,包括ResNet块、池化层(Pooling)和上采样层(Up-Sampling)。其中,ResNet块由3个卷积层和1个跳跃连接构成,第一、第二、第三层卷积核分别为1×1、3×3、1×1,共11个块。利用两个1×1的卷积层代替3×3的卷积层降低整个网络模型的学习参数量,在不影响残差学习块的性能的同时,对原始3×3卷积核网络的冗余参数进行压缩。池化层为步长2×2的最大池化,共4层,用于地震数据降维,提高后续的卷积层对地震数据的感受野。上采样层是卷积核为2×2、步长为1×1的反卷积层,共4层。使用反卷积层可以从映射层中学习重建的特征,使上采样的数据能够更准确地重建断层特征。
图2 SeisFault-Net网络(a)地震数据;(b) SeisFault-Net网络结构;(c)标签数据
SeisFault-Net可表示为
(3)
对SeisFault-Net网络模型进行优化的损失函数为二分类的交叉熵函数,即
(4)
为了提高SeisFault-Net的泛化能力,本文共选取7个工区的地震数据(图3a),将地震数据分割为256×256的数据块。其中,5个工区的数据用于制作训练数据集和验证数据集,共有800个地震数据块; 2个工区的地震数据用于测试数据集,共有150个地震数据块。实际地震数据集中包含线性的和非线性的断层类型,标注断层可获得标签数据集(图3b)。
图3 训练数据集(a)地震数据;(b)标签数据
首先,利用训练地震数据集训练SeisFault-Net,使用动态学习率,即
(5)
其中
式中:I0=0.01为初始学习率;r为衰减系数;s为衰减步长;g为全局步长;k为训练次数;int(·)表示取整。随着训练次数的增加,学习率降低,这有助于提高模型收敛速度,降低模型训练时间。图4a为训练实际数据集的损失函数曲线。由图可见,经过100次训练后,损失函数值基本稳定。图4b为预测断层准确率曲线,验证集的断层预测准确率在80次训练后基本稳定在0.92附近。
图4 SeisFault-Net训练曲线(a)损失函数曲线;(b)断层预测准确率
利用验证数据集和测试数据集测试训练后Seis-Fault-Net网络模型的断层预测性能。图5为验证集数据断层识别结果。由图可见,经过训练后的SeisFault-Net在验证数据集上断层预测准确,与标签数据一致。
图5 SeisFault-Net验证数据集断层识别结果(a)地震数据;(b)断层标签数据;(c)SeisFault-Net预测断层
测试数据集断层识别结果如图6所示。训练后的SeisFault-Net在测试数据上断层预测效果较好,准确刻画了断层位置和边界。这说明SeisFault-Net具备应用于实际断层识别的泛化能力。
图6 SeisFault-Net测试数据集断层识别结果(a)地震数据;(b)SeisFault-Net预测断层
利用测试数据进行断层识别准确率和效率测试。图7为SeisFault-Net方法和相干体技术断层识别效果对比,可以看到SeisFault-Net方法明显优于相干算法,且计算效率为相干算法的18倍。
图7 SeisFault-Net与相干算法断层识别效果对比(a)地震数据;(b)相干算法;(c)SeisFault-Net方法
使用实际数据体测试SeisFault-Net断层识别能力。图8为DJ工区地震剖面识别断层的投影显示,通过训练后的SeisFault-Net无需设置任何参数即可进行线性和非线性断层的识别。由图8可见,SeisFault-Net识别的断层位置与地震同相轴不连续处基本重合,且断层垂向连续性好;黄色虚线框内识别的断层清晰,位置准确;蓝色框内由于地震资料分辨率较低,断层的垂向连续性受到影响,但 SeisFault-Net也可以精确识别断层的位置和方向,这表明经过训练后的SeisFault-Net的泛化能力较强。
图8 实际数据体预测断层的投影显示黑色投影线为SeisFault-Net方法识别的断层
利用DQ工区三维地震数据体测试SeisFault-Net,并且与相干算法进行比较。三维地震数据体大小为1.02GB,使用机器型号为Nvidia P100 GPU。SeisFault-Net识别断层耗时5.53s,相干算法识别断层耗时107.00s,即SeisFault-Net计算效率是相干算法的19.35倍。
图9为DQ工区三维数据体的等时切片。由图可见,SeisFault-Net识别的断层位置准确,横向展布清晰,断层连续性好(如图中黄色箭头处);与相干算法识别的断层(图9b)相比,SeisFault-Net识别的断层(图9c)细节特征更丰富,断层展布清晰(如图中黄色方框内)。图10为地震剖面对比结果,可见相干算法识别断层连续性差,存在水平干扰现象,而SeisFault-Net识别的断层位置准则,不存在水平干扰。
图9 实际数据等时切片(a)地震数据等时切片;(b)相干算法识别断层切片;(c)SeisFault-Net识别断层切片
图10 地震剖面不同方法断层识别结果对比(a)地震数据;(b)相干算法;(c)SeisFault-Net方法
本文提出基于深度残差网络与U-Net架构联合识别地震资料断层的方法,能有效识别实际数据中的断层。SeisFault-Net网络利用了U-Net架构,通过编码子网络和解码子网络在高维空间有效表征地震数据中的断层特征,利用跳跃连接将多层的特征信息进行融合,提高了断层识别准确性。同时,SeisFault-Net利用ResNet层,提高了网络训练效率。相较于相干算法,本文方法能更有效、准确识别断层位置,识别的断层的垂向连续性更好。SeisFault-Net用于地震断层识别的计算效率高,能极大缩短地震数据的断层解释时间,降低断层解释结果的人为不确定性。