一种基于深度学习的路面裂缝检测与分割方法
技术领域
本发明属于交通路面检测领域,涉及一种基于深度学习的路面裂缝检测与分割的方法。
背景技术
路面裂缝是很常见的一种道路病害,它对公路使用期限以及车辆行车安全均会产生严重的影响,因此,对路面裂缝进行检测也就具有十分重要的研究意义。随着近几年来人工智能技术的发展,采用深度学习对路面裂缝进行智能检测也取得了不错的成就。与传统裂缝检测方法相比,深度学习技术具有良好的模型泛化能力以及鲁棒性,并且检测精度较高,可用于复杂多样的路面情况中。
尽管近几年来对于路面裂缝检测与分割工作的研究有了一定程度的进步,但现有方法依然存在一些问题:1)实际路面裂缝的背景较为复杂,存在光照、阴影、路面污染等噪声影响,裂缝与背景之间的像素也可能出现相近的情况,这些问题都会导致裂缝识别的准确率不高;2)很多现有方法使用场景局限,完成任务单一,大都只实现了裂缝的检测或者分割任务,使用检测模型可以实现裂缝的定位,但不能计算裂缝长宽、面积等参数信息;使用分割模型能够对裂缝像素进行分割,但却无法定位裂缝位置以及区别裂缝条数。这种使用单一任务的模型(如检测模型或分割模型)只能完成路面裂缝的检测或是分割任务;3)当使用检测与分割的组合模型时,也会出现一些因裂缝像素分割结果的断裂而导致裂缝数目的错判问题,亦或是因检测模型准确率低造成检测框框不全裂缝,从而导致分割结果不完整的现象。
发明内容
为了解决现有技术存在的不足,本发明提供一种基于深度学习的路面裂缝检测与分割方法,解决了现有技术中存在的模型准确率不高、完成任务单一的问题,实现在裂缝定位的同时对生成检测框内的裂缝像素进行分割。
为了达到上述目的,本发明采用如下技术方案予以实现:
一种基于深度学习的路面裂缝检测与分割方法,Mask R-CNN模型可以将裂缝的检测与分割任务融合在一个网络模型之中,在实现目标定位的同时对生成检测框内的裂缝像素进行分割。但由于Mask R-CNN模型属于单阈值检测器,在进行多分类任务时为了考虑正负样本的均衡,把划分正负样本IoU(Intersection over Union,交并比)阈值设为0.5,这种划分方法其实并不适合裂缝目标的检测,对于裂缝这种一般存在于候选框对角线位置上的细长形目标,会因为背景的干扰而仅仅使很少一部分的裂缝目标作为正样本参与模型训练,这会导致检测结果出现大量误检进而使得定位不准,但直接提高IoU阈值又会使正负样本的分布不均衡,从而导致正样本数量减少而出现漏检现象。因此针对Mask R-CNN模型出现的检测不精准问题,本发明在其基础上对模型进行改进,引入多阈值检测的思想,提出了一种C-Mask RCNN模型完成裂缝的检测与分割任务,具体步骤如下:
步骤1,裂缝图像采集与预处理
使用智能检测车设备采集不同路面条件下的裂缝图像,采集的图像包含三种类别,分别为横向裂缝、纵向裂缝和网状裂缝;之后对图像进行去噪处理,由于智能检测车设备的相机拍摄的原始图像中包含噪声,噪声会影响后续模型对裂缝目标的特征提取,因此采用频域滤波的方式进行去噪,去除高频分量的噪声信息;
步骤2,图像标注
对去噪处理后的图像进行裂缝类别、位置及轮廓的标注,并将标注好的裂缝图像按照9:1的比例随机划分为训练集和测试集,用于后续模型的训练;
步骤3,构建C-Mask RCNN模型
在Mask R-CNN模型基础上,对模型中区域建议网络之后的部分进行改进,通过级联多个不同的划分正负样本IoU阈值检测器来逐步提高模型生成候选框的质量,从而实现高阈值下的裂缝精准定位;改进的C-Mask RCNN模型是由特征提取网络,区域建议网络和多层检测器构成;特征提取网络用于输入裂缝图像的特征提取,区域建议网络用于生成候选框,检测器会输出两部分结果,分别是裂缝的检测结果与分割结果,每个检测器都包含有池化层、全连接层、分类部分、边界回归部分以及掩膜分割部分,且每个检测器的输入都是上一个检测器经过边界回归生成的候选框输出,即第一个检测器输出的候选框连接第二个检测器的池化层,第二个检测器输出的候选框连接第三个检测器的池化层,以此类推,越靠后的检测器其设定的划分正负样本IoU阈值越大,这就能够使每个检测器只对某一个IoU阈值下的候选框进行检测,从而提升了候选框的质量和模型的训练效果;此外,每个检测器都会输出候选框内裂缝目标的掩膜M,将这些掩膜M串联来完成裂缝像素信息的交互,采用1×1的卷积核使当前检测器的掩膜Mi会与下一层检测器的掩膜Mi+1进行卷积,使Mi+1得到Mi的特征信息,从而实现每一层检测器输出的掩膜M信息进行融合,使裂缝像素的分割更为细致,实现高精度下的裂缝检测与分割;
f(x,b)=fT,fT-1,…,f1(x,b) (1)
公式(1)为级联多层检测器的模型架构,其中,f(x,b)表示整个模型的级联结果,fT(x,b)表示第T层检测器的输出,T为级联的个数,x为输入,b为输出的候选框,每个检测器对应本阶段的样本候选框bT,下一层得到的候选框bT会比前一层的候选框bT-1质量高;
由公式(1)可知,模型输出的结果是综合了各个层检测器的结果,越靠后的检测器输出特征在使用较前的检测器检测时,会因特征不匹配而造成准确率的下降,即当级联检测器数目过多时反而会出现检测性能降低的情况;因此,构建级联检测器的个数为三层;
随着检测器逐层回归,候选框与真实标签之间的IoU值也会有所提升,并且越靠后的检测器其生成的候选框与真实标签之间的差距会越小,从而导致候选框的提升质量也会越来越少;因此,为了减少候选框质量提升的缩小带来的影响,对设定每个检测器其IoU阈值采用曲线增长方式,每次递增阈值数依次缩小,设定值依次为0.5、0.62和0.72。
步骤4,训练C-Mask RCNN模型
将步骤2中划分好的训练集和测试集输入所构建的C-Mask RCNN模型中进行训练;
训练过程如下:
1)将训练集中的裂缝图像和图像对应的真实标签作为训练集输入模型;
2)设置训练集输入模型的权重、偏置和学习率,权重和偏置采用接近0的随机值,初始学习率设为0.0001;
3)使用优化器最小化损失函数,不断更新权重和偏置,得到模型的最优权重;
4)输入测试集图像对模型进行测试,计算模型准确率;
步骤5,设置C-Mask RCNN模型参数
分别选择不同的特征提取网络、优化器、以及模型中的阈值参数进行模型训练和对比,选择最优的一组结果作为模型的最终参数;C-Mask RCNN模型中有三个需要自行设置阈值的参数,分别是非极大值抑制阈值nms_thr、IoU阈值iou_thr和分割程度阈值mask_thr_binary,非极大值抑制阈值nms_thr用来控制使用非极大值抑制算法显示的候选框数量,IoU阈值iou_thr用来控制生成候选框的质量,分割程度阈值mask_thr_binary与检测框内裂缝的分割精细程度有关,该值越大,分割结果会越细致;
本发明将C-Mask RCNN模型中特征提取网络选择为ResNeXt101网络,模型训练的优化器设置为Adam优化器,学习率的设置采用动态调整的方式,初始学习率设置为0.0001,非极大值抑制阈值nms_thr阈值设置为0.5,IoU阈值iou_thr阈值设置为0.6,分割程度阈值mask_thr_binary阈值设置为0.5;
步骤6,输出裂缝检测与分割结果
C-Mask RCNN模型最终会输出两部分结果,分别是裂缝的检测结果和分割结果;将生成的裂缝检测与分割结果输出到图像上;
具体输出过程如下:
检测结果部分会生成检测框四个顶点坐标,将该检测框绘制在原始图像上作为裂缝的检测结果;分割结果部分会将原始图像中识别为裂缝的像素点进行储存,将这些裂缝像素点加上颜色绘制在原始图像上作为裂缝的分割结果。
与现有技术相比,本发明的有益效果是:
本发明在Mask R-CNN模型的基础上,对模型结构进行改进,提出了一种级联多阈值检测的C-Mask RCNN模型提高生成候选框的质量,实现对裂缝图像进行高阈值检测下的的精准定位和分割,通过实验发现,本发明方法具有较高的裂缝识别准确率。
附图说明
图1是本发明方法的整体框图。
图2a和2b是展示了两个横向裂缝的结果,每张图中显示了裂缝的检测与分割结果,图2c和2d纵向裂缝的检测与分割结果,图2e和2f是网状裂缝的检测与分割结果
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
步骤1:裂缝图像采集与预处理。
本发明使用智能检测车设备分别在校园和高速公路下采集裂缝图像,以满足不同路面和不同场景下的需求。采集的裂缝图像包含三种类别,分别为横向裂缝、纵向裂缝和网状裂缝,用于模型训练和测试的图像共6400张,其中横向裂缝2200张、纵向裂缝2200张、网状裂缝2000张,每张图像尺寸为1280×960像素。对采集到的裂缝图像采用频域滤波的方式进行去噪,通过离散傅里叶变换,去除高频分量的噪声信息,实现裂缝信息的增强和去噪。
步骤2,图像标注。
使用VIA标注工具对去噪处理后的裂缝图像进行裂缝类别、位置及轮廓的标注,并将标注好的裂缝图像按照9:1的比例随机划分为训练集(5760张)和测试集(640张),用于后续模型的训练。
步骤3:构建C-Mask RCNN模型。
为了解决Mask R-CNN模型这种单阈值检测器带来的检测不精准问题,本发明在Mask R-CNN模型基础上,对区域建议网络之后的部分进行改进,如图1所示,改进的C-MaskRCNN模型由特征提取网络、区域建议网络和三层检测器构成。图1中虚线框的部分为改进部分,将前一个检测器经过边界回归生成的候选框,送进下一个检测器之中,并且将每个检测器输出的掩膜M通过1×1卷积操作进行信息融合,以保证裂缝分割更为细致。
本发明分别级联3、4、5层检测器进行实验,实验结果如表1所示,其中[email protected]表示当IoU阈值设定为0.75时模型的准确率,[email protected]表示IoU设为0.5时的模型准确率,由结果可知,当级联检测器个数为3时,检测性能最好。
表1级联不同个数的检测器
本发明对设定三层检测器的IoU阈值采用线性增长和曲线增长两种方式进行实验对比,线性增长IoU阈值设为0.5、0.6和0.7,每次固定递增0.1个阈值;曲线增长IoU阈值设为0.5、0.62和0.72,每次递增阈值数依次缩小。表2为两种增长方式的对比,由结果可知,当检测器阈值提升采用曲线增长的方式时检测性能更好。综上所述,本发明采用级联三层检测器,IoU阈值设定分别为0.5、0.62和0.72。
表2不同IoU阈值增长方式对比
步骤4,训练C-Mask RCNN模型。
将步骤2中划分好的训练集和测试集输入所构建的C-Mask RCNN模型中进行训练,初始学习率设置为0.0001,采用动态调整方式,训练20个epoch,batch_size设为1,一共进行17500次的迭代。
步骤5,设置C-Mask RCNN模型参数。
1)本发明分别采用ResNet101和ResNeXt101两种特征提取网络作为C-Mask RCNN模型的特征提取网络进行训练,表3为两种特征提取网络下的C-Mask RCNN模型的检测准确率与分割准确率对比结果,从结果可知,本发明采用ResNeXt网络作为特征提取网络。
表3两种特征提取网络下的模型对比
2)本发明分别采用SGD、SGD-M、AdaGrad、RMSProp和Adam算法作为模型优化器进行实验,表4为五种优化器下的模型训练结果,从表中可以看出,单纯使用SGD算法作为优化器训练出来的模型准确率最低,加入动量之后AP值有了明显的提升,RMSProp和Adam比较接近,但综合来说,使用Adam算法效果更好一些,因此,本发明选择Adam作为模型训练的优化器。
表4不同优化器下模型训练结果对比
3)C-Mask RCNN模型中有三个需要自行设置阈值的参数,分别是NMS阈值(nms_thr)、IoU阈值(iou_thr)和Mask阈值(mask_thr_binary),通过实验对这几种参数设置进行调优,表5为模型不同阈值设置下的结果,由结果可知,把nms_thr阈值设置为0.5,iou_thr阈值设置为0.6,mask_thr_binary阈值设置为0.5时模型的mAP值最高,此时检测准确率为95.4%,分割准确率为93.5%,表现效果最好。
表5 C-Mask RCNN不同阈值设置下的准确率对比
步骤6,输出裂缝检测与分割结果。
将C-Mask RCNN模型生成的裂缝检测与分割结果显示到图像上。模型生成结果如图2a、图2b、图2c、图2d、图2e和图2f所示,从图中可以看出,改进后C-Mask RCNN模型对横向裂缝、纵向裂缝和网状裂缝具有良好的裂缝识别能力。