深度学习

理解和使用深度学习网络

Mathworks赢得Geoscience Ai GPU Hackathon

下面的帖子来自MathWorks的Akhilesh Mishra、Mil Shastri和Samvith V.Rao,讨论他们参与地球科学黑客竞赛的情况。Akhilesh和Mil是应用工程师,Samvith是支持石油和天然气行业的行业营销经理。万博1manbetx

出身背景

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

挑战

调查数据的地质解释 - 尤其是地球内部的原始地震图像是石油和天然气工业的重要一步。地震图像描绘了地球内部的岩石,其术语总结了不同的物理和地质特征“相”。解释图像的重要一步 - 导游勘探,钻探,生产和放弃地下水库 - 是据识别和分类地震形象中的所有不同地质相的分类,经常被称为地震相识别或分类
这一过程主要由地质学家在地球物理数据收集、处理、成像和显示方面的专家协助完成。成功的口译员是识别特征的专家,如通道、物质传输复合体和塌陷特征。
黑客马拉松的问题在于训练一种自动识别地震图像中不同地质相的算法,产生一种可以被认为是地质学家专家的解释,或者被用作加快人类解释速度的起点。

数据

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

图1:通过Parihaka地震数据图像(顶部)和相应标签(底部)的三维视图XZ、YZ和XY切片

训练数据集是一个3D图像,表示为1006 x 782 x 490实数的矩阵,按或(Z,x,Y)的顺序存储.与训练数据相对应的标签以类似方式排列,并由值介于1到6之间的整数组成。下图2显示了回波的强度图以及XZ切片的一个2D横截面视图中每个像素的相应标签。

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

我们的方法

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

图3:图像值(红色)的曲线作为深度的函数,叠加在小部分中的相位解释上。注意,在正极和负值之间快速交替的高回声幅度的突发是在图像的中间部分之间的“蓝色”和“绿色”相之间的转变的特征。

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

图4:使用FK14小波将原始信号的多分辨率分解成四个级别+近似。这是使用MATLAB中的信号多分辨率应用完成的

我们还通过选择导出选项直接从该应用程序生成了MATLAB代码,以便在所有信号上应用与MRA相同的小波分解。
%加载培训数据和标签load data_train.mat;加载labels_train.mat;%将数据转换为双精度,将标签转换为分类数据类型DATA = DOUBLE(数据);标签=分类(标签);%对所有记录道应用最大重叠离散小波变换DataMra = Zeros([大小(数据),5]);AIC = 1:782对于JJ = 1:590 DataMra(:,II,JJ,:) = MODWT(数据(:,II,JJ),'FK14',4)';结束
现在我们有5个频道为每条痕迹。要捕获附近迹线的相关性,我们将3x3在XY平面中分组3x3迹线,并使用它来培训中间迹线的相同标签。这是假设XY平面中的信号分辨率足够低,以至于地震功能不会跨3x3样品网格改变。图5显示了将数据集分组为3x3网格,可为每条跟踪为5个通道。

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

数据序列={};标签序列={};对于ii=2:782-1对于jj=2:590-1,tempData=permute((dataMRA(:,ii-1:ii+1,jj-1:jj+1,:),[1 4 2 3]);数据链(ii+jj-3,1)={重塑(tempData,[1006 45])};标签序列(ii+jj-3,1)={标签(:,ii,jj)};结束

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

图6:深度网络设计器应用程序以架构RNN层(顶部)和网络分析(底部)

我们可以通过从应用程序导出代码直接生成图层架构的MATLAB代码。
inputSize=[45];numHiddenUnits1=20;numHiddenUnits2=30;NumClass=6;GRUlayers=[…sequenceInputLayer(inputSize,'Name','InputLayer',…'Normalization','zerocenter')gruLayer(numHiddenUnits1,'Name','GRU1','OutputMode','sequence')dropoutLayer(0.35,'Name','Dropout1')gruLayer(numHiddenUnits2,'Name','GRU2')Droplayer(0.2,'Name','Dropout2')fullyConnectedLayer(numClasses,'Name','FullyConnected')softmaxLayer('Name','smax');classificationLayer('Name','classificationLayer');

在此步骤之后,我们定义了深度网络培训的培训选项。使用Matlab AWS参考架构云图像对单个NVIDIA安培A100 GPU进行培训。图7显示了深度学习培训进度。

maxepochs = 300;minibatchsize = 15;选项= TrainingOptions('adam',...'executionenvironment','auto',...'l2regularization',1e-3,...'initiallearnrate',1e-3,...'maxepochs',maxepochs,......'minibatchsize',minibatchsize,...'shuffle','nepoch',...'verbose',0,...'plots','培训 - 进展',...'validationdata',{valdata,vallabel});[netgru,infogru] = trainnetwork(数据标记,labelstrain,grailayers,选项);

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

结果

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

MathWorks被宣布为测试数据集1.我们的提交被统治“地质上一致”,F1加权分数不仅仅是下一个竞争团队的两倍!我们的方法被我们的导师称为“独特”,因为它是信号处理沉重而不是完全深入的学习驱动。

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

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

下一步是什么

  1. 我们现在有了一个全新的、功能齐全的地震相分类问题解决方案(如果您愿意,我们很乐意向您发送代码)深沉的-learning@mathworks.com)。我们强烈地认为这种方法将有助于克服与​​卷积神经网络的局限性。
  2. 我们将把CNNApproach [1] [2]结合在一起,利用RNN深度学习网络方法,目标是为了获得与图像和信号方法的最佳预测。图10显示了未来的工作架构,我们将在XZ和YZ平面上培训两个不同的2D磁盘,并将其与RNN网络预测相结合。对于每条迹线,我们将具有3个网络的分类,池算法将分析得分并挑选最终预测类。

图10:将UNET与RNN合并的未来作品用于相片分类

参考

[1]梁驰陈,乔治帕潘德里欧,Iasonas Kokkinos,Kevin Murphy和Alan L Yuille。DEEPLAB:具有深度卷积网,不含卷积和完全连接的CRF的语义图像分割.计算机工程与应用,2018,40(4):834-848。
[2]王增彦、李方宇、蒂亚布·R·塔哈和哈米德·R·阿拉布尼亚。利用深度扩张的IOVAENCODERS改进了自动化地震相分析。会议:2019年电脑视觉和模式识别研讨会上的IEEE / CVF会议(CVPRW)
[3]耿志刚,王永强。用于经济高效地震数据分类的多尺度卷积神经网络的自动设计.Nat Commun 11,3311(2020)。https://doi.org/10.1038/s41467-020-17123-6
|
  • 打印
  • 发送电子邮件

注释

要发表评论,请点击这里登录您的MathWorks帐户或创建新的。