基于深度分类的轻量级格网桥梁裂缝检测技术
2022-08-16韦春桃朱旭阳张冬梅
韦春桃,朱旭阳,张冬梅
(重庆交通大学 土木工程学院,重庆 400074)
0 引 言
20世纪中叶以来,随着桥梁建设的规模越来越大,对桥梁的安全性、耐久性进行周期性检测显得尤为关键[1]。桥梁裂缝的出现会造成桥梁结构承载能力下降,引发诸多桥梁病害。因此,桥梁裂缝检测已成为桥梁养护的重要研究课题之一。
随着计算机视觉技术的发展,基于图像的无损检测技术已经成为国内外桥梁裂缝检测的研究热点。常用的数字图像处理方法有最小代价路径搜索法[2]、三维多特征检验法[3]、K-means聚类分割法[4]等。上述方法能弥补传统人工检测主观性强、劳动密度大的缺点[5],但需要人工设计特征,模型泛化性能不佳。
深度学习的兴起进一步推进了桥梁裂缝无损检测技术的发展。蔡逢煌等[6]提出基于YOLOv3的桥梁表面裂痕检测算法。吴向东等[7]提出基于神经网络与条件随机场的裂缝检测算法。近年来,许多优秀的目标检测模型[8-10]在实际场景的应用中取得了良好的效果,但是桥梁裂缝图像纹理复杂多样、分布无规律,目标检测模型的先验框选取策略无法满足所有裂缝图像的尺寸要求,导致检测结果存在严重的漏检和误检现象,并且此类模型的参数量巨大难以部署到移动设备中,不利于实际的工程应用。
针对上述问题,本文设计了一种基于深度分类的轻量级格网桥梁裂缝检测技术。通过格网化处理方法配合深度分类模型实现对桥梁裂缝图像的高精度检测。采用全局平均池化与基于批归一化层的通道减枝技术对深度分类模型进行轻量化改进,为基于深度学习的桥梁裂缝检测系统进行边缘部署提供了思路。
1 格网桥梁裂缝检测技术
当前主流的目标检测模型,均采用预先设定先验框的方法对目标进行识别检测,该方法应用于一般场景的目标检测任务时具有良好的检测效果。但是,如图1所示,不同于一般检测目标,桥梁裂缝图像纹理复杂多样,分布无规律,通过设定有限个先验框尺寸无法较好包含所有的桥梁裂缝目标,虽然预测框会根据损失函数进行调整,但是仍然会存在严重的漏检和误检现象。
图1 桥梁裂缝图像、先验框设定以及目标检测模型的检测效果
1.1 网格化处理方法
文献[11]的研究表明,桥梁裂缝图像局部的语义信息不会因为图像被分割而发生改变,分割后每个含有裂缝的子图像中依然保留有原始且完整的裂缝语义信息,能够被深度学习模型学习与识别。根据这一特点,本文设计了格网化处理方法,通过将裂缝图像划分到大小相同的网格内,规范图像中桥梁裂缝的位置分布,以此来解决目标检测模型应用于桥梁裂缝检测时存在的漏检和误检问题。
格网化处理方法,首先对原始图像进行重采样,将原始图像变换为长宽相等的图像,以便于划分的格网能够完整包含整幅图像。然后,将变换后图像划分为n×n长宽相等的网格,并赋予每一网格位置信息Pij,其中i,j分别为网格的横向坐标,纵向坐标 (i,j∈n,n∈N*), 规范桥梁裂缝在图像中的位置分布。最后,将格网化后的图像输入分类模型,对识别为裂缝图像的网格根据位置信息进行标注实现对桥梁裂缝的检测。
格网划分在不同数据集中最优的n取值可能不同,为了能够客观确定n的取值,使模型达到最佳的检测效果,通过遍历正整数区间选取最佳取值。由于n取值过小时,无法区别裂缝区域与背景区域达到对裂缝位置的详细定位。而n取值过大时,会存在模型计算量过大的问题。故遍历的正整数区间设置为(5≤n≤10)。在遍历过程中引入准确率Sn评价不同n取值时的模型性能来选择最优的n取值。准确率Sn的表达式如式(1)所示
(1)
其中,n×n是格网化处理所划分的网格个数,n的取值范围是 (5≤n≤10,n∈N*),T表示模型正确识别为裂缝图像与背景图像的个数。
1.2 格网桥梁裂缝检测
本文结合1.1节所设计的格网化处理方法与深度分类模型提出了一种格网桥梁裂缝检测技术,具体实现流程如图2所示。首先对输入的原始图像进行格网化处理,划分为n×n个边长相等的网格,规范裂缝图像的位置分布并分配给每个网格位置信息。然后将分属于不同网格的图像输入深度分类模型,通过卷积层、池化层以及非线性激活函数对输入图像进行特征提取并根据提取得到的特征识别桥梁裂缝图像与背景图像。最后根据预先分配的位置信息将识别为裂缝的图像在原始图像中标注出来实现桥梁裂缝检测。
2 基于深度学习的轻量级桥梁裂缝分类模型
图2 网格化桥梁裂缝检测技术
图3 VGG网络结构及参数分布
VGG网络是牛津大学和谷歌共同开发的一种深度卷积神经网络,结构如图3所示,由5个卷积模块构成,每个卷积模块中包含了卷积层(convolutional layer,Conv)和最大池化层(maxpooling layer,MaxPool),最后连接三层全连接层(fully connected layer,FC)实现对目标的识别分类。VGG模型在多个迁移学习任务中的表现要优于GoogLeNet,拥有更好的鲁棒性且模型结构简单更适合部署于实际的工程项目中。相比于AlexNet,VGG模型采用多个3×3的卷积核代替AlexNet中较大卷积核(11×11,7×7,5×5),在保证具有相同感受野的条件下,减少模型参数,提升网络深度和识别精度[12]。基于上述原因,本文选择VGG11模型作为分类模型,但是该模型不能直接应用于实际的桥梁表面裂缝检测,主要原因是VGG11模型的参数量巨大,对硬件存储空间的要求高,而实际的桥梁裂缝检测工程大多需要将模型部署到边缘计算设备、嵌入式设备、移动设备等硬件资源受限的设备上。故本文通过分析VGG11模型的参数分布,使用全局平均池化和基于批归一化层的通道剪枝技术对模型进行轻量化改进使模型更适合实际的工程应用。
2.1 全局平均池化
由图3的VGG11网络参数分布可知,模型的参数主要集中在全连接模块(FC Block)的前两层FC中,故使用全局平均池化(golbal average pooling,GAP)替换这两层FC以减少模型参数。如图4所示,不同于FC需要将当前层的每一个节点与上一层的每个节点相连综合前一层的特征,GAP将Conv输出的特征图以自身为单位进行映射,映射结果为一个特征点。
假设最后一次卷积得到的特征图大小为D×D×M,展开(Flatten)后便拥有D×D×M个节点,其中D表示特征图的长和宽,M表示特征图的通道数,当前全连接层有N个节点时,FC的参数量为D×D×M×N。而GAP是以自身为单位进行映射,故不需要计入参数量可以起到大幅减少参数量的目的,并且保留了原有的语义信息可以保证模型的正确识别。
图4 全连接层(左),全局平均池化(右)
2.2 基于批归一化层的通道减枝
本文只需对桥梁裂缝和背景区域两种类别进行分类,故模型在应用过程中,会存在大量参数冗余。通道剪枝是一种有效的模型压缩方法,通过对不重要的神经元、滤波器或者通道进行剪枝,有效压缩模型的参数量和计算量。因而本文采用通道剪枝技术对模型进行轻量化改进。该方法主要包含3个步骤:①对模型进行稀疏训练,获得权值稀疏的神经网络模型;②根据权值重要性对模型进行剪枝,剔除权值重要性程度低的通道;③微调剪枝后模型恢复模型分类精度[13]。
2.2.1 稀疏化训练
对模型进行剪枝操作前,需要通过稀疏化训练使网络中作为重要性指标的参数在训练后趋向于0或者等于0,增大重要性指标之间的差异性,以便于模型剪枝时对卷积通道的筛选。
传统剪枝算法仅依靠参数自身的信息,难以客观判断其重要性,容易造成参数误剪,影响模型性能。批归一化(batch normalization,BN)可以将输入数据的分布情况统一为均值为0,方差为1的标准正态分布,加速网络收敛和改进模型泛化性能,其中的缩放因子更是额外引入的可学习变量能够作为重要性指标客观评价通道的重要性程度[14],故在VGG11模型的每一层Conv后添加一层BN层,并将其中的缩放因子作为通道重要性指标衡量卷积通道的重要性。BN层的计算公式如式(2)所示
(2)
(3)
在训练期间,通过在损失函数L中增加一个关于γ(k)的L1正则项,对模型进行稀疏化。引入正则化系数S增大缩放因子γ(k)之间的差异性,以便更好筛选出重要性较低的通道进行剪枝处理。损失函数公式如式(4)所示
(4)
g(γ)=|γ|
(5)
其中,x,y表示训练数据和标签,W表示模型权重,S表示正则化系数,S越大约束力度越大,g(γ) 表示对缩放因子γ(k)进行L1正则化处理,计算过程如式(5)所示。
2.2.2 剪枝与微调
如图5所示,在完成稀疏训练之后,BN层中的缩放因子分布差异明显,重要性程度低的通道缩放因子趋近于0。通过设定全局阈值th对缩放因子小于该值的通道进行剪枝,th=sortp(N), 其中sortp(.)表示对集合N中的元素进行排序并取P位置的数值,P表示需要剪枝的通道数的百分比,N表示所有缩放因子γ的集合 {γ(1),γ(2),…,γ(k)}。
图5 基于BN层的通道剪枝
最后,将剪枝后的模型进行微调再训练,恢复模型准确率。
3 实验及结果分析
3.1 数据集准备与实验环境
本文数据集由大疆精灵4自带的相机在重庆马桑溪长江大桥采集,控制无人机在桥梁裂缝的附近悬停,调整相机镜头与桥梁裂缝表面平行,并悬停于桥梁裂缝表面30 cm,让无人机沿裂缝方向平稳飞行,连续拍照。通过上述方法得到500张高分辨率桥梁裂缝图像,然后通过滑动窗口法[15]分割采集到的数据集得到10 000张裂缝图像作为原始数据集。分别使用图像标注工具Labelimg对原始数据集进行人工标注作为目标检测模型训练和测试的数据集;按数据集图像中是否含有裂缝图像划分为裂缝图像和背景图像作为分类模型的数据集。图6为桥梁裂缝数据集的部分样本图像及无人机图像。
图6 桥梁裂缝数据集的部分样本图像及无人机图像
实验的硬件环境为:Intel Core i7-9750 h CPU,NVIDIA GeForce GTX 1660Ti GPU;软件环境为:Windows 10操作系统,CUDA 10.0,cuDNN 7.6.4,Visual Studio 2019,OpenCV 3.4,python 3.6.5,pytorch 1.7.1。
3.2 评价指标
本实验研究基于深度分类的轻量级格网桥梁裂缝检测技术的优越性。采用精确度P、召回率R、F1得分以及模型参数量等多个指标进行衡量。精确度P和召回率R的计算公式如下
(6)
(7)
其中,TP表示正确识别出正确样本的个数,FP表示将错误的样本识别为正确样本的个数,FN表示将正确的样本识别为错误样本的个数。
为了全面评估模型,本文综合精确度和召回率使用F1得分对模型进行更加客观的评价。F1得分计算公式如下
(8)
3.3 全局平均池化对模型性能的影响
将VGG11模型最后FC Block中的前两层FC替换为GAP,设置初始学习率为0.0002,训练和测试时每个批次中训练样本的数量(Batch size)为32,使用Adam优化器,迭代次数(Epoch)设置为50。在此条件下分别训练原始VGG11模型和改进后模型VGG-GAP。在精确度,模型参数量两个方面进行对比。结果见表1,将模型的FC替换为GAP后,模型参数量得到大幅缩减,为原始模型的15%。在识别精确度方面,比原始模型提升了0.3%,这说明GAP在减少模型参数量的同时可以在一定程度上抑制模型的过拟合,提高了模型的准确率和鲁棒性。
表1 全局平均池化对模型性能的影响
3.4 模型剪枝
本文采用基于BN层的剪枝技术压缩模型。该技术主要分为3个步骤:①利用L1正则化对模型进行稀疏训练,获得权值稀疏的神经网络模型;②将BN层中的缩放因子γ作为衡量卷积通道重要性的指标对模型进行剪枝,剔除重要性程度低的通道;③微调剪枝后模型恢复模型精度。其中正则化系数S和剪枝率(Percent)是影响剪枝结果的两个重要因素。故对这两个参数的设置进行实验,分别研究不同正则化系数、不同剪枝率对模型性能的影响,选取最佳参数构建模型。
3.4.1 不同正则化系数对模型影响
在模型训练过程中,正则化系数S会影响对缩放因子的约束力度,会给模型训练的结果带来不同程度的影响。为考察其影响程度,本实验在不同正则化系数下对模型进行训练。
设置正则化系数S分别为:0、0.001、0.0001、0.000 01,对模型的损失函数和精确度的变化情况进行统计,设置初始学习率为0.0002,迭代次数(Epoch)设置为50。实验结果如图7所示,当正则化系数S为0.001时,训练结束后模型精确度比其它条件下低了3个百分点,模型的损失函数波动巨大,收敛速度缓慢,收敛后比其它条件下的损失函数高了0.05。由此可得,正则化系数S过高时,对缩放因子γ约束过大,不利于模型的训练导致模型的精确度下降,训练收敛后损失函数变大。在正则化系数S设置为0.0001和0.000 01时,模型性能与正常训练时效果相近,故在保证性能相近和缩放因子(γ)分布稀疏化明显的情况下,选择正则化系数S为0.0001对模型进行稀疏化训练。
图7 不同正则化系数对模型性能的影响
3.4.2 不同剪枝率对模型影响
在正则化系数S为0.0001的条件下,本实验设置0~90%十组不同剪枝率对经过稀疏化训练后得到的模型进行剪枝处理,研究不同剪枝率情况下的模型性能以选取减枝效果最佳的剪枝率。实验结果见表2,随着剪枝率的提升,模型的参数量得到有效的缩减。甚至在剪枝率为20%~40%时,由于模型参数量减少,抑制模型过拟合,微调再训练后的模型精度超过了未剪枝的模型。当剪枝率设置为90%时,模型参数量仅有0.34 MB,远小于原始模型,模型识别的精确度却仅比原始模型降低了0.47%仍然可以满足对桥梁裂缝的高精度识别。综合考虑模型参数量和模型精确度,最终选用剪枝率为90%对模型进行减枝。
表2 不同剪枝率下模型的测试结果
3.5 不同模型的桥梁裂缝检测效果对比
为了验证基于卷积神经网络的轻量级格网桥梁裂缝检测技术的优越性,使用改进后的轻量级格网化桥梁裂缝检测模型(M_model)与两阶段目标检测模型Faster rcnn,单阶段目标检测模型YOLOv4以及基于原始VGG11的格网化桥梁裂缝检测模型(M_model-VGG11),在桥梁裂缝检测应用中的检测效果进行对比测试。分别使用预先标注的目标检测数据集和目标分类数据集对目标检测模型和本文方法进行训练。训练时,迭代次数设置为50,初始学习率设置为0.0002。使用本文方法时,考虑到虽然格网化处理方法划分的n取值越大划分的结果越详细但是网格内的裂缝图像包含的特征越少会影响模型的精确度并且会增大计算量,而n的取值过小时,无法较好的区别裂缝区域与背景区域达到对裂缝位置详细定位的效果,综合考虑这两个因素并结合1.1节中的评价标准,设置M_model 中的n取值为10进行实验。训练完成后各模型测试后的性能统计结果见表3。
表3 不同模型的桥梁裂缝检测效果对比
由表3可知,本文方法精确度P和召回率R的综合评价指标F1得分达到了0.97,比Faster rcnn模型提高了0.3,更是比YOLOv4模型提高了0.51。在模型参数量方面,相比于原始模型M_model-VGG11的255 MB,Faster rcnn的523 MB以及YOLOv4的244 MB,本文所用模型仅有0.34 MB远小于上述所有模型。由此可得,本文所提方法在桥梁裂缝检测场景任务中检测精度更高,模型参数量更小。
结合图8的检测效果图做进一步分析可知,单阶段目标检测模型YOLOv4在应用于桥梁裂缝检测时虽然检测的精确度较高,检测出的裂缝位置基本正确,但是由于先验框选取策略不适用于纹理复杂,分布无规律的桥梁裂缝检测场景,所以存在有严重的裂缝目标漏检现象。两阶段目标检测模型Faster rcnn将检测过程分为两部分,首先通过区域生成网络(region proposal network,RPN)生成大量的先验框(Anchor box),然后对先验框位置区域进行调整与分类。这一过程虽然有效提高了模型应用于桥梁裂缝检测时的召回率,能够检测出图像中大部分的裂缝区域,但是仍然存在少部分裂缝目标漏检的现象,且在第一张效果图中错误的将积灰区域误检为裂缝区域。结合格网化处理的深度分类模型M_model-VGG11能够正确、完整检测出所有桥梁裂缝图像中的裂缝区域且检测结果更加详细,标注框定更加规范。本文所用模型M_model的检测效果与M_model-VGG11基本相同。综上所述,本文设计的基于深度分类的轻量级格网桥梁裂缝检测技术在桥梁裂缝检测场景中拥有良好的检测效果,为基于深度学习的桥梁裂缝检测系统进行边缘部署提供了思路。
图8 不同模型的桥梁裂缝检测效果可视化
4 结束语
本文提出了一种基于深度学习的轻量级格网桥梁裂缝检测技术。根据桥梁裂缝图像的图像特征,设计格网化处理方法,规范桥梁裂缝在图像中的位置分布,结合高性能的深度分类模型实现对桥梁裂缝的高精度检测。通过分析VGG11模型的参数量分布,使用GAP和基于BN层的通道剪枝对模型进行轻量化改进,显著减少了模型的参数量,为基于深度学习的桥梁裂缝检测系统进行边缘部署提供了思路。实验结果表明,本文提出的裂缝检测技术相较于Faster rcnn,YOLOv4的F1得分分别提高了0.3和0.53,改进前后模型的参数量分别为247.2 MB和0.62 MB。