基于CNN与CRF的桥梁裂缝检测算法
2021-01-20吴向东赵健康刘传奇
吴向东,赵健康,刘传奇
(上海交通大学 电子信息与电气工程学院,上海 200240)
0 引 言
桥梁作为我国交通系统的主要组成部分之一,对其进行定期检测是一项极其重要的工作。桥梁裂缝的相关指标计算是桥梁检测的重要指标之一,通过图像处理对桥梁裂缝进行检测一直受国内外学者广泛关注。
瞿中等[1]提出了一种纹理特征融合与显著性检测相结合的路面裂缝提取算法,可达到较高的准确度和召回率。张晶晶等[2]提出了一种基于多尺度输入图像渗透模型的裂缝检测算法,可有效提高裂缝检测的精确度和稳定性。李鹏等[3]提出了一种基于双树复小波变换的方法,在保证准确率的同时,提高了抗干扰能力。在一些场景中,传统的图像处理手段虽然可有效提取出裂缝,但由于桥梁环境的特殊性,桥底光照条件差,桥梁表面的噪声干扰严重,使用此种方法的鲁棒性难以保证。
近年来,随着人工智能技术的兴起,国内外学者开始尝试使用深度学习的方法对图像中的裂缝进行提取。文献[4-6]中介绍了一种基于滑窗扫描式的裂缝检测方法,但此方法速度较慢。Ross Girshick等[7]提出了Faster-RCNN算法,极大提高了目标检测任务的速度和精度。文献[8,9] 将Faster-RCNN引入到裂缝检测任务中,在保证速度的情况下,有效检测出裂缝,但此方法未考虑裂缝细长、连续的特点,因此存在漏检和误检的情况。
鉴于上述情况,本文提出了一种基于卷积神经网络与条件随机场的裂缝检测算法。该算法首先通过特征提取网络与区域推荐网络对整张图片中可能存在裂缝的部分进行初步预测,通过后续的分类回归网络与条件随机场相结合,对裂缝的空间特性进行建模,综合判定该区域是否属于裂缝。此方法精度高,漏检率低,抗干扰性强,可较好完成裂缝检测的任务。
1 桥梁裂缝检测系统框架
本文设计的桥梁裂缝检测算法框架如图1所示。整个系统总共由3部分组成:第一部分是由一系列卷积层、池化层以及非线性激活函数等构成的特征提取网络,其作用是对原始的RGB彩色图像进行特征提取,生成适合裂缝检测的高层特征,用于后续的区域推荐网络及分类回归网络。第二部分为区域推荐网络RPN(region proposal network),其作用是生成一系列可能包含裂缝部位的候选区域。第三部分是由卷积神经网络(convolutional neural network,CNN)及条件随机场(conditional random field,CRF)构成分类和回归网络,其作用是考虑RPN提取到的各个候选区域与其空间邻域之间的相关性,对裂缝的连续性以及走向等空间特性进行建模,据此对前一步产生的候选区域进行进一步的类别判定并对裂缝位置的预测值回归修正。
图1 桥梁裂缝检测系统框架
1.1 特征提取网络
特征提取网络的主要作用是作为一种特征提取器,当网络经过充分训练之后,便可通过一系列的卷积与池化操作从原始的RGB彩色图提取出有利于后续裂缝分类及定位的高层特征。本文采用基于Vgg16[10]的特征提取网络,其主要架构如图2所示。
图2 特征提取网络结构
由图2可知,整体的特征提取网络共分为5组,每组均由卷积层、非线性激活函数relu层,以及池化层构成。由于这样的全卷积结构,整个网络可以接受任意大小的图像作为输入。卷积过程中,每个卷积核的大小均为3×3,这样做的优势在于,多个小尺寸的卷积核进行组合可在减少计算量的同时,达到与5×5、7×7这种大的卷积相同的感受野。所有卷积操作的步长均为1,边界填充的大小也为1,这样图像每次经过卷积后其宽度和高度均不会发生改变。每个池化层均采用最大池化,池化层大小均为2×2,步长也为2,这样图像每经过一次池化,其宽度和高度均缩减至原来的一半。因此,经过特征提取网络后,原始尺寸为 (h,w,3) 的RGB彩色图像将变为尺寸为 (h/16,w/16,512) 大小的特征图。
1.2 RPN网络
RPN网络是用于生成可能包含裂缝部位的区域推荐网络。其输入是由特征提取网络得到的特征图,RPN网络首先在特征图上的每个点预设一系列不同尺度和宽高比的矩形框,将这些预设的矩形框记为anchors。本文在特征图的每个点上设置了9种不同的anchors。9种anchors对应于3种面积与3种宽高比的组合。RPN网络通过卷积及softmax操作对这些预设的anchors进行初步的分类及回归,包含前景的anchors被分类为1,只有背景的anchors被分类为0,同时对这些anchors的位置进行回归修正,使其尽可能多的包含待检测物体。使用RPN的好处在于其较滑窗法或一些传统的候选框生成算法如selective search,速度得到了极大的提高。RPN的架构如图3所示。
图3 RPN架构
通过其架构图可看出,特征图首先通过512个3×3,步长及边界填充为1的卷积后,分为两路。第一路通过18个1×1卷积及softmax操作。1×1卷积的目的在于改变特征图的维度,即特征图的通道数变为了18,对应于特征图每个点上预设的9个anchors分别属于前景及背景的概率(Pfg,Pbg)。 第二路通过36个1×1卷积操作,特征图的通道数变为36,对应于9个anchors的4个位置坐标修正值 (tx,ty,tw,th), 设原始预设anchor的坐标及宽高为 (px,py,pw,ph), 则通过第二路输出修正后的anchor的位置如式(1)所示
(1)
其中,gx,gy,gw,gh为修正后的anchor的中心坐标及宽、高。ProposalCreator层为一系列操作的集合,其作用在于将上述两路卷积得到的结果进行结合。该层首先将超出原图尺寸的anchors进行尺寸截断,以保证所有的anchors都在原图内,再将一些尺寸过小以及宽高比过大的anchors进行剔除,后利用第一路的输出从高到低对这些anchors进行排序,保留前K个anchors,最后通过非极大值抑制[11]算法进行筛选,保留M个候选区域,即为RPN最终的输出结果。
1.3 候选区域分类与回归
经过RPN生成M个候选区域后,将通过roi-pooling[7]将这M个候选区域进行大小统一。首先根据候选区域在原图上的位置坐标映射到特征图上,再将映射后的区域进行相同的划分,如都划分为7×7的小区域,在每个小区域内做最大池化,则可将原来大小不一的候选区域都统一为 7×7 的尺寸。Faster-RCNN便将这些候选区域单独送入后续的由CNN构成的分类回归网络进行进一步的分类与位置修正,得到最终的检测结果。如果直接采用这种做法虽然也能得到相对不错的结果,但此方法没有考虑到裂缝的特性:一条裂缝往往是细长的,裂缝的周围很可能存在这条裂缝的延伸,背景的附近大概率也是背景。因此,这种做法可能会造成漏检和误检:一些由于拍摄条件而比较模糊的裂缝会被漏检,一些与裂缝灰度和形状相似的干扰如划痕、水渍等会被误检为裂缝。因此,对RPN产生的候选区域进行后续分类时应综合考虑各个候选区域的空间邻域的像素分布情况。本文采用CRF来达到这一目的。
CRF[12]是一种概率无向图模型,在词性标注、序列分析、语义分割中有着广泛的应用。设有条件概率分布模型P(Y|X), 表示给定一组输入随机变量X的条件下,另一组输出随机变量Y的条件概率分布。将此概率分布采用无向图表示,图中的节点表示随机变量,图中的边表示随机变量之间的依赖关系。若在给定X的条件下,输出变量Y构成了一个马尔可夫随机场,即图中表示Y的节点之间满足成对、局部和全局马尔可夫性,则条件概率分布P(Y|X) 为条件随机场。根据Hammersley-Clifford定理,概率无向图的联合概率分布可以在其最大团上进行因子分解,其联合概率分布可表示为如下所示
(2)
(3)
ψu(Yi)=-ln(P(Yi=1))
(4)
(5)
其中,u(Yi,Yj) 为标签兼容函数,当Yi=Yj时,u(Yi,Yj)=1, 否则u(Yi,Yj)=0。 这表明,当给两图像块Xi,Xj分配相同标签时,其像素内容应尽可能相似,即邻近相似的图像块被鼓励分配相同的标签。wi,j为权重系数,用以衡量图像块i、j之间相关性的强弱。总体的由CNN与CRF构成的分类与回归网络结构如图4所示。
图4 分类与回归网络
分类与回归网络将RPN产生的每个候选区域作为输入,需要对其进行是否为裂缝的类别判定以及候选区域位置坐标的回归修正。因此与RPN网络相似,分类与回归网络同样会分为两路,第一路是由CNN与CRF构成的分类部分,分类过程中,首先取每个候选区域及周围与该区域相同大小的图像块,将这9个图像块作为输入,首先通过CNN进行特征提取,得到9个特征向量X, 再将这9个特征向量作为输入送入CRF中,计算各个图像块标签Y的条件概率,从而对候选区域的类别进行判定。第二路与RPN网络类似,由CNN直接得到每个候选区域的位置坐标修正值,其计算方法与式(1)相同。
对条件随机场模型而言,直接对目标变量的条件概率分布进行推断无法在多项式时间内完成,精确推断需要较大的计算开销。因此实际应用过程中,常用近似推断的方法。近似推断方法可分为两大类:采样技术和变分推断[14],本文采用后者进行求解。
(6)
通过最小化KL散度可得出Qi的迭代更新公式如下
(7)
其中,Zi为归一化因子,L为Y可能取值的标签集合,L={0,1}。 初始化时
(8)
通过若干次迭代后,则可得到Y的近似条件分布,进而对候选区域进行分类。
2 实验与分析
2.1 实验数据准备
在深度学习算法的搭建中,数据集的准备属于至关重要的一环。数据量的大小、数据的多样性、数据类别的分布等都对算法最后的性能有极大的影响。目前为止,全球尚未有公开的、带标签的、可直接使用的桥梁裂缝数据集。本文使用的数据由第三方合作单位提供以及实验室无人机室外拍摄得到。原始的图片数量共计300张。由于图片的来源不一,其拍摄环境各不相同。不同距离、不同光照、不同类型的裂缝均有涉及,因此,数据具有一定的代表性。为提升模型的检测效果,增强模型的泛化能力,需要在原始数据的基础上再进行数据增强,本文对其通过随机翻转、加入随机噪声、随机旋转、对比度调整、随机平移等方法对原始数据集进行了扩充,数据增强后的结果如图5所示。
图5 数据增强效果
通过数据增强后得到的数据共计1200张,其中900张用于训练集,200张用于交叉验证集,100张用于测试集。由于原图的尺寸大小不一,为方便后续处理,首先将其尺寸由原始的 (h,w) 进行等比例缩放至 (h×scale,w×scale), 其中缩放因子scale=600/min(h,w), 即将原图中较短的边缩放至600像素大小,同时另一个边乘以相同的缩放比例。最后,对训练集中的图片进行像素值均值统计,求出所有训练集样本中的R、G、B三通道均值,对每个样本像素进行去均值处理,并归一化,使像素值的范围为[-1,1]。
2.2 实验环境及设置
本文实验所使用的硬件环境为:CPU型号为Intel Core i7-7700k,内存为16 G,显卡型号为NVIDIA GeForce GTX-1080 TI,8 G显存。实验算法程序基于Pytorch框架进行编写。整体网络参数的初始化方法:特征提取网络使用torchvision提供的VGG16预训练模型进行初始化。RPN及后续CNN分类网络均采用Xavier初始化。网络使用带动量的SGD方法进行参数更新,动量大小为0.9。网络的学习率初始设置为0.001,采用指数衰减的方式进行学习率衰减,衰减系数为0.1。网络一共训练70个epochs,训练批次的大小设置为batchsize=8。
2.3 评价指标
本文采用查准率P,查全率R,F1度量,P-R曲线及精度均值AP(average precision)作为评价模型好坏的标准。
在裂缝检测任务中,记裂缝部位被正确预测为TP(true positive),裂缝部位被误检测为背景为FP(false posi-tive),背景部分被误检测为裂缝为FN(false negative)。则查准率P、查全率R的计算公式如下
(9)
(10)
其中查准率反映了模型的误检率,即查准率P越高,误检率则越低。查全率反映了模型的漏检率,即查全率R越高,模型的漏检率越低。一般来说,查准率和查全率是一对相互矛盾的度量,只将最有把握的样本预测为正例,则可得到很高的查准率,然而此时查全率很低;将所有的样本均预测为正例,则此时查全率为1,然而查准率却很低。为综合评价模型的性能,常采用P和R的调和平均值F1度量,其定义如下
(11)
通过改变模型的阈值,模型的P、R值会相应发生变化。以查准率P为纵轴,查全率R为横轴,这些变化的P、R值便能形成相应的P-R曲线。如前所述,P、R值往往此消彼长,一个性能好的模型应该有如下的特性:在R增长的同时,P值应该不能下降的太快,即好的模型不应牺牲太多的查准率来提高查全率。因此P-R曲线的面积即AP值可反应模型的性能好坏。mAP(mean average precision)是目标检测中常用的指标,它是多个类别AP的平均值,在本文中由于只有裂缝一个待检测的类别,因此,裂缝的AP值即为模型的mAP指标。
2.4 实验结果对比分析
为评估本文方法的性能,本文采用目前裂缝检测任务中最常用的Faster-RCNN方法以及滑窗扫描法进行实验结果的对比。在图片背景中存在划痕、水渍、孔洞等复杂干扰的情况下,3种方法的检测结果如图6所示。其中图6(a)与图6(b)为滑窗法得到的检测结果,图6(c)与图6(d)为Faster-RCNN算法得到的检测结果,图6(e)与图6(f)为本文提出的方法得到的检测结果。
图6 检测效果对比
通过3组图的对比可看出,滑窗法虽然能有效检测出裂缝部位,但由于图片中存在一些与裂缝形态和颜色比较相似的污渍和干扰,在只有滑窗内的局部信息时,这些部位很容易被误检为裂缝,因此此种算法的误检率较高。且滑窗法由于窗口的数目太多、滑窗的之间存在重叠、冗余计算较多,因此其速度往往较慢。Faster-RCNN算法虽然能够较快准确识别出裂缝,但该算法对一些由于拍照模糊或光照不均匀造成的裂缝特征不明显的部位,或裂缝部位周围存在诸多干扰时,容易将裂缝判别为背景,因此该算法在图片的干扰严重、光照条件不佳时,漏检率较高。本文提出的算法则能够以较低的漏检率和误检率很好完成裂缝检测的任务,鲁棒性较好。图7为3种算法的P-R曲线对比。
图7 P-R曲线
图7中pr1为本文方法的P-R曲线,pr2为Faster-RCNN 方法得到的P-R曲线,pr3为滑窗扫描法得到的P-R曲线。由图7可看出,pr1曲线基本都能完全包住pr2和pr3,即pr1代表的查全率和查准率都要高于pr2和pr3。通过求出P-R曲线下的面积值则可得到各个模型对于裂缝对象检测的AP指标。滑窗法的AP值约为0.693,Faster-RCNN的AP值约为0.777,本文提出的方法其AP值约为0.868,相较于前两种方法AP分别提高了0.175和0.091。因此,本文提出的方法对于裂缝检测任务更加准确,漏检率和误检率都更低。
表1展示了3种方法在测试集上的查准率、查全率和F1度量的数值比较结果。
表1 不同方法之间的性能比较
由表1可知,在查准率上,本文提出的方法比滑窗扫描法提高了9.31%,比Faster-RCNN提高了9.01%。在查全率上,本文提出的方法比滑窗法提高了10.45%,比Faster-RCNN提高了7.72%。综上所述,本文提出的算法对于桥梁裂缝检测任务具有更好的效果。
3 结束语
本文提出了一种基于CNN和CRF的桥梁裂缝检测算法。整个算法由特征提取网络、区域推荐网络和分类回归网络构成。通过引入卷积神经网络结构以及条件随机场CRF,结合裂缝细长连续的特点,对裂缝的空间特性进行建模,有效降低了裂缝检测的漏检率和误检率。实验结果表明,本文提出的算法相比于目前最常用的滑窗扫描法和Faster-RCNN算法,在查准率上分别提高了9.31%和9.01%,在查全率上分别提高了10.45%和7.72%,平均准确度分别提高了0.175和0.091,取得了较好的检测效果。