基于U-Net的岩层图像裂缝检测算法应用
2021-06-03赵慧杰武苏雯
刘 鑫,赵慧杰,武苏雯
(1.中原工学院 计算机学院,河南 郑州 450007;2.武汉天宸伟业物探科技有限公司,湖北 武汉 430071)
0 引 言
裂缝是一种常见的地质构造现象,是由于岩石层受力后变形,力达到或超过岩石层的强度极限,破坏了岩石层的连续完整性,并在岩石层的某个位置和方向断裂,对工程建设影响较大,特别是对隧道及地下工程的稳定性影响更大[1]。传统的裂缝检测方法主要采用人工识别并手动标记裂缝参数,这种处理方法不仅费时,效率低下,而且容易出错,特别是在大量样本的情况下,裂缝检测的精确度将会大大降低。而岩层裂缝图像本身就存在样本数据有限、背景复杂等特点,容易受到地理位置、岩层结构等因素的影响,这些都会不定量地增加传统方法的检测难度。因此,及时准确地提取岩层裂缝的有效特征,对岩层裂缝进行快速检测,成为推动科研发展有序前进的动力。
随着人工智能技术的飞速发展,隧道及地下工程的检测技术在不断更新,使用深度学习技术和图像处理技术检测裂缝图像,可提高工程建设的安全性。国内外科研人员致力于这一领域的研究,取得了一定的科研成果。例如,文献[2]从路面裂缝检测过程中背景裂纹的复杂性和强度不均匀性出发,提出了一种基于深度学习的裂缝检测方法;文献[3]针对在复杂背景下用图像处理技术检测民用基础设施缺陷时的局限性问题,提出了一种基于卷积神经网络深度学习的视觉裂纹损伤检测方法;文献[4]针对基于人工视觉的路面裂缝检测系统检测误差大、实施风险高等问题;提出了一种基于图像处理技术的道路裂缝自动检测方法;文献[5]针对隧道图像存在噪声多、对比度低和光照不均匀等问题,提出了一种基于深度学习网络Faster R-CNN的隧道图像裂缝检测方法。
针对复杂背景下的岩层裂缝,实现裂缝的快速检测,该文基于传统的U-Net网络,拟加入批量归一化层和修正线性单元激活层,用深度可分离卷积替代普通卷积,并改用均方误差损失函数加以优化,通过对比不同结构模型的岩层图像裂缝检测效果,验证该算法的可行性和有效性。
1 基于U-Net的岩层图像裂缝检测算法
以武汉天宸伟业物探科技有限公司提供的岩层图像为数据源,算法分为4个步骤,主要包括图像采集、数据增强、图像预处理以及基于U-Net网络的岩层图像裂缝检测,基本流程如图1所示。
图1 基于U-Net的岩层图像裂缝检测算法基本流程
1.1 图像采集
考虑到岩层图像采集的特殊性与复杂性,原始图像均由武汉天宸伟业物探科技有限公司提供。该公司生产的TS-C1201(B)高清多功能钻孔全景成像分析仪,是一款对钻孔进行全面检测的高科技设备,其中包括成像分析仪主机、探头、深度测深滑轮等主要部件。该产品集成了钻孔拍照、录像、成像和轨迹测量等功能,它可以同时获得钻孔动态录像视频、局部高清照片、全孔壁平面展开图和钻孔空间轨迹图。在图像采集过程中,随着探头不断往孔内行进,整个孔壁会自动匹配并拼接成完整的平面展开图像,并在展开图中截取实验所需的图像,大小均为512 px×512 px。
1.2 数据增强
在训练时,经常会因原始数据集不足出现过拟合等问题,因此需对数据集进行数据增强处理,这样有助于增加数据集的量,防止学习到不想要的模型,有效减少过拟合,从而得到泛化能力更强的网络模型。考虑到数据增强方法中的对比度增强、亮度增强和颜色增强等方法对岩层图像影响不大或偏离实际,故只采用随机旋转与平移的方法处理原始图像,选择包括原图在内的11张有效图像,生成11倍数据集,再加入一定量的无裂缝图像,构成名为RFID(rock formation image dataset)的数据集,数据增强效果如图2所示。
图2 岩层裂缝图像数据增强效果
1.3 图像预处理
图像预处理是为了减少噪声,提高图像质量,在原始图像中尽可能保留裂缝的特征信息,有效提高裂缝的可检测性,最大程度地简化数据,并提高特征提取和图像分割的可靠性[6]。
先使用加权平均法[7]进行灰度处理,过程中对原始图像中的RGB三分量进行加权平均来获得更合理的灰度图像,计算公式如下:
Gray(i,j)=0.299R(i,j)+0.587G(i,j)+
0.114B(i,j)
(1)
式中,(i,j)表示像素坐标点。
再使用自适应中值滤波[8]进行去噪处理,有效滤除图像中存在的噪声,处理过程如图3所示。可以发现,预处理后的岩层图像能更好地保留裂缝的特征细节,提高检测效果。
图3 岩层图像的预处理过程
1.4 改进的U-Net网络
U-Net网络是一种改进的全卷积神经网络模型,网络中没有全连接层,可以检测任何大小的图像[9]。考虑到U-Net网络主要用于生物医学图像的检测[10],为了更好地提高检测效果,该文对U-Net网络结构进行改进,完成对岩层图像的裂缝检测。
1.4.1 批量归一化(batch normalization)
在卷积网络中,下一层的输入就是上一层的输出,在使用随机梯度下降法训练网络模型时,每次参数的更新都会使网络中每层的输入分布发生变化。为了解决这一现象,加入了批量归一化层,对每一层卷积网络进行归一化处理,使得每一层输入的分布在训练过程中保持一致,防止过拟合,其前向传导过程公式如下:
(2)
(3)
(4)
1.4.2 修正线性单元(rectified linear unit)
修正线性单元是机器学习中常用的激活函数,它负责从输入端到输出端映射网络中的神经元,并将非线性因素引入网络。相比于Sigmoid和tanh函数,ReLU函数具有稀疏性,能使网络训练更快,减少过拟合,加速收敛,最终达到更好的分割效果[11],其计算公式如下:
(5)
式中,x表示输入神经元。
1.4.3 深度可分离卷积(depthwise separable convolution)
深度可分离卷积分为两个过程,第一个过程是将深度信息分离,第二个过程是使用1×1的卷积进行通道融合,还原到目标尺寸,将普通卷积与深度可分离卷积的结构进行对比,如图4所示。
图4 普通卷积与深度可分离卷积的结构对比
可以看出,深度可分离卷积在使用大量的1×1卷积后,可以直接利用高度优化的矩阵乘法来完成计算,从而大大减少了参数数量,并提高了计算效率[12]。
1.4.4 损失函数
计算损失函数的大小是训练过程的主要依据,也是判断训练后算法质量的重要标准[13]。原始U-Net卷积网络采用的是二值交叉熵(binary cross-entropy)[14],一般用于二分类,是一个针对概率之间的损失函数,经过多次模拟实验发现该损失函数并不能使损失值达到最佳,故替换成均方误差(mean squared error)[15]来降低训练过程中的损失值,其计算公式如下:
(6)
1.4.5 U-Net网络的改进
岩层图像的裂缝检测模型结构如图5所示,整个网络共有19个卷积层,区别于传统的U-Net网络,改进的U-Net网络在每个卷积层中加入了批量归一化层和修正线性单元激活层,并用深度可分离卷积代替原来的普通卷积,增强了网络性能,加快模型学习速度,得到一个更快、更小的检测网络;模型采用Adam算法进行优化,损失函数改用MSE,进一步降低训练过程中的损失值,实现梯度参数的更新[16]。
图5 改进的U-Net网络结构
2 实验结果与分析
2.1 实验设置
2.1.1 环境设置
实验环境是基于深度学习模型TensorFlow的高阶API:tf.keras,并结合Python编程语言搭建的。实验数据在Kaggle平台上运行,环境配置如下:操作系统为Windows10;GPU为Nvidia Tesla P100-PCIE-16 GB 1.328 5 GHz;CPU Frequency为2.3 GHz;RAM为14 GB;Disk为5.2 GB。
2.1.2 参数设置
实验采用Adam算法对模型进行优化,设定学习率为0.000 1;加入的批量归一化层动量设定为0.99;为了防止模型在训练的过程中存在过拟合问题,Dropout的大小设定为0.5;考虑到每个GPU处理的图像数量和GPU数量,模型的批量大小设定为5。而对于训练次数的话,考虑到如果训练次数太少,模型无法很好地拟合训练数据的分布而容易出现欠拟合状态;如果训练次数太多,模型则过度依赖训练数据的分布而容易出现过拟合状态,因此通过分析损失值和精确度与训练次数的关系,来确定训练次数。图6为模型训练中损失值和精确度与训练次数的关系,从图中可以看出,模型的损失值随着训练次数的增加而降低,精确度随着训练次数的增加而升高,当训练次数超过40时,两者趋于稳定,因此实验中的训练次数设置为40。
图6 损失值和精确度与训练次数的关系
2.1.3 数据集设置
从RFID数据集中筛选5 000张经过预处理的有裂缝图像,按照4∶1的比例分为训练集与测试集,并在测试集中放入少量无裂缝图像,其中,训练集用于训练模型,测试集用于验证模型的性能。最后,使用Adobe Photoshop软件对裂缝图像进行裂缝标注,生成与图像尺寸一致的裂缝轮廓标签。
2.2 结果对比分析
为了验证模型的检测性能,将其与U-Net、U-Net+MSE、U-Net+BN、U-Net+DSC四种结构模型进行对比,并对实验结果进行分析。
2.2.1 评估参数对比
实验过程中将损失值与精确度作为评估参数,对五种结构模型进行评估,绘制评估参数变化趋势对比图(如图7所示)与评估参数训练数据对比表(如表1所示)。从图表中可以看出,该算法模型的损失值和精确度均优于其他四种结构模型,并使得模型损失值降到0.009 1,精确度达到0.994 3,对比可知该模型的收敛速度更快,检测精确度更高。
图7 评估参数变化趋势对比
表1 评估参数训练数据对比
注:*表示训练次数,loss表示损失值,acc表示精确度。
2.2.2 检测效果对比
在实验中分别训练五种结构模型,对检测结果进行对比,得到各模型的裂缝检测效果图(如图8所示),其中第一列为输入的岩层裂缝图像,第二列为标签,第三至六列为对比模型检测结果,最后一列为文中算法检测结果。相比之下,提出的基于U-Net的岩层图像裂缝检测算法能更有效地提取裂缝特征,在针对岩层图像的裂缝检测过程中鲁棒性更高,具有更好的检测性能。
图8 裂缝检测效果对比
3 结束语
针对岩层图像裂缝检测问题,提出了一种基于U-Net的岩层图像裂缝检测算法。在原始U-Net网络的基础上,加入了批量归一化层和修正线性单元激活函数层,并使用深度可分离卷积取代原来的普通卷积,进一步增强网络性能,减少过拟合,加快模型学习速度;同时结合Adam优化算法,改用MSE作为模型训练中的损失函数,以降低损失值,提高模型检测精确度。实验结果表明,提出的算法与其他结构模型相比,收敛速度更快,精确度更高,有更好的分割效果,实现了对岩层图像的裂缝检测,体现了深度学习中U-Net网络对岩层图像裂缝检测的可能性。但实验本身还存在一些检测不完全的问题,针对这一问题,拟在后期工作中加入滑动窗口技术,对图像进行整体扫描,获取更多的有效特征,实现更全面的岩层图像裂缝检测算法。