基于深度学习的碳酸盐岩颗粒分类识别
2023-11-09杜崇娇余晓露彭金宁马中良
杜崇娇,余晓露,彭金宁,马中良,王 强
(1.中国石油化工集团公司 油气成藏重点实验室,江苏 无锡 214126;2.中国石油化工股份有限公司 石油勘探开发研究院 无锡石油地质研究所,江苏 无锡 214126)
碳酸盐岩主要有颗粒、泥、胶结物、晶粒、生物格架5个基本组成部分[1-2]。碳酸盐岩的结构组分与岩石的沉积环境、成岩后生作用存在紧密联系,在一定程度上可以反映出岩石的成因特征,它不仅是岩石重要的鉴定标志,而且是碳酸盐岩分类和命名的关键依据。因此,碳酸盐岩的结构组分特征历来是研究碳酸盐岩的重要内容。
传统的碳酸盐岩结构组分研究方法是将样品切成薄片,通过偏光显微镜对其进行观察,根据镜下呈现的形状、结构、大小、圆度等特征对结构组分进行鉴定,不同组分在薄片中具有不同的鉴定特征。然而,传统的人工鉴定方法具有耗时长、效率低的缺点,而且由于人的主观性强,给识别工作带来了较多不必要的错误。
随着人工智能技术的快速发展,图像识别在导航、地图与地形配准、自然资源分析、天气预报、环境监测、生理病变研究等许多领域广泛应用[3-5]。人工智能的核心领域是机器学习,而深度学习作为机器学习中的一项新兴技术[6],其概念是由G.E.Hinton等[7]提出,思想在于通过模仿人类思维对数据进行学习与解释。深度学习因其强大的特征提取能力、良好的迁移和多层学习能力,在信息检索和图像分析等领域均得到了广泛应用,并取得了卓越的成就。
近年来,国内外许多学者运用深度学习的方法开展了岩石样本自动识别分类的研究工作,有些研究人员采用深度学习方法对岩石或矿物标本图像进行分类。如张野等[8]以Inception-V3深度卷积神经网络模型为框架基础,构建出岩石图像集分析的深度学习迁移模型,可以有效识别花岗岩、千枚岩和角砾岩;冯雅兴等[9]提出了一种基于岩石新鲜面图像与AlexNet网络的孪生卷积神经网络模型,通过孪生卷积神经网络提取图像的全局特征和局部特征信息,然后将特征信息进行融合用来识别岩性,识别精度达89.4%;谭永健等[10]提出了一种基于Xception网络的自动化岩石图像分类方法,使用深度可分离卷积模块替换Inception-V3网络中的卷积操作,同时导入残差连接机制,很大程度上减少了模型参数与计算量,最后再借鉴迁移学习思想,提高了图像分类准确率。有些研究人员对岩石或矿物显微图像进行高维特征提取,进一步提高岩石鉴定的精度和效率。刘烨等[11]基于图像的色彩空间和形态学梯度,构建了特征空间,并运用SVM方法实现了100幅岩石薄片图像的智能自动化分类;Hossein Izadi等[12]构建了矿石薄片识别系统,通过分析矿石薄片的颜色和纹理特征,利用神经网络取得了不错的分类效果;徐述腾等[13]以TensorFlow系统为基础,建立了一种有针对性的U-Net卷积神经网络模型,通过在矿相显微镜下自动提取矿石矿物的深层特征信息,从而实现了镜下矿石矿物的智能识别和分类;Maitre Julien等[14]提出了一种基于计算机视觉和机器学习对矿物特征向量进行分类的方法,同时使用超像素分割替代传统方法,有效分割出光学显微图像中的颗粒;符甲鑫等[15]通过参考Inception网络中局部特征结构,在残差模块中引入多尺度特征提取,允许感受野在更细粒度级别上捕捉岩石细节特征与全局特征,同时对多尺度特征提取后的特征图进行空洞卷积,提取岩石的全局特征,提高了岩石识别分类的精度。
综合国内外的研究现状可知,目前针对岩石图像识别技术的研究,少见到对碳酸盐岩鉴定工作的报道,这主要是由于碳酸盐岩的形成涉及波浪和流水作用,生物和化学作用、交代作用、机械侵蚀作用等多种复杂的沉积和成岩作用,与其他岩石相比,碳酸盐岩的结构组分类型和物理排布方式均呈现出极强的随意性特征。但是,对碳酸盐岩结构组分进行人工鉴定所依据的形状、结构、大小、圆度等均属于形态学特征,是适合进行图像识别研究的。如果能利用人工智能深度学习技术对碳酸盐岩薄片图像进行处理,并对碳酸盐岩的结构组分进行分析,将具有实际的应用价值和广阔的研究前景。
1 碳酸盐岩颗粒分类
碳酸盐岩中的颗粒,是指在沉积盆地内由化学沉积作用、机械破碎作用、生物作用以及这些作用综合形成的颗粒。自20世纪60年代以来,在古代碳酸盐岩沉积相研究中,学者们基于成因、形态、结构、大小等对碳酸盐岩颗粒进行命名的种类繁多[1-2,16-17]。本研究从图像角度总结了各类颗粒的纹理特征,再综合考虑成因、常见程度等因素,将岩石薄片中常见的碳酸盐岩颗粒划分为5个大类:(1)生物碎屑:微体生物化石和骨架生物化石,以及生物碎屑;(2)内碎屑:盆地内固结或半固结的碳酸盐沉积物经波浪、潮汐等作用剥蚀出来并再沉积的碎屑,按照直径大小可以分为粉屑、砂屑、砾屑等;(3)包粒:以鲕粒、豆粒、核形石等为代表的带有包壳的颗粒,部分成因与藻类有关;(4)球粒:由泥晶碳酸盐矿物组成,圆形、内部结构均匀、表面光滑的颗粒,常集中产出;(5)团块:具不规则外形的复合颗粒,内部可包裹生物或其他颗粒,其成因多与藻类有关。主要碳酸盐岩颗粒类型及亚类示例如图1所示。
图1 碳酸盐岩常见颗粒类型Fig.1 Common grain types in carbonate rocks
2 研究技术与方法
2.1 技术流程
传统的机器学习在岩石图像识别方面存在算法耗时过长,人工提取特征的复杂度高,以及网络深度较大时会出现梯度消失或爆炸[18-19]等问题,本文提出一种基于深度学习的碳酸盐岩颗粒类型识别方法,具体流程如图2所示。
图2 技术流程示意图Fig.2 Schematic diagram demonstrating the overall structure of the model
(1)由于深度学习方法是数据驱动的,因此需要收集一批碳酸盐岩颗粒图像,并对其中的颗粒进行标注,形成碳酸盐岩颗粒数据集,为后续的卷积神经网络提取图像特征提供数据基础。
(2)设计模型和训练模型。本研究采用ResNet50模型。先在Tensorflow框架下对其网络结构进行了改进,再设计一定的训练策略,将数据集中的数据输入模型中进行迭代计算,并通过反向传播偏差来修正模型权重,以得到最优参数。
(3)将待测碳酸盐岩薄片图像中的颗粒所在区域框选出来,处理之后输入到训练好的模型中,经过模型计算得到输出结果,即为颗粒识别结果。
2.2 ResNet50模型
卷积神经网络(convolutional neural networks,简称CNN)是一种多层的监督学习神经网络,是深度学习的代表算法之一,近年来在图像处理方面有出色表现。类似于人类在图像理解方面的分层认知过程,首先人眼提取颜色、几何形状、纹理等特征,然后人脑被激活,对各种特征信息分别进行处理和解释,最后形成整幅图像的概念,卷积神经网络的结构和信息理解过程也是分层进行的。典型的卷积神经网络通常由3种层结构组成:卷积层(convolution)、池化层(pooling)和全连接层(fully connected)。卷积层通过卷积操作对输入数据进行特征提取,池化层降低卷积层输出的特征维度以减少网络参数并提高计算速度,全连接层则通过对多次卷积和池化后高度抽象化的特征进行整合,并根据整合特征完成模型的分类功能。
卷积神经网络的网络训练主要分为两部分:前向传播和反向传播。前向传播利用卷积层与池化层对样本特征进行提取,再运用全连接层对特征进行整合以得到输出的最终向量;反向传播通过溯源损失函数的计算误差,以梯度更新的方式来指导模型参数的更新优化,提升模型训练效果。但是,这种基于反向传播优化神经网络的方法存在明显的弊端,当模型权重初始化值较大时,随着网络层数的加深,对激活函数求导计算出的梯度更新将会以指数级的形式增加或衰减,容易引发梯度爆炸或梯度衰减。因此,学者们提出批标准化(batch normalization)方案[20],通过将每一层网络的输出规范为同样的均值和方差,解决了梯度问题,在几十层的网络上可以正常收敛,但当网络加深到一定程度时,又出现了退化问题,即模型的性能并不会随着网络层数的加深而变好,反而会达到饱和甚至下降。
深度学习的网络退化问题说明模型训练难度很大,但是由浅层网络堆积获得深层网络时,即使这些层不学习特征,仅仅进行特征复制,即连接形成恒等映射,深层网络也可以维持其基本性能,不会出现退化问题。基于此思想,He K.M.等人[21]提出残差网络ResNet,对于一个残差块结构,当输入为x时,设学习特征为H(x),设残差特征为F(x),有
F(x)=H(x)-x
则学习特征为:
H(x)=F(x)+x
当F(x)=0时,残差网络起到恒等映射的作用;当F(x)≠0时,残差块就能学到新信息,并通过反向传播提高网络性能。残差网络的主要结构使用了快捷连接(shortcut connection)(图3),通过在卷积层之间添加跳跃连接,允许信息跨层传递,这样便保护了信息的完整性,避免了随着网络层数的加深出现学习退化的现象。
本研究对经典的ResNet卷积神经网络模型结构进行了改进(图4),模型主体可以分为5个部分,第一部分包括卷积层、批标准化处理和最大池化层;第二到第五部分主要为残差块,内含多个卷积层,且每个卷积层之后都使用Relu激活函数;第五部分之后为全局平均池化层,最后再连接全连接层。第二到第五部分2种残差块的结构单元有所不同,其中残差块Ⅰ代表改变维度的残差块(convolutional block),输出维度相对于输入维度增加一倍;残差块Ⅱ代表不改变维度的残差块(identity block),输出和输入维度一致。模型中每个部分包含的残差块数量也有所不同,第二和第五部分包含2个残差块Ⅱ,第三部分包含3个残差块Ⅱ,第四部分包含5个残差块Ⅱ。由于每个残差块都是三层卷积,因此ResNet50模型中共包含1+3×(3+4+6+3)=49个卷积层,再加上最后的全连接层,一共为50层。
改进的ResNet50模型在最后1个卷积层之后使用全局平均池化层(global average pooling,简称GAP)来代替传统的平均池化层(average pooling)。这种CNN+GAP的结构可以将所有特征图的空间尺寸降为1,并保留通道数目,使得最终的全连接层只需处理少量平坦的特征图,而不是大型张量,从而减少模型参数和计算成本,同时降低过拟合风险。此外,全局平均池化层会对每个通道中所有位置的特征值求平均值,这种特性可以强制网络学习更具区分性的特征,提高模型的泛化能力,从而使其在新数据上表现更好。
ResNet50模型输入图像尺寸指定为224×224×3。经过5个部分的卷积计算,再通过全局平均池化层将计算结果转化为特征向量,最后进入全连接层,再经过Softmax分类器,将该特征向量转化为1×1×5向量,即输出为类别概率。
2.3 Softmax分类器
分类问题中使用的Softmax函数,是一种将目标变量分为多个类别的算法,它先接受全连接层输入的特征矩阵,然后再输出目标所对应的每个类别的概率值。Softmax分类器将其输入归一化为1组概率值P,其数学表达式为:
式中:Zi——模型最后一层的输出;i——类别索引;j——类别;C——类别总数。
输出的概率满足:
式中:Pi——第i组概率值。
3 实验分析
3.1 制作数据集
深度学习技术在图像处理领域取得了众多优异的成果,但需要依赖大量的数据进行训练,因此收集和制作碳酸盐岩颗粒显微图像数据集具有重要的意义。
本研究首先筛选了一部分具有典型特征的碳酸盐岩颗粒薄片图像,再请地质学专家采用Labelme工具将图像中的典型颗粒区域框选出来,并进行标记命名。不同颗粒的子图像从原图中提取出来之后,使用每种颗粒的类别名作为子图像的类别标签,即获得550张带有标签的碳酸盐岩颗粒子图像。
由于碳酸盐岩薄片图像在拍摄时受到偏光显微镜光源、放大倍数、摄像头分辨率等多种因素影响,图像质量差异较大,因此还需要采用去噪、增强等方法进行处理,既要使碳酸盐岩颗粒所在区域保持良好的边缘和纹理,又要增强图像中颗粒区域和背景区域的灰度差异,本研究中采用的图像去噪方法主要为双边滤波算法,图像增强方法主要为直方图均衡化算法。图5-A是一张碳酸盐岩颗粒显微图像原图,经过图像去噪和图像增强预处理过程之后得到图5-B,可以看出清晰度和对比度得到明显改善。
图5 图像预处理对比图Fig.5 Comparison of image preprocessing
为了提升数据的泛化性,还需要通过旋转、翻转、缩放、调换颜色通道等方法对数据进行增强,将550张图像扩展到2 200张。为了保证数据适合模型输入,经过图像预处理和数据增强之后,所有图像的分辨率最后都需要被重置为224×224像素,这样即得到碳酸盐岩颗粒显微图像数据集。
3.2 训练模型
本研究使用TensorFlow框架构建模型,并在具有一片RTX2080TI型号GPU的高性能计算机上进行训练。
首先将碳酸盐岩颗粒显微图像数据集划分为2类,80%为训练集,20%为测试集,再将训练集中的图像逐个送入模型进行计算,并反向传播偏差来修正模型权重。
模型训练过程中采用SGD进行网络参数优化,模型训练的参数设置为:模型初始权重参数设置从均值为0,标准差为1的正态分布中随机取值;模型学习率初始为0.001,并使用学习率梯度下降策略(每迭代10轮便将学习率乘以系数0.3);模型计算测试集上的准确率来作为衡量模型性能的标准;模型的输出层使用Softmax函数,其他层的激活函数使用Relu激活函数,在全连接层添加Dropout操作,随机失活30%的神经元。模型将训练集中所有数据迭代计算200轮,并采用早停策略(early stop),即当测试集在模型上的准确率经过N轮迭代后没有提升便停止训练。
3.3 碳酸盐岩颗粒显微图像识别过程
基于深度学习的碳酸盐岩颗粒显微图像识别研究具体识别过程如图6所示。将1张碳酸盐岩薄片原图像中的典型颗粒用Lableme工具框选出来,运用计算机程序处理框选出来的典型颗粒生成多个子图像。然后将子图像进行预处理操作,并将分辨率重置为224×224像素,再输入到已经训练好的模型中,经过前向传送输出结果,输出结果的形式为一组特征向量。通过查找向量中的最大值,找到最大值当中对应的下标位置,在碳酸盐岩颗粒类别索引文件中找到对应的颗粒类别,即得到该子图像的颗粒识别结果。直到所有子图像识别完毕,即完成该张碳酸盐岩薄片原图像的识别。
图6 基于深度学习的碳酸盐岩颗粒显微图像识别示意图Fig.6 Schematic diagram of microscopic image recognition of carbonate rock particles based on deep learning
3.4 实验结果及分析
为了具体评价碳酸盐岩每种颗粒的识别效果,采用混淆矩阵来表示测试集预测类与真实类的对应关系。混淆矩阵是将真实值与预测值匹配以及不匹配的项一起放入到矩阵中,可以直观地将分类结果的好坏展示出来。
图7中每一列代表预测的碳酸盐岩颗粒类别,且每一列的总数代表预测为该类别的颗粒数目;每一行代表颗粒的真实类别,每一行的总数代表了该类别碳酸盐岩颗粒的真实数目。测试集总共有440张碳酸盐岩颗粒图像,其中121张生物碎屑图像识别错误的有4张,112张内碎屑图像识别错误的有7张,111张包粒图像识别错误的有5张,27张球粒图像识别错误的有3张,69张团块图像识别错误的有3张。
图7 混淆矩阵Fig.7 Confusion matrix
通过图7可以清楚地看出生物碎屑、内碎屑、包粒、球粒、团块5种碳酸盐岩颗粒的真实数量、预测数量、识别错误数量,通过这些数据可以计算各种颗粒的识别准确率(表1),即用每类颗粒正确识别数量除以该类颗粒样本总量。计算出的5种颗粒的准确率分别为生物碎屑96.69%,内碎屑93.75%,包粒95.50%,球粒88.89%,团块95.65%,可以看出球粒是最容易被识别错误的。
表1 混淆矩阵识别数量表Table 1 Number of identified confusion matrices
从模型训练结果图(图8)中可以看出,在前10次迭代过程中,训练准确率上升较快,损失值下降也很快,在40次迭代之后,训练准确率呈平稳上升趋势。经过200次迭代训练,模型的准确率在训练集上超过99%,在测试集上达到95%;当模型迭代到190次时,模型的损失值在训练集上趋于零,在测试集上降到了0.08以下。该模型收敛速度较快,识别精度高,对图像识别效果好。
图8 模型训练结果图Fig.8 Diagram of model training results
4 结 论
a.本文提出一种基于深度学习的卷积神经网络模型,以ResNet50为基础框架搭建模型,并通过制作数据集、训练模型等步骤实现模型功能和进行优化,优化后的模型可以实现碳酸盐岩主要颗粒类型显微图像的分类识别。
b.采用混淆矩阵对模型性能进行评价,实验结果表明,模型收敛速度较快,识别精度较高,在测试集上的准确率可达到95%。
c.该方法表明,采用卷积神经网络对碳酸盐岩颗粒进行智能识别具有一定的可行性,可为碳酸盐岩微相分析提供新方法,也可作为一种辅助人工鉴定的有益方法,具有一定的实际应用价值。
d.由于现有的样本数据量有限,数据集中所涵盖的类别不完全,并且数据分布不均衡,因此目前仅将碳酸盐岩颗粒划分为少数几个大类进行研究。对复杂的碳酸盐岩颗粒类别,后续可通过扩充数据集、精细分类等方式来进一步提升应用价值。