基于改进Mask-RCNN 的路面裂缝检测
2022-07-14游江川
游江川
(昆明理工大学 信息工程与自动化学院,云南 昆明 650500)
0 引言
如今,随着城市建设的不断扩大和公共基础设施的迅速发展,行车道路越来越多,因此,为路面保养维护提供有效支持愈发重要。路面裂缝是路面缺陷问题之一,路面使用时间过长、材料老化和环境条件是导致产生路面裂缝的主要因素[1-2]。如果不及时处理路面裂缝,这些裂缝可能会不断扩大,损害道路的完整性,造成路面大范围性断裂等问题[3]。因此,定期检查并在问题进一步严重之前进行路面修复极其重要。基于技术的不断发展,如今可以利用专门的车辆或无人机对路面进行拍摄并收集大量图像信息[4-5],而如何有效地利用这些海量的图像数据并得到准确的路面裂缝检测结果,是目前面临的一项挑战。路面裂缝以形状不同的网格横向或纵向出现在路面上,不同条裂缝长宽大小不一,且同一条裂缝不同部位的宽度也不尽相同。另外,由于路面有交通标记、污渍和少许植被的情况,导致技术人员仅凭肉眼观测裂缝的结果不够准确。
随着科技的进步与图像处理技术的深入研究,出现了许多路面裂缝检测方法。早期的自动化检测裂缝方法有阈值法[6]、边缘检测法[7]以及基于机器学习的方法[8],但是这些方法容易受到光照、污渍、石子等干扰因素的影响,裂缝检测的效率和准确度不高。随着深度学习的迅速发展,基于神经网络的路面裂缝检测方法逐渐成为研究和实际应用的首要选择。文献[9]通过在神经网络中融入注意力机制,使更多图像信息加入网络模型训练中,但同时也会将图像背景中与路面裂缝图像特征相近的噪声特征引入,使检测结果受噪声的影响较大。文献[10]通过使用卷积神经网络(Convolutional Neural Networks,CNN)预测图像中每一像素所属的类别,但同时需要人工设计的特征提取器进行预处理步骤,并且网络对输入图像的大小有一定要求,使得其在实际应用中的效率不高。文献[11]使用基于全卷积神经网络(Fully Convolutional Network,FCN)对物体表面的裂纹进行检测,但平均交并比(Mean Intersection over Union,MIoU)最高只达到了52.16%,检测结果不够理想。为提高路面裂缝检测的效率以及鲁棒性,本文提出一种基于Mask-RCNN 网络[12]的路面裂缝自动化检测方法,并在其基础上进行改进,分别对区域候选网络(Region Proposal Network,RPN)和特征金字塔(Feature Pyramid Networks,FPN)网络进行改进以更适用于本文路面裂缝数据集,并增加了后处理模块,进一步提升路缝检测效果。
1 Mask-RCNN 算法
1.1 算法原理
Mask-RCNN 算法由基础网络、区域候选网络(Region Proposal Network,RPN)、分类网络以及掩码分割网络组成。基础网络是由去除全连接层的残差网络组成的,并利用特征金字塔(Feature Pyramid Networks,FPN)对图像进行再次采样,将两者特征图融合,输出具有不同深度的特征图,使特征图具有更为完整的图像信息以便后续操作。RPN 的作用是为了在生成的候选框内使用训练好的参数为分类网络提供感兴趣的候选区域对齐层(Region of Interest Align,RoIAlign)。RPN 的输入为经过特征提取后的特征图,在特征图上生成许多候选框。RPN 首先对候选框实现二元类别判断以及边界框的预测,然后利用非极大抑制方法对候选框筛选,减少无效候选框并留下有效的候选框,提高之后要进行的分类网络、回归任务的效率。其中,RoIAlign 相较于RoIpooling 取消了量化操作,从而减少了因量化操作导致的错位对于算法精度的影响。分类网络的功能是预测RoIAlign 范围内检测目标的类别,并调整RoIAlign 位置,减少因RoIAlign 位置不准确造成对算法精度的影响。掩码分割网络的原理是凭借之前得到的RoIAlign 位置和分类网络的结果,对待检测目标逐像素地分类出目标所属类别。
1.2 损失函数
Mask-RCNN 算法的损失函数如下:
式中:Lcls代表检测框的分类误差,Lbox代表检测框的回归误差,Lmask代表掩码分割网络的误差。网络训练时,式(1)所示的损失函数将图像标签与预测结果逐像素地比较,将分类任务由Lcls分支完成,Lmask则使用Sigmoid 交叉熵损失函数来计算,这就是Mask-RCNN 算法检测结果优于一般的目标检测算法的一大特点。
2 Mask-RCNN 算法的改进
为提高Mask-RCNN 算法针对地面裂缝数据集的检测精度,本文对Mask-RCNN 算法进行改进。主要改进如下。
(1)对RPN 网络改进。本文针对路面裂缝数据集的尺寸大小,将原始RPN 网络的9 种大小不同的目标框改为64×64 和128×128 大小,改进后能提升对小的裂缝的检测效果,提升目标检测框的检出率。
(2)对FPN 网络改进。原始Mask-RCNN 算法使用自顶向下的方法将高层语义特征和低层语义特征相融合,以提高FPN 的分类能力。本文使用自底向上的方法缩短高层语义特征获取低层语义特征的路径,提升特征金字塔架构带来的精确定位能力。
(3)最后增加后处理模块,使用之前改进后的Mask-RCNN 算法定位出来的目标检测框,在检测框内使用自适应阈值法中的大津阈值算法来进一步区分路面裂缝和路面背景。
3 实验与分析
3.1 数据来源与实验环境
本文采用CRACK500 数据集[13-14]作为实验数据。该数据集由3 792 张训练集图像、696 张验证集图像以及2 248 张测试集图像组成。实验环境为:CPU 为Inter(R)Core i9-10900KF CPU @ 3.70 GHz,显卡为NVIDIA Geforce GTX 1080 Ti,32 GB 内存,系统为Ubuntu20.04.3LTS,开发环境为Pycharm,开发语言为Python,运算平台为CUDA10.0,深度学习框架为Cudnn10.0,机器学习库位Pytorch1.2.2。训练时采用Adam[15]作为优化器,初始学习率设为0.000 1,批大小(batch size)设为2,训练50 个epoch。
3.2 评价指标
本文采用召回率(Recall)、精确率(Precision)和F1 值(F1-score)对路面裂缝测试集图像进行性能评价,其计算公式如下:
式中:TP(True Positive)代表检测正确的裂缝像素点,FP(False Positive)代表检测出是裂缝的像素点事实上是裂缝背景的像素点,FN(False Negative)代表检测出是裂缝背景的像素点事实上是裂缝的像素点。
3.3 实验结果与分析
本文在CRACK500 数据集上与原始Mask-RCNN算法进行对比,评价指标Recall,Precision和F1 值的对比结果如表1 所示。裂缝检测实验结果对比如图1、图2 所示。
表1 裂缝检测结果对比
从表1 可以看出,本文算法的实验结果召回率(Recall)、精确率(Precision)和F1 值(F1-score)分别比原始Mask-RCNN 算法高6.47%,5.64%和6.07%,证明了本文对Mask-RCNN 算法改进的有效性。从图1 和图2 两张示例图的检测结果对比可以看出,本文改进的算法得到的检测结果能减少非裂缝类别的干扰,提升了检测准确度,性能优于原始Mask-RCNN 算法。
图1 示例一实验结果对比
图2 示例二实验结果对比
4 结语
本文提出一种改进的Mask-RCNN 算法对路面裂缝图像进行裂缝检测。本文分别对RPN 网络和FPN 网络进行改进,并增加了后处理模块。实验结果表明,与原始Mask-RCNN 网络相比,本文的方法可以提供更有效的检测,避免了背景噪声点的影响,并提升了检测精确度。尽管本文取得了不错的检测结果,但改进后的方法的检测时间较原始Mask-RCNN 网络有了一定的增加,因此,未来研究中在进一步提升检测精度的同时还需减少检测时间。