张 挺, 张 瑜, 杜 奕
(1.上海电力大学 计算机科学与技术学院, 上海 200090; 2.上海第二工业大学 工学部, 上海 201209)
国民经济的飞速发展刺激了能源的需求,页岩气作为新型天然气资源越来越受到重视[1]。为了评价页岩的含气性并对其勘探开发,研究页岩气储层的孔隙结构变得尤为重要[2-5]。直接获取页岩真实孔隙结构的方法分为两大类:物理实验法和数值重构方法。物理实验法包括连续切片法、扫描电镜法、X 射线CT 扫描、纳米CT[6-10]等。这些物理实验法可以得到高分辨率的真实页岩孔隙结构模型,但是这类方法成本高,实验过程繁琐,需要大量处理时间,不便于大规模应用。因此基于实际样品数据进行数值重构的方法成为页岩孔隙重构的重要手段。
数值重构方法是从真实岩石样本模型中提取对孔隙结构和分布有直接影响的关键信息,建立相似的孔隙结构,从而实现页岩图像重构。数值重构方法包括以下3种:一是过程法,模拟自然界岩石沉积胶结过程的重构方法;二是随机法,通过选取合适的岩石薄片图像的统计量来描述孔隙空间形态特性;三是多点地质统计法,使用多点统计信息进行重构,来获得岩石微观孔隙结构。
上述传统的数值重构方法需要大量的训练数据,CPU运行负荷大,运行时间较长,重构效果随机性强。近年来,深度学习算法兴起,卷积神经网络(Convolutional Neural Network,CNN)作为其重要分支在图像和视频处理领域得到广泛运用[10],但未应用于重构页岩微观结构的实验中。因此,本文提出利用CNN结合页岩软数据进行页岩内部结构重构,得到页岩的孔隙结构。
由于CNN对于数据具有强大的学习能力,能学习到数据更高维的特征,因此被广泛应用于图像处理。CNN的基础架构中,输入层直接获取图像数据,各节点不进行数学运算。隐藏层可以只有一层,也可以有很多层,数据在隐藏层中会经历加权求和,经过传输函数最终传递给输出层。输出层计算出最终结果。CNN的隐藏层并不全是全连接,各层神经元只连接到前一层的部分神经元。此外,同一层神经元之间连接的权值是共享的,这样可以在不影响学习效果的前提下,减少了参数的数量。
重构过程中,使用硬数据作为重构的输入数据。硬数据是随机截取的部分点的值,即部分空间值是空白的,这一情况无法对硬数据直接进行CNN的重构,因此使用可以反映页岩孔隙空间变化的软数据进行填充,以此作为输入数据重构页岩图像,最小化重构图像与目标图像的重构损失来优化模型参数。图1为网络模型的架构图。以80×80的软数据为例,首先经过6个大小为9×9的卷积核C1,以1为步长滑动,得到72×72×6的特征图。然后经过2×2大小的随机池化P1,对卷积特征降维。接着经过第二层卷积C2和随机池化P2得到14×14×16的局部特征,再将矩阵形式的特征映射扁平化为1×3136大小,加入随机失活(dropout)以防过拟合,输入fc1,fc2,fc3 3层全连接层获得全局信息。最后经输出层得到80×80页岩数据。
图1 CNN的总体架构
卷积层是由若干个卷积核连接起来的特征平面。这些特征平面中的所有神经元均以矩阵形式排列,卷积核以已知尺寸的随机数矩阵的形式进行卷积,对特征图组合进行局部感知,为后续更高层的全局信息的整合提供局部信息,这样可以在保留有用信息的同时有效减少网络的负荷。因为页岩图像某些部分包含相似的特征,提取特征时就可以将一部分已经学习到的特征用在另一部分上,意味着提取的特征与位置无关,可以在类似的位置上使用同样的学习特征,所以卷积核是权值共享的。这样可以降低模型复杂度,极大地提高CNN的运行速度。本次实验使用9×9大小的滤波器进行卷积,提取局部特性。对于卷积层的每一种输出的特征图有
(1)
式中:l——模型的层数;
f——非线性激活函数;
Mj——用来提取特征的图像数据;
子采样也叫作池化,基于局部相关性原理压缩数据和参数数量,但池化操作仅是对图像大小压缩,不改变特征的尺度,具有特征不变性。池化过程通常和卷积过程组合出现,池化层的每个特征映射都连接到其前一个卷积层的相应特征映射。池化过程与卷积过程类似,可视为一种不带权重的池化函数,以子采样层使用的特征映射区块尺寸从输入特征图的左上角开始按一定步长从左向右、从上到下进行池化操作。为了降低出现过拟合的概率,同时可以相对完整地保存局部特征信息,使用最大值池化和平均值池化组合的混合池化方法。最大值池化选取领域内的最大值,可以直接获取最显著特征,避免特征值的偏移,实际应用偏多。平均值池化对特征映射区域内的值求平均,用以保留图像的背景信息。对于混合池化的特征映射am,n,k有
yi,j,k=λmax(m,n)∈Ri,j(am,n,k)+
(2)
式中:λ——0或1的随机值;
Ri,j——特征映射中以(i,j)为中心块的区块。
经过以上的卷积和池化操作后,岩石图像的局部特征已经被提取出来,接着还需要将局部特征全局化。全连接层即是每层每个神经元都与其上一层所有神经元进行连接,用以整合局部特征获取全局信息。这一部分使用了以下两个函数。
(1) Sigmoid激活函数 其取值范围为0~1,公式为
(3)
(2) Tanh激活函数 其取值范围为-1~1,公式为
(4)
在训练任务中,给定样例集x(n),n∈[1,2,3,……,N],输入x经过卷积、池化等计算求得重构的结果y_,利用交叉熵(cross entroy)损失函数计算出y_与期望值y之间的差异,以损失函数最小化为目标函数进行参数优化。损失函数的计算公式如下
loss( )=-ylg(y_)-
(1-y)lg(1-y_)
(5)
为了更好地进行模型的自主学习,训练过程中对学习率进行了动态设定,使用了Adam算法[11]为参数设计独立的自适应性学习率。当目标函数震荡不收敛时,降低学习率;当目标函数收敛速度过慢时,增加学习率。
本次实验使用真实情况下页岩的三维图像作为训练样品。原始样品图像是圆柱状,从中截取了80×80×80体素的页岩图像作为目标图像。目标图像是指模拟者希望模拟实现的图像,实验时用作与计算结果进行对比的参照数据,从而验证模型参数的正确性。图2是目标图像。
图2 目标图像
重构页岩图像时,从截取的目标图像中随机采集了4%的点作为卷积神经网络输入使用的原始硬数据。这些点随机分布在三维立体空间中,无法保证一个卷积核大小的区域内点的个数相同且分布一致。为了便于CNN的运行,对硬数据使用简单克里金算法进行插值,插值得到的实际上是页岩数据分布情况的估计值,是一种80×80×80体素的“孔隙概率立方体”软数据。软数据是页岩图像中孔隙空间的概率值,取值范围是0~1的小数。这些数据总体能够比较准确地体现页岩孔隙空间的变化趋势。将得到的软数据作为CNN的输入。图3 是硬数据图,图4是软数据图。
图3 硬数据
图4 软数据
实验机器配置如下:处理器Intel(R) Core(TM) i5-3230M 2.60GHz,内存12G,操作系统Windows 7。设计实验模型为2层卷积层、2层池化层和3层全连接层的无监督CNN,输入页岩软数据重构页岩图像,输出重构结果,对重构结果进行二值化处理,阈值为0.5,最后得到二值化后的页岩重构图像。在重构实验中,常用外表面图、剖面图、孔隙结构图、孔隙度、变差函数和运行速率作为衡量指标。下面分别针对这几个衡量指标对本文方法与经典的多孔介质数值重构方法Snesim和Filtersim方法进行对比。
2.2.1 重构图像
图5是用卷积神经网络进行页岩重构所得图像的外表面图、剖面图和隐去骨架的孔隙结构图。图6是采用Snesim方法所得图像。图7是采用Filtersim方法所得图像。由图5~图7可以明显看出,CNN进行页岩重构所得图像更接近目标图像,重构效果更好。
2.2.2 孔隙度
孔隙度是指页岩中孔隙空间所占的比重,是评价岩石结构的重要参数之一。表1是目标图像和3种方法重构图像的孔隙度对比。由表1可以看出,CNN的页岩重构的孔隙度值比另两种方法更接近目标图像。
图5 CNN重构图像
图6 Snesim重构图像
图7 Filtersim重构图像
表1 目标图像和3种方法重构图像的孔隙度对比
2.2.3 变差函数
可以利用变差函数曲线直观显示出页岩结构在某个方向上的空间变化特征[12]。图8是目标图像与上述3种重构图像的变差函数曲线。由图8可以看出,显然CNN重构图像的变差函数曲线更接近目标图像,说明该模型的重构效果更好。
图8 目标图像和3种方法重构图像的变差函数曲线
2.2.4 CPU重构时间
表2是3种重构方法对内存的需求和CPU运行时间。由表2可以看出,Snesim和Filtersim方法对内存的需求略大于CNN,而CNN的运行时间远小于Snesim方法。
表2 3种重构方法所需最大内存和CPU运行时间
本文提出了一种结合软数据对页岩进行重构的无监督CNN模型。该模型的优势是权值共享减少了参数个数,使神经网络结构具有更强的适应性,并且减轻了内存负担,有效提高了重构速度。此外,该模型先对数据进行特征提取,基于特征向量对页岩进行重构,重构结果比较稳定。将该模型与传统经典多孔介质数值重构方法在孔隙度、变差函数、对内存的需求和CPU运行时间等方面进行了对比,证明了该算法能够较好地重构页岩图像。