深度学习

理解和使用深度学习网络

MathWorks赢得地球科学AI GPU黑客马拉松

以下是来自MathWorks的Akhilesh Mishra, Mil Shastri和Samvith V. Rao关于他们参与地球科学黑客马拉松的文章。Akhilesh和Mil是应用工程师,Samvith是支持油气行业的行业营销经理。金宝app

背景

SEAM (SEG Advanced Modeling Corp.)是一家石油地球科学行业机构,致力于促进行业、政府和学术界之间的合作,以应对主要的地质挑战。他们最近的活动是黑客马拉松(SEAM AI应用地球科学GPU Hackathon),试图探索使用人工智能来提高地球内部地球物理图像的定性和定量解释,并使用NVIDIA gpu加速应用。
共有7支团队来自世界各地,包括商业公司(雪佛龙、道达尔、巴西石油公司)以及工业和大学生。每个团队都被指派了一位导师,他是一位为顶级石油和天然气公司工作的专家地球科学家。

挑战

勘探数据特别是地球内部原始地震图像的地质解释是油气工业的重要步骤。地震图像描绘了地球内部岩石的体积,具有不同的物理和地质特征“相”。解释指导地下储层勘探、钻井、生产和废弃的图像的一个重要步骤是识别和分类地震图像中所有不同的地质相,通常称为地震相识别或分类
这个过程仍然主要由地质学家在地球物理数据收集、处理、成像和显示方面的专家协助完成。成功的解释者是识别特征的专家,如通道、大规模运输综合体和塌陷特征。
黑客马拉松的问题在于训练一种自动识别地震图像中不同地质相的算法,产生一种可以被认为是地质学家专家的解释,或者被用作加快人类解释速度的起点。

的数据

我们得到了以下来自新西兰海岸Parihaka地区的数据集。这数据向公众开放并被雪佛龙的一位地球科学家标记。下图显示了本次挑战中使用的3D地震图像的两个垂直切片和一个水平切片的渲染图。使用标准笛卡尔坐标系绘制图像,X和Y测量地表附近的水平位置,Z测量地下深度。

图1:Parihaka地震数据图像(TOP)和对应标签(BOTTOM)的XZ、YZ、XY切片三维视图

训练数据集是一个3D图像,表示为大小为1006 x 782 x 490实数的矩阵,按顺序或(Z, x,Y)存储。训练数据对应的标签也是类似的排列方式,由1到6之间的整数组成。下图2给出了XZ切片的一个二维横截面图中每个像素的回波强度图和对应的标签。

图2:XZ切片的二维横截面图(左),以及6个岩相图像的逐像素分类(右)

我们的方法

目前大多数自动地震相标记技术都是使用卷积神经网络进行语义分割[1][2][3]。然而,这些方法中有很多都存在过拟合的问题,并且提到训练算法只适用于接近模型训练数据集的调查区域。如果该算法用于来自不同地理位置的数据集,则该模型可能需要重新培训。
我们想利用在这个领域已经完成的工作,提出一种不太容易过度拟合的技术,可以应用到更广泛的地理区域,而不需要再培训。
就在那时,我们考虑采取行动ieee的方法:由于三维图像体是由一维回波信号构成的,因此可能存在利用不同相的这些回波的独特特征的潜力。
图3显示了二维图像的一小部分,信号叠加在相上。经过仔细观察,我们可以看到每个信号,也称为“痕迹”,当它遇到不同的相时,有一个独特的特征。例如,在图像中部从“深蓝”相过渡到“绿色”相时,信号有一波高振幅的脉冲快速振荡,而在“浅蓝色”和“深蓝”相之间的界面振荡较慢,振幅较低。地质专家经常在像素值的垂直序列中寻找这些特征,以确定不同相之间的关键界面。

图3:图像值(红色)随深度变化的曲线图,叠加在小剖面的岩相解释上。请注意,高回波振幅在正负值之间快速交替的突发是图像中部“蓝色”和“绿色”相过渡的特征。

接下来,我们使用了一个递归神经网络(RNN)架构,利用输入轨迹训练一个序列逐个序列分类网络,但在我们的初步尝试中,网络未能收敛。这主要是由于信号长度相当长,且明显的信号特征随时间变化非常快。如果我们能将独特的相特征分离成不同的通道,我们可能有更好的机会训练网络。
我们决定利用小波多分辨率分析技术:多分辨率分析(MRA)使用离散小波变换将信号分解成分量,将数据的变异性分解成物理上有意义和可解释的部分。在我们的案例中,我们直接使用MRA信号多分辨率的应用在MATLAB中,并经过实验通过各种离散小波,用fk14小波对信号进行分解得到了最佳的结果,并将信号分为5个层次。

图4:原始信号的多分辨率分解为四层+ fk14小波逼近。这是用MATLAB中的信号多分辨率应用程序完成的

通过选择输出选项,我们还直接从这个应用程序生成MATLAB代码,对所有信号使用MRA进行相同的小波分解。
%加载培训数据和标签载荷数据_train.mat;装载标签\u train.mat;%将数据转换为双精度,将标签转换为分类数据类型data =双(数据);=分类标签(标签);%对所有迹线应用最大重叠离散小波变换dataMRA=零([尺寸(数据),5]);parfor ii=1:782,jj=1:590数据MRA(:,ii,jj,:)=modwt(数据(:,ii,jj),'fk14',4');结束
现在,每个跟踪有5个通道。为了捕获附近记录道的相关性,我们将XY平面中的3x3条记录道组合在一起,并使用这些记录道来训练中间记录道的相同标签。假设XY平面上的信号分辨率足够低,地震特征不会在3x3采样网格上发生变化,则可以执行此操作。图5显示了如何将数据集分组到3X3网格中,每个跟踪有5个通道。

图5:将数据安排到训练集中

dataTrain = {};labelsTrain = {};drawtext ((dataMRA(:,ii-1:ii+1, jj-1:jj+1,:)), [1 4 2 3]), color0000ff;dataTrain(ii+jj-3,1) ={重新塑造(tempData, [1006 45])'};labelsTrain (2 + jj-3, 1) ={标签(:,第二,jj)};结束结束

在此阶段,我们还将数据集划分为训练集和验证集,以便在训练期间使用。为了使我们的网络更加健壮,我们从782x590个跟踪中随机选择了1000个跟踪进行训练,并将剩余的用于网络验证。
idx = randperm(大小(dataTrain, 1));%培训数据和标签trainData = dataTrain (idx (1:1000));valData = dataTrain (idx(1001:结束));%测试数据和标签列车标签=标签列车(idx(1:1000));valLabel=标签序列(idx(1001:end));
接下来,我们准备构建用于培训的深度学习网络。数据集被排列成在Z方向上一个序列一个序列地馈入RNN。最初,我们从长短期记忆(LSTM)层开始,但经过几次迭代后,我们意识到门通循环单元(GRU)层能够提供更好的性能。利用MATLAB中的deep Network Designer应用程序构建深度学习层,并利用网络分析工具进行分析。图6显示了Deep network Analyzer App上的网络的完整架构及其分析。如果你看看这个网络,我们有第一层是序列输入层,输入大小为45 (3x3x5通道),最后的分类层的大小为6x1,对应于它将为每个标签类别预测的分数。

图6:构建RNN层(顶部)和网络分析(底部)的Deep Network Designer应用程序

我们可以通过从应用程序中导出代码直接生成层架构的MATLAB代码。
inputSize = [45];numHiddenUnits1 = 20;numHiddenUnits2 = 30;numClasses = 6;grulayer =[…sequenceInputLayer (inputSize‘名’,‘InputLayer’,……'归一化','zerocenter') gruLayer(numHiddenUnits1,'Name','GRU1','OutputMode','sequence') dropoutLayer(0.35,'Name','Dropout1') gruLayer(numHiddenUnits2,'Name','GRU2') dropoutLayer(0.2,'Name','Dropout2') fullyConnectedLayer(numClasses,'Name',' fullconnected ') softmaxLayer('Name','smax');classificationLayer('名称',' classificationLayer '));

在这一步之后,我们为深度网络培训定义了培训选项。使用MATLAB AWS参考体系结构云图像,在单个NVIDIA安培A100 GPU上执行培训。图7显示了深度学习培训的进度。

maxEpochs = 300;miniBatchSize = 15;options = trainingOptions('adam',…‘ExecutionEnvironment’,‘汽车’,……“L2Regularization”,1 e - 3,…“InitialLearnRate”,1 e - 3,…MaxEpochs, MaxEpochs,……MiniBatchSize, MiniBatchSize,……“洗牌”、“every-epoch’,……“详细”,0,… 'Plots','training-progress', ... 'ValidationData', {valData, valLabel}); [netGRU,infoGRU] = trainNetwork(dataTrain,labelsTrain,GRUlayers,options);

图7:深度学习网络的训练进度

结果

比赛持续了2个星期结果被宣布4月22日nd2021.这场比赛经历了几次高潮和低谷。在提交之前的那个周末我们有3个不眠之夜。在我们想出最终解决方案之前,我们不得不反复使用不同的方法。我们一开始是在原始信号上训练lstm,然后逐渐添加额外的技术,最后得出最终的解决方案。
有3个指标来判断提交的质量:
  1. 岩相加权F1分数,各岩相之间的权重不同:岩相5和6的权重最高,因为它们在地质学上最重要。
  2. 相加权像素正确百分比:相5和相6的权重最高,因为它们在地质上是最重要的。
  3. 界面加权F1分数:F1分数为每个像素计算,一个界面的10个样本内的像素被赋予所有其他样本20倍的权重。

MathWorks被宣布为测试数据集1的获胜者。我们的提交被裁定为“地质一致”,F1加权分数是下一个参赛队的两倍以上!我们的方法被我们的导师称为“独特的”,因为它是信号处理的重,而不是完全由深度学习驱动的。

图8:MathWorks得分最高的结果排行榜。注意MathWorks和其他团队的f1加权得分差异!

图9:为测试数据集计算的加权F1分数

下一步是什么

  1. 我们现在有一个全新的、功能齐全的地震相分类解决方案(如果您联系我们,我们将很高兴给您发送代码deep-learning@mathworks.com)我们坚信这种方法将有助于克服卷积神经网络的局限性。
  2. 我们将cnn方法[1][2]与RNN深度学习网络方法相结合,目的是得到图像和信号方法的最佳预测。图10显示了未来的工作架构,其中我们将训练两个不同的2D unet跨越XZ和YZ平面,并将其与RNN网络预测相结合。对于每个轨迹,我们将从3个网络中进行分类,一个池化算法将分析分数并挑选出最终的预测类。

图10:结合UNet和RNN进行相分类的未来工作

参考文献

[1]陈良杰、乔治·帕潘德里欧、亚索纳·科基诺斯、凯文·墨菲和艾伦·尤耶。Deeplab:使用深度卷积网、Atrus卷积和完全连接的CRF进行语义图像分割.计算机工程与应用,2018,40(4):834-848。
[2]王增艳,李芳玉,塔哈,哈米德。使用深度扩展注意自动编码器改进的自动化地震相分析。会议:2019年IEEE/CVF计算机视觉和模式识别研讨会(CVPRW)
[3]耿志刚,王永强。用于经济高效地震数据分类的多尺度滤波器卷积神经网络的自动设计.Nat Commun 11,3311(2020)。https://doi.org/10.1038/s41467-020-17123-6
|
  • 打印
  • 发送电子邮件

评论

如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。