基于机器学习和图像处理的路面裂缝检测技术研究
张伟光1,钟靖涛1,于建新2,马涛1,毛硕1,石艺兰1
(1. 东南大学 交通学院,江苏 南京,210096;
2. 河南理工大学 土木工程学院,河南 焦作,454003)
摘要:基于机器学习,设计路面裂缝的快速检测算法,搭建卷积神经网络,对沥青路面图像进行收集和处理,分析多层感知机和卷积神经网络两类神经网络模型在沥青路面状态识别的效果。采用高精度卷积神经网络识别算法提高图像识别效率,借助混淆矩阵对比分析2类模型的识别准确率,对比空间域滤波、阈值二值化以及形态学滤波3类裂缝图像的处理方法,进行裂缝形态提取。研究结果表明:卷积神经网络模型准确率为99.75%,精度比多层感知机的高,能够对无裂缝、横向裂缝、纵向裂缝以及龟裂4类裂缝图像进行高精度识别。中值滤波算法能够有效提取路面裂缝的长度、宽度和面积,研究成果可用于路面裂缝快速检测。
关键词:路面裂缝;卷积神经网络;图像处理;裂缝几何特性
中图分类号:U416.2 文献标志码:A 开放科学(资源服务)标识码(OSID)
文章编号:1672-7207(2021)07-2402-14
Research on pavement crack detection technology based on convolution neural network
ZHANG Weiguang1, ZHONG Jingtao1, YU Jianxin2, MA Tao1, MAO Shuo1, SHI Yilan1
(1. School of Transportation, Southeast University, Nanjing 210096, China;
2. School of Civil Engineering, Henan Polytechnic University, Jiaozuo 454003, China)
Abstract: Based on machine learning, a fast detection algorithm of pavement cracks was designed, and a convolution neural network was built to collect and process the asphalt pavement image. The effect of two kinds of neural network models, multilayer perceptron and convolutional neural network, in asphalt pavement state recognition was analyzed. The high-precision convolution neural network recognition algorithm was used to improve the efficiency of image recognition. The recognition accuracy of the two types of models was compared and analyzed with the help of confusion matrix. Three kinds of processing methods of extracting crack image were compared, which were spatial domain filtering, threshold binarization and morphological filtering. The results show that the accuracy of the convolutional neural network model is 99.75%, which is higher than that of the multi-layer perceptron. It can recognize four kinds of crack images with high accuracy, including noncrack, transverse crack, longitudinal crack and alligator crack. Median filtering algorithm can extract the length, width and area of pavement cracks effectively, and the research results can be used for rapid detection of pavement cracks.
Key words: pavement crack; convolution neural network; image processing; crack geometry characteristics
传统的路面病害检测以人工为主,对同一路面状况的评价存在极大的主观性,并且效率很低,不能够处理大量的信息。因此,考虑实时、高效、泛化性能强、识别准确率高的检测方法,对路面养护工作具有重要意义。伴随着计算机技术的快速发展,机器学习和图像处理技术快速发展,并在一些领域得到应用,为路面裂缝信息的识别和处理提供了重要的方法。机器学习使用大量的数据进行训练模型,并能够对图像给予客观的评价,效率远高于传统检测方法。
ZHANG等[1]设计了一种路面裂缝检测算法,通过图像的预处理,包括图像增强、图像分割等手段对裂缝特征信息进行了提取,计算了裂缝的几何特征信息。OLIVEIRA等[2]提出了一种利用高速行驶时采集的测量图像进行裂纹自动检测和分类的新框架,将得到的图像使用形态学滤波器进行预处理来减少像素强度差异,将阈值图像分割成非重叠块进行熵计算,对产生的熵块矩阵进行二次动态阈值处理,收到了良好效果。SALMAN等[3]基于Gabor滤波,提出设计了一种自动识别图像裂缝的方法,能够对路面纹理层次高、裂缝检测困难的路面图像进行自动识别。哈尔滨国畅智能交通技术有限公司与哈尔滨工业大学联合研制出了道路路面检测车“哈工大国畅” [4],能够在较高的行驶速度下采集到质量较高的路面图片,进行路面的快速识别。
在路面裂缝识别和图像处理的相关算法方面,高建贞等[5]使用传统图像处理的方法对裂缝进行自动检测,该方法使用灰度差来校正图像灰度,并进行图像增强,能够解决图像光照不均匀的问题。陈利利[6]提出了一种基于多尺度图像分析的路面病害研究方法,该方法能够有效地去除图像中的噪声,并保持图像的边缘和细节,抑制边界移动。CEYLAN等[7]介绍了神经网络在道路工程中的最新应用。ELDIN等[8]提出了一种用于评估公路路面状况的人工神经网络模型。ROBERTS等[9]使用不同类型的人工神经网络对路面性能进行了预测,而KIRBAS等[10]将人工神经网络与回归分析和多自适应回归等方法进行了比较,提出了一种路面性能的评价模型。ATTOH-OKINE[11]采用人工神经网络模型对不同相关路面条件变量的窘迫路面条件进行了评估,SAM[12]提出了一种预测裂缝演变的程序。PLATI等[13]用神经网络对FWD数据进行分析,评估了路面结构状况。TORRE等[14]通过神经网络预测公路路面的粗糙度,也可用于裂缝识别[15]。
以上方法为传统学习方法,与传统学习方法不同的是,深度学习方法不需要人工进行特征提取就能够自动根据原始图像的特征进行抽象表达和分析,并且深度学习的识别精度远远高于传统的机器学习图像识别算法的精度,为道路裂缝的自动检测提供了新途径。
ZHANG[16]首次将深度学习算法和卷积神经网络(convolutional neural network,CNN)的方法应用于道路裂缝的检测中,结果表明,深度卷积神经网络在很强的噪声环境下仍然能够很好地识别裂缝。CHA等[17]设计了一个用来检测隧道中混凝土裂缝的深度学习网络,并使用CNN对结构中的多种视觉损伤类型进行检测,结果表明,与传统的检测算法相比,CNN具有更好的稳定性。XIE等[18]通过手机收集的500张分辨率为3 264×2 448的图像数据集上应用卷积层,证明了基于深度学习的路面裂缝检测具有很大潜力。FENG等[19]使用深度残留网络训练带有缺陷标签的图像,可以显著减少分析前标记所有样品所涉及的时间和资源,但准确率并不高。
在神经网络结构中,卷积神经网络(CNN)已经成为深度学习领域最具代表性的人工神经网络[20]。CNN特别适用于图像识别、分类领域,无需人工对图像进行预处理和额外的特征抽取等复杂操作,操作简单、识别率高,目前广泛应用于各视觉领域。在路面裂缝的识别中,传统的裂缝识别算法采用图像处理的方法,先对裂缝图像进行灰度化、二值化等操作,然后基于裂缝二值化图像进行裂缝边缘检测,常用Canny和Roberts等边缘检测算子进行裂缝的定位与分类,其中包括大量的图像处理过程,耗时多并且识别准确率不高。但是采用CNN网络模型,不需要进行大量的图像处理过程,一般只需要进行裂缝图像的灰度化即可,灰度图像可以直接作为输入进行训练,CNN能够自动学习不同裂缝病害的像素差异,从而完成分类目标,不需要复杂的图像处理过程,并且能快速地获得准确的分类。
综上,本文作者基于深度学习的卷积神经网络模型,按照经典的网络结构进行设计,收集4种路面裂缝图像,通过建立数据集和验证集,测试训练模型的准确率,基于高精度的卷积神经网络识别算法,实现正确识别路面裂缝类型的目标,并在识别裂缝类型的基础上,进行路面裂缝的长度、宽度以及面积的计算,为养护评价奠定基础。
1 卷积神经网络
卷积神经网络(CNN)是一种受生物自然视觉认知机制启发而来的多层感知器[21]。20世纪90年代,LECUN等[22]确立了卷积神经网络。近些年,卷积神经网络在图像识别领域得到广泛应用。在路面裂缝图像的识别上,CNN比使用传统特征进行分类结果更优[23]。图1所示为神经网络模型,包含输入层、隐藏层和输出层。其中,x1~xn为输入层的输入参数值,y1~yn为输出层对应于输入层的预测值。
图1 神经网络模型
Fig. 1 Neural network model
1.1 卷积神经网络结构
卷积神经网络是包含卷积层、池化层和全连接层的神经网络。卷积层作用就是通过卷积,将图像中的特征进行提取出来,然后交给高层的神经元进行处理。一层的卷积学到的东西往往是局部的,通过添加卷积层的层数,逐渐到全局进行掌握,实际中卷积层往往有多层[24]。通过加入池化层,能够降低图像大小,对特征压缩,对数据降维,提取主要特征,同时降低过拟合的风险。全连接层的作用是将经过卷积、池化后的结果进行全连接起来,即将变厚的图像连接起来,其输入必须是一维的,因此,必须将上层输入的多维向量变成一维的并连接起来,一个神经网络可以有多个全连接层。
1.2 激活函数的选取
输入值在经过神经元后,还要经过激活函数才能进行输出。激活函数存在的主要目的是增加非线性因素。若不存在激活函数,则输入和输出只能是简单的线性关系。常用的激活函数有Sigmoid,Tanh和Relu等。激活函数工作原理如图2所示,输入层输入参数x,经过突触权值wk相乘后,与偏置bk进行累加求和,通过激活函数Φ,得到激活值yk。
图2 激活函数
Fig. 2 Activation function
Sigmoid函数值的范围在0~1之间,当输入值大于5或者小于-5,该函数就已经趋于1和0,映射的范围太小,非常容易饱和,训练效果明显降低,会产生欠拟合,分类效果会很差。Tanh函数值范围在-1~1,当输入值是比较大的正数时,将被映射成1,当输入值为较小的负数时,被映射成-1,均值为0。Tanh函数避免了Sigmoid函数可能会导致的梯度下降产生锯齿状波动的问题,但当输入值过大或过小时,梯度为0,同样会存在欠拟合的问题。Relu函数不存在这个问题,Relu函数的数学形式为:f (x)=max(0,x),如图3所示。
图3 Relu函数
Fig. 3 Relu function
Relu函数非常简单,当输入值大于0时,直接输出该值,当输入值小于0时,输出0。只需要设置一个阈值便可以进行计算,相比前两种激活函数需要复杂的指数计算,Relu函数计算速度更加快速。反向传播的过程就是不断更新参数的过程,Relu函数相比Sigmoid和Tanh,导数更容易计算,可以使网络训练地更快,而且Relu可以防止梯度消失,因此本文采用Relu激活函数。
1.3 优化器的选取
为了更好地训练模型,减小训练时间,提高训练效率,必须选择合适的优化器,常用的优化器主要分为3类:梯度下降算法和动量优化算法、自适应学习率优化算法,本文选择自适应学习优化算法。由于学习率对模型有着显著的影响,需要采取一些方法来更新学习率,从而提高训练速度。目前,自适应学习率优化算法主要有:Adagrad算法、RMSprop算法、Adam算法和AdaDelta算法,通过比较分析,本文选择RMSprop算法。
2 裂缝识别算法设计
为设计出一种能够对路面裂缝图像进行分类识别和对路面基本特征信息进行提取和计算的方法,采用多层感知机和深度卷积神经网络2种模型对路面裂缝数据进行学习,算法设计主要借助Python语言,使用比较便捷的Keras作为开发框架。首先,采集大量路面裂缝图像并进行灰度化、标签化和尺寸归一化处理,形成足够的训练集。然后,使用训练后的模型对测试集数据进行裂缝有无判断和裂缝种类预测,并将2个模型的效果进行对比。对于判断结果为横向裂缝和纵向裂缝的数据,为了进一步获取裂缝宽度信息,将其进行一系列图像处理,使裂缝突出并减少背景中的噪声。最后,对处理后裂缝图像的宽度和长度信息进行提取,为路面状况评价提供数据。
2.1 数据收集及整理
2.1.1 原始数据收集
使用机器学习进行图像识别需要大量的数据集训练模型。一般来说,训练神经网络所需要的数据量至少在500以上,但相比其他复杂的图像如人脸,裂缝图像比较简单,特征较少,识别相对简单。实验结果证明,500左右的数据量基本可以满足训练模型的要求。本文设计训练的模型主要对横向裂缝、纵向裂缝、龟裂、无裂缝等4类路面裂缝图像进行分类识别,每类裂缝均采集600张图像用于训练。
裂缝图像数据通过手机进行采集,并严格控制图像质量:路面不存在影响裂缝观察的污迹,比如轮胎印记或者车道线;拍摄时光照均匀;路面裂缝处不存在积水等。
2.1.2 数据预处理
收集到的各类裂缝图像不能直接用来训练模型,必须进行处理后生成具有标签的数据集后才能使用。为了减少计算量,加快卷积神经网络的训练速度,需要对数据进行尺寸归一化和灰度化处理。
1) 图像尺寸归一化。由于手机所采集的数据图像分辨率不同,而卷积神经网络的输入层需要大小一致的数据,必须进行归一化处理。为减少训练时间,提高模型训练速度,将裂缝图像进行缩放[25],尺寸归一化为80×80。分辨率降低后,不会影响图像中灰度相对低的像素点群的分布特征,以及是否存在裂缝与裂缝类型的判定,满足训练要求。
2) 灰度化。收集路面裂缝图像是彩色图片,训练时收敛速度较慢。为了加快神经网络模型的收敛,查阅文献[26],裂缝图像的灰度化对裂缝识别准确率的影响很小。观察处理后的裂缝图像并读取灰度发现,处理后裂缝的特征和分布状态并没有较大改变,结果如表1所示,因此,对原始路面裂缝均进行灰度化处理。
表1 原始图像和经过预处理后的样本对比
Table 1 Comparison of original image and sample after preprocessing
3) 标签化。采集到的数据并不能够直接用于训练,必须对每类裂缝打上各自类别的标签,才能将训练结果与真实的分类结果进行比对,并不断更新参数。使用windows自带的批处理程序对图像进行打标签。对横向裂缝图像重命名为1_x.jpg,前缀名的第一位表示裂缝类型,x为序号,表明同一类裂缝的数目。使用同样的方法,纵向裂缝图像、龟裂图像、无裂缝图像的重命名格式分别为2_x.jpg,3_x.jpg和4_x.jpg,如图4所示。
图4 裂缝标签化
Fig. 4 Crack label
4) 生成数据集。经过标签化的图像为jpg图像格式,需要对图像中的点阵数据进行读取。使用OpenCV提供的接口,对图像数据进行读取,将图像的标签与图像数据信息对应起来,写入一个csv文件,当训练卷积神经网络时,可直接读取该csv文件。
2.2 多层感知机模型搭建
多层感知机(multilayer perceptron, MLP)是至少含有一个隐层的由全连接层组成的神经网络。在这个网络中,每一个节点都是一个人工神经元,一个人工神经元的输出可以作为另一个人工神经元的输入,且每个隐层神经元的输出通过激活函数进行变换。MLP的一个显著特点是,在网络足够大的情况下,模型能够表示任意数学函数。
2.2.1 模型参数
多层感知机结构有输入层、隐层和输出层,层与层之间都通过全连接的方式,前一层的输出值即为后一层的输入值。选择隐层共3层的多层感知机:输入层输入尺寸为80×80×1的二维灰度图片,将其展开变成一维张量后传入隐层;各隐层中神经元个数分别是256,512和256个,输出层输出4个分类结果。
2.2.2 训练结果
将训练集数据随机抽取固定个数,作为一个批次(batch)进行训练,每个batch训练后都将模型参数进行一次更新,直到所有的数据都进行参数更新,这一过程称为一轮训练(epoch)。batch的尺寸定为32个数据,进行3 000个epoch后结束训练和参数更新,训练结果如图5所示。
图5 多层感知机训练集和验证集损失值和训练准确率随训练次数的变化折线图
Fig. 5 Line chart of loss value and training accuracy of training set and verification set of multilayer perceptron with epoch
从图5可知:随着训练的进行,训练集的损失值越来越小,而准确率基本稳步上升。但是模型在验证集上的损失值和准确率波动较大。训练最初的准确率最低,为32.31%,损失值为1.603 4;训练过程中准确率起伏很大;训练结束时,模型在验证集上的准确率达到86.32%,损失值为0.457 1。
2.3 卷积神经网络结构搭建
一般来说,卷积神经网络的层数越多,对数据拟合的效果越好,但计算时间越长,而且出现过拟合现象的概率也越大,对于小批量的数据,层数不需要过高。本文选择5层网络结构模型用于训练。
2.3.1 具体网络结构参数
建立5层卷积神经网络,各层的参数如表2所示,其中前三层是卷积层(Conv层),用于提取裂缝图像特征,每一个卷积层后连一个池化层;后两层为全连接层(Fc层),在全连接层后连一个SoftMax分类器,实现图像分类。为防止训练出现过拟合,在每一个池化层后接一个dropout层,使部分神经元随机失活,以保证测试集的良好结果。
表2 神经网络模型参数
Table 2 Parameters of neural network model
输入数据在经过卷积神经网络各层后的维度变化如图6所示。
图6 各层维度变化示意图
Fig. 6 Schematic diagram of dimension change of each layer
2.3.2 神经网络训练
经过处理4类裂缝图像共2 400张,作为模型训练的数据集,从中随机选取20%的数据作为验证集,以提高模型的泛化能力。训练环境为:Windows10操作系统,i5-5200U处理器,主频2.2 GHz,内存8 G,python3.0,Keras框架。
为选择合适的优化器,对不同的优化器进行测试,在统一的epoch和batch size下进行测试,结果如表3所示。
表3 各类优化器的训练效果
Table 3 Training effects of various optimizers
从表3可以看出:使用RMSprop优化器的模型损失值最低,准确率最高,因此,选用RMSprop算法优化神经网络模型。当模型进行训练时,为防止模型出现过拟合,提高模型的泛化能力,在每个卷积层后面添加一个dropout层,考虑dropout的参数对模型训练结果的影响,进行随机失活参数(即总的数据集中不参与训练的占比)的确定,实验结果如表4所示。
表4 随机失活参数确定
Table 4 Determination of random deactivation parameters
从表4可以看出:随机失活参数数量过大或过小,模型在验证集上表现均较差,故将随时失活参数设置为0.2。
优化器选择为RMSprop,初始学习率设置为0.000 1,batch size的大小为32,epoch设置为50,得到的损失值和准确率分别如图7和图8所示。
图7 训练集和验证集的损失值随训练次数的变化情况
Fig. 7 Change of loss value of training set and verification set with training times
图8 训练集和验证集的准确率随训练次数的变化情况
Fig. 8 Change of accuracy of training set and verification set with training times
通过50个epoch的训练,卷积神经网络模型在训练集的准确率最高为97.5%,损失值不断降低。虽然验证集的准确率和损失值波动较大,但整体趋势和验证集的表现相同,具有较好的训练效果。
2.3.3 2种模型识别结果对比
为得到准确率高的识别模型,对2种模型进行实验验证。验证集随机选取400张裂缝图像(其中横向裂缝图像数量为82张,纵向裂缝图像数量为105张,龟裂图像数量为106张,无裂缝路面图像数量为107张),使用模型对这400张裂缝图像进行预测,将识别结果通过混淆矩阵绘制出来,结果如图9所示。
图9 2种模型识别结果
Fig. 9 Recognition results of two models
多层感知机模型对于横向裂缝图像的预测正确率达到91.46%,对于纵向裂缝图像的预测正确率为86.67%,对于龟裂图像的预测正确率为95.28%,而对无裂缝路面的预测有99.07%的正确率。综上,经过训练后的多层感知机在测试集上,对于4类沥青路面裂缝图像的预测和分类准确率平均为93.25%。
卷积神经网络模型对于横向裂缝、纵向裂缝以及龟裂的图像预测全部正确;而对无裂缝路面的预测有99.07%的正确率,预测错误的一例被模型判断为纵向裂缝。经过训练后的卷积神经网络在测试集上,对于4类沥青路面图像的预测和分类准确率平均为99.75%。
经过训练的多层感知机和卷积神经网络模型,对4类路面裂缝的分类和预测比较准确,能够很好地完成分类任务,但卷积神经网络模型的性能优于多层感知机模型的性能。
3 路面裂缝几何特性
在完成路面裂缝分类后,需进一步获取裂缝的其他信息,如纵向和横向裂缝的最大宽度、长度、面积等,才能评估路面的破损程度。路面图像包含了路面的绝大部分信息,使用图像处理技术能够对图像中的有效信息进行提取,一般操作方法包括灰度化、二值化、图片降噪、图像细化等。
3.1 图像处理
提取裂缝特征信息对图像质量要求较高,为减少图像处理过程中造成的裂缝信息损失,提高信息提取的准确率,将图片分辨率调整为3 500×3 500,进行二值化、图片降噪等处理。
3.1.1 二值化
二值化就是按照某种规则首先确定图像的阈值,然后将原始图像各像素处的灰度与该阈值对比,再按照某种规则对该灰度重新赋值。二值化处理后的图像只有黑白2种颜色,每个像素点的灰度为0或255,能够比较好地突出裂缝特征。阈值的确定方法分为全局阈值二值化和局部阈值二值化。局部阈值法,是对图像进行分块,按照某种规则计算出每一块的阈值,对该块内的像素自动进行调节,能够比较好地处理图像光照不均匀的情况。此次实验的对象均是在光照均匀环境下获取的路面裂缝图像,故不考虑使用局部阈值的处理方法。
全局阈值二值化是在整个图像中统一为一个阈值,在该值下对像素进行操作,阈值获取方法分为指定阈值和手动获取阈值2类。对于指定阈值,OpenCV中有5种常用的方法:
1) THRESH_BINARY方法,对高于阈值的灰度设为最大值,低于像素的灰度设为0;
2) THRESH_BINARY_INV方法,正好相反,将高于阈值的灰度设为0,低于阈值的灰度设为最大值;
3) THRESH_TRUNC方法,将超过阈值的灰度设为阈值,而对低于阈值的灰度不变;
4) THRESH_TOZERO方法,将超过阈值的灰度保持不变,其他的灰度变为0;
5) THRESH_TOZERO_INV方法,将超过阈值的灰度变为0,其他灰度不变。指定阈值设为127,使用以上5种方法处理后结果如图10所示。
图10 二值化方法处理结果
Fig. 10 Processing results of binarization method
从图10可以看出:使用THRESH_BINARY和THRESH_BINARY_INV方法处理后,裂缝特征比较明显,因此选择这2个方法对裂缝图像进行二值化处理。
3.1.2 路面图像降噪
由于沥青路面中沥青与集料性质不同,会出现较多离散分布的噪声,即图像中孤立的像素点或者像素块。它们不属于裂缝,但对于裂缝宽度、长度和面积的计算会产生影响,因此在计算裂缝的几何特性之前,需要去除其中的噪声。
1) 高斯滤波。高斯滤波是通过一个卷积核对图像进行卷积,该卷积核的权重服从高斯函数的二维分布,其中心是高斯函数的原点。对卷积核进行归一化处理,保证卷积核的和为1。高斯滤波适合处理噪声分布为高斯分布的白噪声,能够保留比较多的细节。高斯滤波对图像的处理效果与高斯卷积核有关,不同卷积核处理后的结果如图11所示。
从图11可以看出:随着卷积核的增大,裂缝细节不断被模糊,为了达到良好的去噪效果,选取的高斯内核大小为5×5。
2) 形态学滤波。形态学滤波是基于形态学对图像处理的算法,使用特殊领域运算形式:结构元素,在每个像素位置上与二值图像对应的区域进行特定的逻辑运算。使用形态学滤波算法对图像进行处理的难点是:设计结构元素的大小、结构元素的形态和运算的性质。最常用的形态学滤波算法有腐蚀和膨胀,这2种算法相互组合还可以进行开运算和闭运算。
腐蚀是通过结构元素在图像上平移,若该结构元素包含于图像,则该结构元素的中心点会被修改。膨胀与腐蚀相反,结构元素在图像上平移,若结构元素集中于图像,则结构元素所在的中心会被修改。
先腐蚀后膨胀操作称之为开运算,与开运算相反,闭运算先膨胀再腐蚀,闭运算能够连接图像中那些紧紧相邻却又没有连接的区域,2种运算处理的结果如图12所示。
图11 高斯卷积核确定
Fig. 11 Determination of Gaussian convolution kernel
图12 形态学滤波处理结果
Fig. 12 Morphological filtering results
通过以上实验发现,闭运算处理后的图片有很多孤立点,而开运算能够有效去除图像中的孤立噪声,而且图像的位置和形态不会改变,在处理噪声方面效果较好,以此选取开运算来进行滤波处理。
3) 算法设计。本文设计2种滤波算法对图像进行降噪处理:第一种算法是使用高斯滤波结合二值化进行迭代,高斯内核为5×5;第二种算法是形态学滤波开运算结合中值滤波算法,对图像进行降噪。2种算法处理后的结果如图13所示。
图13 高斯滤波迭代及中值滤波迭代计算对比
Fig. 13 Comparison of Gauss filter iteration and median filter iteration
从图13可以看出:第一种算法不仅不能对图像完成降噪处理,反而使得图像中的噪声越来越多,裂缝的特征逐渐消失。而第二种方法,在进行100次迭代后,图像中的噪声明显降低。因此,采用中值滤波结合开运算,进行路面裂缝的图像处理来计算裂缝的几何特征。
3.2 裂缝几何特征提取
经过图像处理以后,噪声得到有效去除,裂缝特征已非常明显,近似认为图片中灰度大于0的像素点均属于裂缝,统计分析这些白色的像素点便可计算裂缝的几何信息。通过对实际拍摄路面的测量和图片大小的比例换算,可以得到每个像素的实际长度和每个像素点的实际面积,通过比例尺可以计算裂缝的宽度、面积和长度等信息。
路面裂缝特征信息计算需要对图像进行标定,以保证后面程序的准确可靠,因此需要固定采集的设备的高度、角度,此次实验数据采集时,固定相机高度为30 cm,角度为垂直拍摄,照片长宽比调整为1:1,分辨率为3 500×3 500,现场采集如图14所示。
图14 测量照片对应的实际路面尺寸
Fig. 14 Actual pavement dimensions corresponding to measured photos
经测量,图14中实际路面裂缝长度为20.5 cm,照片中的长度为3 500个像素长度,换算成单个像素对应的实际长度为0.058 6 mm。本文是以手机拍摄的路面裂缝图像进行标定的,也可以采用道路检测车采集的照片进行标定,只需要保证标定后采用的图像都是相同的数据来源。
3.2.1 裂缝宽度和面积计算
在进行裂缝宽度计算时,需要对裂缝形态进行确认,以区分纵、横向裂缝。纵、横向裂缝在卷积神经网络模型预测时已经得到分类结果,完成裂缝形态的分类。本文在2.1节处对于纵、横向裂缝进行了不同的命名标记,通过读取带标签的裂缝图像的像素,批处理生成横纵向裂缝像素的CSV文件,该文件保存了横纵向裂缝的像素排列的矩阵。将此像素数据输入卷积神经网络进行学习,从而能够进行纵、横向裂缝的分类。
在完成了线性裂缝(纵、横向裂缝)的分类后,进行裂缝的宽度和面积信息的获取。对于纵向裂缝,统计每一行的灰度为255的像素点信息,记录裂缝最大宽度,并计算裂缝的平均宽度;对于横向裂缝,则是统计每列的像素信息。计算路面裂缝面积时,只需统计图像中灰度为255的像素点数目(即白像素点数目),在得到像素信息后乘以相应的比例,便可以得到实际的路面裂缝宽度和面积。
3.2.2 裂缝长度计算
计算裂缝长度需要对图像进行细化,即将裂缝细化成一条单位像素的骨架,然后统计图像中像素的数目,再乘以相应的比例得到实际的裂缝长度。
1) 寻找最大轮廓。裂缝长度计算需要去除所有的噪声,只保留裂缝区域。OpenCV提供了搜索连通区域的接口,统计处理后的裂缝图像连通区域,对于仅有单个裂缝的图像,搜索记录图像中的所有连通区域,去除其中的孤立点,处理效果如图15所示。
图15 裂缝填充处理
Fig. 15 Crack filling treatment
2) 提取裂缝骨架。提取裂缝骨架就是对裂缝进行细化操作,不断进行腐蚀的过程,最终将裂缝细化成一条连续宽度为1个像素的线。采用Hilditch算法对裂缝进行细化,对于一条直线,它的骨架就是本身,而对于一个具有宽度的线,它的骨架就是它的中轴线。对于圆,骨架是它的圆心,对于孤立的点来说,本身就是骨架。
细化是从原来的图中去掉一些点,但仍要保持原来的形状,实际上是保持原图的骨架。判断一个点是否能去掉,以8个相邻点(八连通)的情况作为判据:内部点则不能删除,删除后会出现孔洞;孤立点不能删除;直线端点不能删除;若存在边界点,去掉该边界点后,连通分量不增加,则该边界点可删除。使用上面方法,分别对横向裂缝和纵向裂缝进行细化,细化结果如图16所示。
图16 线性裂缝细化
Fig. 16 Linear crack refinement
细化操作后,裂缝变为宽度为1个像素的线条,统计其中灰度为255像素的数目便可得到裂缝长度。
3.3 多裂缝特征信息提取计算
对于图像中含有多个裂缝的情况,处理步骤与单个裂缝相同,同样需要进行图像预处理,将裂缝的特征表现出来。所不同的是,在进行裂缝特征计算时,需要对每个裂缝独自进行处理,并对预处理后的图片进行连通区域查找,本文将连通区域面积大于图像面积1%的视为裂缝,其他连通区域则为噪声。单独对每个连通区域进行提取,分别计算几何特性。双裂缝图像处理如图17所示。从图17可知:对2条纵向裂缝进行分离和识别,2条裂缝编号为裂缝1和裂缝2,然后分别单独处理,将裂缝特征提取后乘以比例得到的具体裂缝几何数据如表5所示。
表5 裂缝的几何特性
Table 5 Crack geometry characteristic information
图17 双裂缝图像处理
Fig. 17 Image processing of double cracks
基于上面的提取方法,能够进行多裂缝的几何特性提取。在此研究的基础上,可以将此处理思路结合道路检测车进行检测使用,达到批处理提取路面裂缝图像几何特性的目的。
4 结论
1) 搭建了包含3层卷积层和2层全连接层的卷积神经网络模型,并与多层感知机模型进行对比分析。卷积神经网络模型和多层感知机模型对4类沥青路面图像的预测和分类准确率分别为99.75%和93.25%,因此,搭建的该卷积神经网络模型能很好地识别路面裂缝类型。
2) THRESH_BINARY和THRESH_BINARY_INV算法能够将路面裂缝特征明显表现出来。进一步提出了高斯滤波结合二值化迭代算法和开运算结合中值滤波算法,分别进行路面图像降噪,对比分析后得出,开运算结合中值滤波算法能够很好地处理路面裂缝,并突出裂缝的几何特性。
3) 经过滤波处理到了比较理想的二值化图片,进行路面裂缝几何特征信息提取计算,提出了将多条线性裂缝分离为单个裂缝进行处理,最后累加计算单个裂缝信息的方法,结合路面双裂缝实例进行了验证,能够统计多条裂缝的信息,效果良好。
参考文献:
[1] ZHANG Yiyang. The design of glass crack detection system based on image preprocessing technology[C]// 2014 IEEE 7th Joint International Information Technology and Artificial Intelligence Conference. Chongqing: IEEE, 2014: 39-42.
[2] OLIVEIRA H, CORREIA P L. Automatic road crack segmentation using entropy and image dynamic thresholding[C]// 2009 17th European Signal Processing Conference. Glasgow, UK: IEEE, 2009: 622-626.
[3] SALMAN M, MATHAVAN S, KAMAL K, et al. Pavement crack detection using the Gabor filter[C]// 16th International IEEE Conference on Intelligent Transportation Systems (ITSC 2013). The Hague, Netherlands: IEEE, 2013: 2039-2044.
[4] 高飞. 道路综合信息采集系统的研究与实现[D]. 西安: 长安大学, 2009: 2-5.
GAO Fei. Research and implementation of road comprehensive information collection system[D]. Xi'an: Chang'an University, 2009: 2-5.
[5] 高建贞, 任明武, 唐振民, 等. 路面裂缝的自动检测与识别[J]. 计算机工程, 2003, 29(2): 149-150.
GAO Jianzhen, REN Mingwu, TANG Zhenmin, et al. Automatic road crack detection and identification[J]. Computer Engineering, 2003, 29(2): 149-150.
[6] 陈利利. 基于多尺度图像分析的路面病害检测方法研究与分析[D]. 南京: 南京理工大学, 2009: 7-12.
CHEN Lili. Research and analysis of pavement disease detection method based on multi-scale image analysis[D]. Nanjing: Nanjing University of Technology, 2009: 7-12.
[7] CEYLAN H, BAYRAK M B, GOPALAKRISHNAN K. Neural networks applications in pavement engineering: a recent survey[J]. International Journal of Pavement Research and Technology, 2014, 7(6): 434-444.
[8] ELDIN N N, SENOUCI A B. A pavement condition-rating model using backpropagation neural networks[J]. Computer-Aided Civil and Infrastructure Engineering, 1995, 10(6): 433-441.
[9] ROBERTS C A, ATTOH-OKINE N O. A comparative analysis of two artificial neural networks using pavement performance prediction[J]. Computer-Aided Civil and Infrastructure Engineering, 1998, 13(5): 339-348.
[10] KIRBAS U, KARASAHIN M. Performance models for hot mix asphalt pavements in urban roads[J]. Construction and Building Materials, 2016, 116: 281-288.
[11] ATTOH-OKINE N O. Grouping pavement condition variables for performance modeling using self-organizing maps[J]. Computer-Aided Civil and Infrastructure Engineering, 2001, 16(2): 112-125.
[12] SAM O A. Effect of neural network topology on flexible pavement cracking prediction[J]. Computer-Aided Civil and Infrastructure Engineering, 1998, 13(5): 349-355.
[13] PLATI C, GEORGIOU P, PAPAVASILIOU V. Simulating pavement structural condition using artificial neural networks[J]. Structure and Infrastructure Engineering, 2016, 12(9): 1127-1136.
[14] TORRE F L, DOMENICHINI L, DARTER M I. Roughness prediction model based on the artificial neural network approach[C]// Proceedings of the fourth international Conference on Managing Pavements. Durban, South Africa, 1998: 599-612.
[15] YOO H S, KIM Y S. Development of a crack recognition algorithm from non-routed pavement images using artificial neural network and binary logistic regression[J]. KSCE Journal of Civil Engineering, 2016, 20(4): 1151-1162.
[16] ZHANG Lei, YANG Fan, ZHANG Yimin, et al. Road crack detection using deep convolutional neural network[C]// 2016 IEEE International Conference on Image Processing (ICIP). Phoenix, AZ, USA: IEEE, 2016: 3708-3712.
[17] CHA Y J, CHOI W, BUYUKOZTURK O. Deep learning-based crack damage detection using convolutional neural networks[J]. Computer-Aided Civil and Infrastructure Engineering, 2017, 32(5): 361-378.
[18] XIE Danfeng, ZHANG Lei, BAI Li. Deep learning in visual computing and signal processing[J]. Applied Computational Intelligence and Soft Computing, 2017, 2017: 1320780.
[19] FENG Chen, LIU Mingyu, KAO C C, et al. Deep active learning for civil infrastructure defect detection and classification[C]// International Workshop on Computing in Civil Engineering. Washington D C, USA: ASCE, 2017: 298-306.
[20] 刘娜. 基于卷积神经网络的行人重识别算法[D]. 上海: 华东师范大学, 2017: 1-3.
LIU Na. Person re-identification algorithm based on convolutional neural networks[D]. Shanghai: East China Normal University, 2017: 1-3.
[21] 刘健. 基于深度学习的溯源视频目标检测与识别[D]. 南京: 东南大学, 2016: 11-14.
LIU Jian. Object detection and recognition for traceability video based on deep learning[D]. Nanjing: Southeast University, 2016: 11-14.
[22] LECUN Y, BENGIO Y, HINTON, G. Deep learning[J]. Nature, 2015, 521(7553): 436-444.
[23] 陈祖雪. 基于深度卷积神经网络的手势识别研究[D]. 西安: 陕西师范大学, 2016: 5-12.
CHEN Zuxue. Gesture recognition based on deep convolution neural network[D]. Xi'an: Shaanxi Normal University, 2016: 5-12.
[24] 王文, 曹铁勇, 郑云飞, 等. 深度学习在显著性检测中的应用[J]. 军事通信技术, 2016, 37(2): 92-97.
WANG Wen, CAO Tieyong, ZHENG Yunfei, et al. Deep learning in saliency detection[J]. Journal of Military Communications Technology, 2016, 37(2): 92-97.
[25] 谈飞, 黄均昕, 吕树炎. 计算机视觉增强现实应用概论[M]. 北京: 机械工业出版社, 2017: 37-40.
TAN Fei, HUANG Junxin, LU Shuyan. Application probability of computer vision augmented reality[M]. Beijing: China Machine Press, 2017: 37-40.
[26] 刘彦均. 基于caffe双模型的路面裂缝识别算法研究[D]. 西安: 长安大学, 2018: 8-10.
LIU Yanjun. Research on pavement crack recognition algorithm based on caffe dual model[D]. Xi'an: Chang'an University, 2018: 8-10.
(编辑 杨幼平)
收稿日期: 2020 -09 -21; 修回日期: 2020 -11 -09
基金项目(Foundation item):高寒高海拔地区道路工程安全与健康国家重点实验室开放基金资助项目(YGY2020KYPT-02);国家自然基金资助项目(51674100) (Project(YGY2020KYPT-02) supported by Open Fund Program of State Key Laboratory of Road Engineering Safety and Health in Alpine and High Altitude Areas; Project(51674100) supported by the National Natural Science Foundation of China)
通信作者:于建新,博士,讲师,从事岩土工程防灾减灾,爆破理论及应用等研究;E-mail: jianxinyu@hpu.edu.cn
DOI: 10.11817/j.issn.1672-7207.2021.07.026
引用格式: 张伟光, 钟靖涛, 于建新, 等. 基于机器学习和图像处理的路面裂缝检测技术研究[J]. 中南大学学报(自然科学版), 2021, 52(7): 2402-2415.
Citation: ZHANG Weiguang, ZHONG Jingtao, YU Jianxin, et al. Research on pavement crack detection technology based on convolution neural network[J]. Journal of Central South University(Science and Technology), 2021, 52(7): 2402-2415.