李泽伟,朱培民,张 昊,廖志颖,李广超,郑浩然
(1.中国地质大学(武汉)地球物理与空间信息学院,湖北武汉430074;2.东方地球物理勘探有限责任公司研究院,河北涿州072750;3.黄河勘测规划设计研究院有限公司,河南郑州450003)
断层是地层受构造运动影响产生相对位移的构造。断层构造蕴含众多地质意义。断裂区域有利于储存油气,同时也是良好的油气运移通道,研究断层的形成可以推算古地层的演化过程。随着油气勘探技术的发展,涌现出了许多断层识别方法,如相干体分析[1-3]、曲率分析[4]、边缘检测技术[5]、蚂蚁追踪算法[6-7]等。但这些方法都存在一些不足,主要是识别结果存在连续性差和背景噪声强的问题,识别精度有待于进一步提升。
近年来,随着深度学习技术的发展,其应用逐渐拓展到地震勘探领域。断层构造在地震剖面上主要表现为反射同相轴的错断、突然增减和消失等。因此,断层的识别过程可以视作一个计算机视觉任务。此外,地震数据以其庞大的数据量和丰富的地质特征满足了深度学习需要大量样本的技术需求。早在20世纪90年代就有学者将神经网络技术应用于断层解释。董守华等[8]、崔若飞[9]将BP神经网络与地震多参数相结合,用于识别小断层,但此类前馈式神经网络的层数较少,仅能学习到有限的断层特征。随着深度学习技术的发展,多种类型的卷积神经网络[10]被提出并应用于断层识别。XIONG等[11]利用Inline、Xline和Time 3个方向的地震剖面切片作为多通道输入,预测3个切片的交点是否为断点。WU等[12]提出了Fault Seg 3D神经网络模型,并通过学习大量的合成数据样本实现了实际地震数据的断层识别,并且准确率较高。刘宗杰等[13]提出一种3D Unet全卷积神经网络用于低序级断层识别。ALFARHAN等[14]在UNet网络中添加了残差结构,提高了断层识别的准确性。常德宽等[15]联合ResNet和UNet网络构建了SeisFault-Net神经网络并用于地震数据的断层识别。WU等[16]将VGG网络结构中的全连接层改为卷积层,修改得到的FCN网络可以识别出复杂的断层,且具有很高的抗噪性。席英杰等[17]构建了用于断层识别的SPD-Unet神经网络模型,在网络中使用了空洞卷积,增强了断层图像特征提取能力。薄昕等[18]提出了一种基于PCNN和拉普拉斯金字塔变换的多属性融合方法,该方法通过突出各个尺度上的目标信息,进一步提高了多属性裂缝融合结果的精度。伍新民等[19]提出了一套三维地震数据构造解释与建模技术流程,整个流程包含三维断层、层序和地质体自动化解释以及构造引导的井间插值岩性参数建模。
上述卷积神经网络在信噪比高的测试数据上表现良好,提高了断层识别结果的连续性,但在具有复杂构造的地震数据上表现不佳,存在错误和漏识问题。此外,实际地震数据来源于三维地下空间,上述部分断层识别方法是针对二维剖面设计的,这些算法只考虑了垂直于断层走向的情况,如果应用于三维地震数据则会遗漏断层的空间信息,进而降低识别准确率,且二维识别结果不利于后续断层建模工作的开展。
针对以上问题,本文直接从三维地震数据断层识别出发,提出了一种可支持多分辨率特征提取的三维神经网络MultiRes-Unet3D。MultiRes-Unet3D结合了Unet和ResNet两种类型的卷积网络,且卷积块拥有不同大小的感受野,具有提取不同尺度地质构造的能力,适用于不同分辨率的地震数据特征提取。引入的残差结构解决了梯度消失和梯度爆炸的问题,增强了网络模型的稳定性和泛化能力。MultiRes-Unet3D能够很好地将不同层次的特征图进行融合,减少了因下采样损失的边界信息,提高了断层识别精度。
断层的规模有大有小,从千米级别到米级不等,且形态各异。断层断距从数十米到几米不等。断层在地震数据上显示为同相轴的错断、突然增减、消失或扭曲等。人们在识别断层时,通过少量的概念和样本学习,就可以很容易地掌握方法,但对机器学习和深度学习来说,断层识别并不容易。因此,用人工神经网络来解决断层的识别问题,必须考虑到下面几点:
1) 可以识别米级~千米级等不同规模的断层,以及米级~数十米级断距的断层,以解决断层规模变化大、多分辨率问题;
2) 具有同相轴错断、突然增减、消失或扭曲等不同特征的断层都能识别出来;
3) 断层在三维地震数据体中所占有的体积比例很小,造成了常规断层识别算法所识别的断层连续性不强;
4) 充分利用三维地震数据中的断层样本所提供的空间相关性,提高断层的识别能力和准确性;
5) 根据合成地震数据学习得到的网络模型,可应用于实际地震数据,具有良好的泛化能力。
为此,对各种深度学习网络进行了反复对比,以二维MultiRes-Unet[20]为基础,将其拓展到三维领域,以达到上述要求。MultiRes-Unet神经网络由Unet神经网络发展而来,具有较好的多分辨率信息的提取能力。传统的Unet网络虽然能够较好地识别断层,但随着网络深度的增加容易丢失部分边界信息,造成数据边界或者构造边缘处预测精度降低,网络深度过大时可能会出现梯度消失和过拟合等问题。为了解决上述问题,除了将其拓展到三维领域,并对网络结构进行改进之外,还调整了相关神经层和超参数,使其可以更好地从三维叠后地震数据中识别出断层。
MultiRes-Unet3D神经网络结构如图1所示,其结构和Unet相似,也是基于编码解码结构的神经网络,网络中的每个MultiRes Block作为一个采样卷积模块。编码器包括4次下采样模块,可以用于特征提取;解码器包括4次上采样模块,用于特征分类;每个下采样模块通过Res Path模块连接与之平行的上采样模块。
图1 MultiRes-Unet3D神经网络结构
图1中的MultiRes Block是支持不同分辨率和尺度特征的提取模块,主要用于不同规模断层的识别,其利用不同大小的卷积核具有的大小不同的感受野提取不同分辨率的特征,再对提取到的特征进行融合,从而实现多种分辨率和多种尺度的特征提取。本文设计了3×3×3,5×5×5,7×7×7的卷积层并联结构来提取不同尺度的特征数据。此外,还增加了神经网络的稳定性和泛化能力,使神经网络能够更加适应不同分辨率的地震数据。2个3×3×3的卷积层串联与1个5×5×5卷积层具有相同的感受野,而3个3×3×3卷积层串联与1个7×7×7卷积层具有同样的感受野。此外,多个卷积层与非线性的激活层交替的结构,比单一卷积层的结构能更好地提取出深层的特征,且需要训练参数更少。为了实现和图2a同等的多分辨率特征提取效果,采用图2b中的结构,利用3个3×3×3的卷积层串联并添加连接层。考虑到网络的深度过大可能造成梯度消失和梯度爆炸等问题,在图2b的基础上引入了1×1×1的卷积层,添加了残差结构[21]。MultiRes Block的最终结构如图2c所示。
图2 MultiRes Block网络结构a 不同大小卷积层并联融合结构; b 相同大小卷积层串联等效结构; c 加入残差连接的串联等效结构
Res Path模块用于上、下采样模块之间的连接。上、下采样模块之间的连接可以实现浅层提取特征和深层提取特征的融合,减少下采样损失的边界信息。Unet将浅层特征和深层特征直接相连,不利于神经网络学习。如图3所示,Res Path采用4个3×3×3的卷积层进行特征提取,再将其与深层提取特征相融合。此外,每次卷积均引入了残差结构,避免了网络深度过大带来的过拟合等问题。
图3 Res Path网络结构
深度学习算法以大数据驱动,要训练一个良好的断层识别网络模型,需要数量足够多且包含丰富断层类型和断层特征的训练数据集。考虑到实际三维地震训练样本制作的复杂性,以及手工断层解释具有周期长,主观性强,且很难保证解释结果的准确性等缺点,本文采用与文献[22]类似的方法制作出高度真实的三维合成地震数据集,其拥有丰富的断层类型和断层构造特征。具体的制作流程如下。
1) 生成水平反射模型(图4a)。根据Robinson褶积模型,地震记录道s(t)可由下式构造出来:
图4 合成地震数据的制作a 水平层状地质模型; b 褶皱模型; c 断层模型; d 添加随机噪声后的模型
s(t)=w(t)*r(t)
(1)
式中:w(t)为地震子波;r(t)为反射系数序列。地震子波采用雷克子波,主频为60Hz,时间采样间隔为1ms。反射系数取值为[-1,1]内的随机数,服从正态分布。
2) 生成褶皱模型。在三维地震地质模型中采用垂直剪切水平模型的方法模拟褶皱结构[23-24],剪切由S1和S2两个位移场组合定义。第一个线性位移场S1定义为:
S1(X,Y,Z)=aX+bY+c0Z
(2)
式中:a,b,c0是在规定范围内的随机数;X,Y,Z为全局坐标系下的点。
S1用于在模型中生成倾斜构造,a,b决定了X,Y方向的倾角,取值范围为[-0.25,0.25]。这个范围可以避免S1在与S2结合后出现极端倾角的情况。设c0=-aXc-bYc,因此模型的中心道(Xc,Yc,Z)是没有位移的。仅经过倾斜构造处理,不足以模拟真实的褶皱模型,再利用垂直位移场S2给地层模型增加弯曲结构:
(3)
式中:S2由N个二维高斯函数和一个线性标量函数1.5Z/Zmax组成,线性标量函数用于控制弯曲程度从下到上逐渐减少;(ck,dk)为第k个高斯函数的中心位置;σk为半宽度;bk为振幅。σk和bk为随机选择的数值,为了避免弯曲结构过于尖锐,可选择较小的值。通过N个高斯函数的叠加,可以创建各种形状的褶皱结构。水平地层反射模型经过(2)式和(3)式的处理,再对数据进行平滑处理,得到如图4b所示的褶皱模型。
3) 生成断层模型。在生成褶皱模型后,需要在地震模型中模拟出断层构造。如图5所示,首先在地震数据中随机选择参考点(X0,Y0,Z0)作为断层面上一点,随机生成断层倾角θ∈(0°,90°),方位角φ∈(0°,180°)。接下来,定义一个局部坐标系,以X0,Y0,Z0为坐标原点,x轴为断层走向方向,y轴为倾角方向,z轴为法线方向。将全局坐标系下的数据点(X,Y,Z)转化到局部坐标系下:
(4)
图5 断层模型[22]a 坐标转换示意; b 断层位移示意
其中,(x,y,z)为局部坐标系下的点,矩阵R的具体形式为:
(5)
在断层面上利用理想的椭圆函数和原始中心点定义位移场,设lx为断层走向方向的最大直径,ly为断层倾角方向上的最大直径。位移场d定义为:
(6)
其中,r(x,y)是归一化径向距中心点的距离,具体形式为:
(7)
需要指出的是,在生成断层模型的时候,lx、ly和中心点的最大位移dmax都是随机选择的。断层的位移由中心点开始向断面四周逐渐变小,断层模型如图4c 所示。可以在同一数据中建立多个断层面,用于实现丰富的断层类型和不同接触关系的断层。
4)添加随机噪声。添加高斯白噪声使得地震数据更加接近实际地震数据(图4d),添加不同比例的随机噪声可以得到更加逼真的断层和地层模型。
通过以上的地震模拟,得到了大量三维合成地震数据。其中的断层构造拥有不同的走向、倾角、断距以及不同的接触关系。在同样大小的合成地震数据中,将断层面位置赋值为1,非断层面处赋值为0,进而得到断层标签数据(图6)。样本数据集一共包括300对地震数据及标签数据,每个三维地震数据包括128×128×128个采样点,在样本数据集中,240对数据选为训练集,60对数据作为测试集。
图6 合成训练样本a 合成地震数据; b 断层标签数据
在构建神经网络时,每层的参数都是随机初始化的,需要对其进一步更新,以创建输入地震数据到输出断层预测结果良好的映射网络。在模型训练的过程中,要使用优化算法来迭代更新神经网络参数,直到输出的断层图像和断层标签图像之间的误差收敛至最小。为了提高训练效果和效率,在神经网络训练前,我们对训练样本数据进行了增强处理。增强处理指对样本数据进行一系列变换操作,以增加训练样本量,在一定程度上可以提高神经网络的泛化性能,同时提高神经网络的预测精度。本文采用的数据增强方法包括对样本数据进行随机旋转、镜像和翻转等。
由于地震数据中,断层点和非断层点数,或断层点所占体积与总体积相比,悬殊过大,因此在神经网络训练中,使用二元分割的交叉熵损失函数L,具体见(8)式,神经网络朝着非断层点的方向拟合,造成网络预测性能的下降。为了解决这个问题,根据文献[25],本文在传统的交叉熵损失函数的基础上,在其每一项前给定了一个系数β,使其两项初始比例大致平衡,具体见(9)式。
(8)
(9)
其中,
(10)
式中:yi代表标签值;pi代表预测值;β表示非断层点占总采样点比率,1-β为断层点占总采样点比率。
本文使用了随机梯度下降法(Adam)来优化神经网络参数。Adam优化算法能够自适应随机优化,具有计算效率高,占用内存少的优点,适用于大规模数据优化。通常,在训练的过程中,学习率太大会造成损失函数(Loss)爆炸,学习率太小导致神经网络收敛缓慢。本文考虑到MultiRes-Unet3D网络结构复杂,参数量较为庞大,结合神经网络其它超参数的特性以及过往研究经验,将学习率设置为10-4。在神经网络训练过程中,每次迭代后,我们选用准确率(Accuracy)来评估参数更新后网络的性能。神经网络最后一层采用了适合二分类任务的Sigmoid激活函数,其余卷积层使用Relu激活函数。
在神经网络的训练中,将训练数据分批输入神经网络进行训练。由于每个训练样本都是相互独立的,且训练数据占用内存较大,因此将Batch Size设置为1。为了避免网络过拟合,每次输入网络的训练样本都是随机的。由于我们事先并不清楚网络学习的收敛特性,故训练次数需要达到一定数量。本文选取了迭代100次的训练次数,每次迭代会遍历所有的训练数据。
图7a和图7b分别为训练过程中损失函数值和准确率变化曲线,可以看出,神经网络在训练过程中整体收敛情况良好,损失函数值在不断降低后趋于稳定,准确率在不断提高后趋于稳定。在迭代40次后,网络模型性能基本达到最优,Loss值收敛到约0.04,测试集的Loss值在0.10附近上下波动。训练集和测试集准确率在迭代40次后也趋于稳定,后续训练上升缓慢,训练集和测试集的准确率分别达到了98.5%和97.5%。由于地震数据之间的偏移问题,在测试过程中测试集的Loss曲线存在小幅跳跃现象,但这并不影响神经网络的预测精度。
图7 训练过程中损失函数值(a)与准确率(b)的变化曲线
我们选取训练第40次迭代保存的神经网络模型进行测试。图8和图9分别为不同测试样本的识别结果。图中第1行分别为地震数据的主测线剖面、横测线剖面和水平切片;第2行为与之对应的断层标签,第3行为对应的断层识别结果。
图8 测试样本识别结果
图9 含强噪声测试样本识别结果
从图8可以看出,断层识别结果与断层真实位置高度吻合,且连续性好。在断层边界处和交叉断层的交叉位置也能够基本正确地识别出断层。对比断层识别值与标签值,发现倾角较小的断层和断距较小的断层还存在一定误差。图9是加入了强随机噪声的测试样本识别结果。该数据背景噪声较强,断层断距较小,断点不够明显。虽然MultiRes-Unet3D神经网络的识别准确率有所下降,但是整体上仍能够准确预测出断层的位置。这说明对于具有较强噪声的三维地震数据,该神经网络也具有可靠的断层识别性能。
为了进一步验证MultiRes-Unet3D神经网络的识别性能,直接将训练好的神经网络模型应用于三维叠后地震数据进行断层识别。本文所用的实际地震数据是公开的Netherlands F3和Opunake部分三维地震数据。Netherlands F3数据包含主测线512道(Line100~611),横测线384道(Crossline300~683),采样间隔为4ms,每道有128个采样点(Time1336~1844ms)。这两块地震数据断层发育良好,断点清晰,断距较小,断层倾角较大,断层走向主要沿主测线方向。Opunake三维地震数据包含主测线384道(Line2001~2384),横测线512道(Crossline2695~3717),采样间隔为4ms,每道有256个采样点(Time212~1232ms)。该地震数据断层构造较为发育且断层的宽度和断距均较大,断裂区域构造复杂,识别难度较大。这两块地震数据断层构造特征差异较大,且二者的分辨率也不同,适合用于检验MultiRes-Unet3D神经网络在实际地震数据中的识别效果。
由于实际地震数据振幅值和合成地震数据振幅值差异很大,识别前先对地震数据的振幅进行处理。在不改变地震数据基本特征情况下,将振幅值等比例缩小到-10~10。利用第40次迭代保存的网络模型进行断层识别,图10和图11分别为根据Netherlands F3和Opunake三维地震数据得到的断层识别结果。从识别结果可以看出,MultiRes-Unet3D神经网络表现良好,能够较为准确地识别出断层构造,且断层连续性好,噪声较小。对于同相轴错断不明显的区域,利用MultiRes-Unet3D神经网络也能得到较好的识别结果。但仔细分析不难发现,在同相轴连续性较差的区域,利用MultiRes-Unet3D神经网络容易造成错误识别,识别结果还存在一些孤立的噪声,如图10和图11中红色曲线圈出的部分。原因在于MultiRes-Unet3D神经网络只在合成地震数据上进行了训练,而合成地震数据与实际地震数据的构造特征差异较大。MultiRes-Unet3D神经网络在不同地质特征的地震数据上都有较好的表现,说明该神经网络的泛化性较好,能够直接应用于具有不同地质特征的地震工区。
图10 Netherlands F3三维地震数据断层识别结果a 第50道主测线剖面; b 第50道联络测线剖面; c 第300ms时间切片
图11 Opunake三维地震数据断层识别结果a 第50道主测线剖面; b 第200道联络测线剖面; c 第800ms时间切片
为了展示MultiRes-Unet3D神经网络断层识别效果的优越性,我们将MultiRes-Unet3D神经网络与Unet神经网络、断层似然性(Fault Likelihood)和蚂蚁体追踪(Ant tracking)3种断层自动识别方法进行了对比。图12和13分别为利用上述方法对Netherlands F3和Opunake得到的三维地震数据断层识别结果。对比图12和图13不难发现,MultiRes-Unet3D神经网络的断层识别结果准确,且断层连续性强,特别是断层边界的识别更为准确,识别错误较少。
图12 Netherlands F3三维地震数据断层识别结果对比a MultiRes-Unet神经网络; b Unet神经网络; c 断层似然性; d 蚂蚁体追踪
图13 Opunake三维地震数据断层识别结果对比a MultiRes-Unet神经网络; b Unet神经网络; c 断层似然性; d 蚂蚁体追踪
对比发现,Unet神经网络也能较好地识别出断层构造,但是相较于MultiRes-Unet3D神经网络的识别结果,Unet识别结果的连续性以及断层边界的识别能力稍逊(参见图12b、图13b中红色方框标记处)。断层似然性算法由相干体算法发展而来,存在较多识别错误,断层连续性较差,同一条断层的断点似然值差别较大。4种方法中,蚂蚁体追踪对断层的识别效果最差。其在连续性和断点的位置方面,识别效果均较差,这是由于蚂蚁体算法的缺陷容易造成沿同相轴追踪(参见图12d中红色方框标记处)。从本文的断层识别结果来说,从最差到最好,有如下排序:蚂蚁体追踪、断层似然性、Unet、MultiRes-Unet3D。
本文发展了一套基于深度学习的三维地震数据断层智能识别算法的MultiRes-Unet3D神经网络。由于该算法采用了针对性的多分辨率特征提取设计,并将断层点或线在整个地震数据的占比关系体现在交叉熵损失函数不同项之间的平衡上,使得算法有了较可靠的识别能力。
相较于Unet神经网络、断层似然性和蚂蚁体追踪3种断层识别方法,MultiRes-Unet3D神经网络能够适应不同分辨率和断层规模的地震数据,具有断层识别精度高、断层空间连续性好、边缘区域识别更准确、网络泛化性能好、识别结果噪声更少等优点。
由于本文的训练数据有限,且均为三维合成地震数据,因此MultiRes-Unet3D神经网络还需要在实际地震数据上进行训练,进一步提升其泛化能力。