人工智能

应用机器学习和深度学习

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

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

背景

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

所面临的挑战

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

的数据

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

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

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

图2 XZ切片二维剖面图(左),6相图像逐像素分类(右)

我们的方法

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

图3:图像值(红色)作为深度的函数,叠加在一小段相解释上。请注意,在图像中部“蓝色”和“绿色”相之间过渡的特征是在正负值之间快速交替的高回声振幅爆发。

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

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

我们还通过选择导出选项直接从这个应用程序生成MATLAB代码,对所有信号应用相同的小波分解和MRA。
%加载训练数据和标签加载data_train.mat;加载labels_train.mat;将数据转换为双类型,将标签转换为分类数据类型数据= double(数据);标签=分类的(标签);对所有迹线应用最大重叠离散小波变换dataMRA = 0 ([size(data),5]);dataMRA(:,ii,jj,:) = modwt(data(:,ii,jj), 'fk14',4)';结束结束
现在,每个跟踪都有5个通道。为了捕获附近轨迹的相关性,我们将XY平面上的3x3个轨迹分组在一起,并使用它来训练中间轨迹的相同标签。这是假设XY平面上的信号分辨率足够低,以至于地震特征在3x3样本网格上没有变化。图5显示了如何将数据集分组为3X3网格,为每个跟踪的5个通道。

图5:将数据排列到训练集

dataTrain = {};labelsTrain = {};tempData = permute((dataMRA(:,ii-1:ii+1, jj-1:jj+1,:)), [1 4 2 3]);dataTrain(ii+jj-3,1) ={重塑(tempData, [1006 45])'};labelsTrain(ii+jj-3,1) = {labels(:,ii,jj)'};结束结束

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

图6:用于构建RNN层(上)和网络分析(下)的深度网络设计器应用程序

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

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

maxEpochs = 300;miniBatchSize = 15;选项= 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:深度学习网络的训练进度

结果

比赛持续了两个星期,比赛结束宣布结果4月22日nd2021.比赛有高潮也有低谷。在提交之前的周末,我们真的有3个不眠之夜。在我们提出最终解决方案之前,我们必须迭代不同的方法。我们最初在原始信号上训练lstm,然后逐渐添加额外的技术,直到提出最终的解决方案。
有3个指标可以判断提交的质量:
  1. 相相F1得分,不同相相的权重不同:相5和相6的权重最高,因为它们在地质上最重要。
  2. 相加权像素正确百分比:相5和相6的权重最高,因为它们在地质上是最重要的。
  3. 接口加权F1-score:为每个像素计算F1-score,在一个接口的10个样本内的像素被给予所有其他样本的20倍的权重。

MathWorks被宣布为测试数据集1的赢家。我们的提交被判定为“地质一致”,f1加权分数是下一个竞争团队的两倍多!我们的方法被导师称为“独特的”,因为它需要大量的信号处理,而不是完全由深度学习驱动。

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

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

接下来是什么

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

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

参考文献

[1]陈良杰,乔治·帕潘德里欧,Iasonas Kokkinos, Kevin Murphy和Alan L Yuille。Deeplab:使用深度卷积网络、atrous卷积和全连接crfs进行语义图像分割.机械工程学报,2018,34(4):834-848。
[2]王增燕,李芳玉,王志强,王志强。基于深度扩展注意自编码器的改进地震相分析自动化。会议:2019 IEEE/CVF计算机视觉与模式识别研讨会(CVPRW)
[3]耿震,王勇,王志强。具有多尺度滤波器的卷积神经网络的自动化设计,用于经济高效的地震数据分类.国家公共11,3311(2020)。https://doi.org/10.1038/s41467-020-17123-6
|
  • 打印
  • 发送电子邮件

评论

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