杨 铄,许清风,王卓琳
(上海市建筑科学研究院有限公司 上海市工程结构安全重点实验室,上海 200032)
经过几十年的城市化发展,中国既有民用建筑、工业厂房、桥梁隧道等建筑和基础设施的存量巨大,这些工程结构经过长期使用后,在荷载、温度效应等因素影响下,累积损伤逐渐增多。同时,中国是地震多发国家,结构在服役期内遭受地震后也会产生损伤劣化。上述工程结构的老旧和累积损伤会严重影响其使用功能,导致其破坏甚至损毁[1-2]。因此,定期对工程结构进行损伤检测和维护,对提升结构的安全性和耐久性具有重要意义[3]。传统的结构损伤检测方法主要为人工检测方法,该方法通过肉眼观察、手工描绘和使用裂缝尺量测等手段来查找、记录和测量结构损伤的数量、位置分布和大小。然而使用该方法识别损伤会导致检测结果主观性较强,并受到视觉疲劳、高空作业等因素影响,容易造成漏检和错检[4],使该方法难以满足实际工程中大量的检测需求。
计算机视觉技术是模拟人类视觉功能的技术,主要包括数字图像处理[5-6]和机器学习[7-8],其重要研究领域之一为图像目标检测,包括工程结构的损伤检测。因该技术具有自动化、非接触、成本低、客观性强等特点,可较好地替代人工损伤检测方法。传统的基于计算机视觉技术的目标检测主要步骤为:①图像预处理,包括降噪、增强等操作;②利用特定算法在候选区提取特征;③选取具有代表性的特征;④利用分类器来进行特征分类;⑤合并具有同一类别特征的候选区,计算目标边界框以完成目标检测。常见的特征主要有SIFT[9](Scale-invariant Feature Transform)、HOG[10](Histogram of Oriented Gradient)等,常见的分类器主要有SVM[11](Support Vector Machine)、DPM[12](Deformable Parts Model)等。近年来,视频监控、无人机和机器人等设备开始广泛应用于工程结构的损伤检测中[13-15],使损伤检测的作业范围更大,图像采集的自动化程度、灵活度和效率更高。同时,使用这些设备也带来了图像采集数量增大、图像背景信息和遮挡增多等问题,使损伤检测更加复杂。传统的图像处理和机器学习方法主要使用人工设计的特征,这些特征主要存在层次级别低、可分性和代表性不强等问题,较难应用于复杂多样的目标检测,使传统视觉技术难以应对上述问题。深度学习作为机器学习方法中的一种,自Hinton等[16]发表深度学习的相关论文以来得到了广泛而深入的研究,已成为近年来的研究热点。相比于传统机器学习方法,深度学习方法具有更强大的特征学习和表达能力,提取的特征更多样化且层次更深,可用来应对大规模的复杂目标检测任务[17]。常见的深度学习方法主要有限制波尔兹曼机[16](Restricted Boltzmann Machine,RBM)、自编码器[18](Autoencode,AE)和卷积神经网络[19](Convolutional Neural Network,CNN)。随着深度学习方法的不断发展,较多学者发现将CNN应用于工程结构的损伤检测,识别效果可获得较大提升[20-22]。
本文对基于CNN模型的工程结构损伤检测方法进行了综述,介绍了用于损伤检测的不同CNN模型的结构、使用模型进行检测的步骤和损伤识别效果,对比了不同模型之间的差别和各自的特点,说明了各类模型的局限性,描述了此类方法在不同结构损伤检测中的应用,并对后续的研究工作进行了展望,以期为CNN模型在工程结构损伤检测中的应用提供参考。
卷积神经网络是一种多层非线性前馈神经网络,最初被用于复杂图像的特征识别和提取,以解决传统图像识别技术仅能提取图像浅层特征的问题,实现对复杂图像的自动化处理。典型的卷积神经网络包括输入层、卷积层、激活层、池化层、全连接层和输出层,如图1所示。
图1 卷积神经网络典型结构
1.1.1 输入层
输入层用于接收输入图像,其大小与输入图像大小相同。该层会将输入的图像转换为像素矩阵(特征图),该矩阵不同位置的数字代表输入图像对应位置上像素的颜色编号。若输入图像为彩色图像,则经输入层转换得到的数据在通道方向上包含R、G、B三个特征图。
1.1.2 卷积层
卷积层是卷积神经网络的核心层,输入层特征图进入卷积层后,会与过滤器(卷积核)进行卷积运算,以提取图像的局部特征。卷积运算包括3个步骤:①进入卷积层的特征图子区域与过滤器进行点积运算(对应元素相乘);②对点积运算得到的数值求和;③将求和所得值与偏置值相加得到输出特征图上的元素。上述步骤如图2所示,其中过滤器的大小和通道数与输入特征图子区域的大小和通道数相同,过滤器中的元素数值(权重)与偏置参数可基于误差反向传播法,应用相关学习技巧(随机梯度下降法、AdaGrad法[23]、Adam法[24]等)进行更新;过滤器滑动步幅的大小对卷积神经网络的特征提取能力和计算量均有较大影响,随步幅增大,输出特征图减小,计算量下降,但图像的局部特征会在一定程度上丢失;卷积层层数亦对卷积神经网络的特征提取能力有较大影响,随卷积层数增多(网络结构深度增加),网络可提取图像中更复杂和抽象的特征,但计算量会随之增加。
图2 卷积运算步骤
1.1.3 激活层
卷积层后通常连接激活层,用以调整或截断卷积层的输出。早期的非线性激活函数包括sigmoid函数和tanh函数,目前激活函数主要为ReLU(Rectified Linear Unit)函数[25]。以上3个函数的表达式为
(1)
(2)
ReLU(x)=max{0,x}
(3)
式中:x为神经元输出值。
由式(1)~(3)可以看出,相比而言,ReLU函数形式更简单且取值无上限,其梯度总为0或1,而sigmoid函数和tanh函数的梯度总在变化且存在梯度消失的问题。因此,使采用ReLU函数的卷积神经网络计算速度更快,精度更高。
1.1.4 池化层
池化层通常设置在激活层之后,通过池化操作(对特征图局部区域下采样)来减小输入数据的空间大小并减少模型参数以降低其复杂度,通过此过程可去除特征图的冗余信息以提取其主要特征,使模型对数据的微小变动具有鲁棒性。池化操作包括平均值池化和最大值池化,对于图像处理问题,采用最大值池化的模型性能更好[26]。最大值池化过程如图3所示。一般而言,池化窗口大小与步幅相同,使池化操作可无重叠地选择特征图局部区域,但在个别情况下,为提高模型性能可使两者不相同[27]。
图3 最大值池化过程
1.1.5 全连接层
全连接层一般位于池化层之后,用于对模型提取的高级特征进行映射,其结构为后一层每个神经元都与当前层所有神经元相连,如图1所示。全连接层将池化层的输出特征图转换为特征向量的步骤如下:①将输出特征图排列成特征向量;②按式(4)计算下一层的特征向量。
xn=f(wnxn-1+bn)
(4)
式中:xn-1、xn分别为第n-1层和第n层的特征向量;wn、bn分别为第n层的权重和偏置向量;f为非线性激活函数。
1.1.6 输出层
输出层位于卷积神经网络模型末端,其激活函数形式应根据任务目的确定。对于回归问题,激活函数一般采用恒等函数;对于分类问题,一般采用softmax函数,此时输出层可称为softmax层。softmax函数用来产生一个图像类别的预测向量p(y(i)=n(i)|x(i);W),其中,x(i)为第i个样本的输出特征向量,y(i)=n(i)表示该样本属于第n(i)个类别(n(i)=1,2,…,n),W为权重矩阵。类别预测向量表达式为
(5)
由式(5)得到的预测向量元素表示图像属于某一类别的概率。
卷积神经网络模型中的参数(卷积核、全连接层的权重)需通过样本数据训练来确定。模型的训练过程也称为学习过程。在训练模型时,需计算模型的损失函数。损失函数是神经网络模型学习过程中的重要指标,代表模型输出值与真实值的差别。学习的目的在于找到使损失函数取值最小的模型参数,本质上属于模型参数的最优化问题。较常见的损失函数主要有平均绝对误差(Mean Absolute Error,MAE)函数、均方误差(Mean Square Error,MSE)函数和交叉熵误差(Cross Entropy Error)函数。在交叉熵误差函数中,将softmax函数与交叉熵损失相结合可得到softmax交叉熵损失函数,该损失函数一般用于分类模型中。MAE损失函数L1、MSE损失函数L2和softmax交叉熵损失函数L3的表达式为
(6)
(7)
(8)
求解网络模型参数时,给出损失函数沿网络模型反向在各层关于模型参数的梯度,并使参数沿梯度方向更新直至误差收敛,此方法被称为随机梯度下降(Stochastic Gradient Descent,SGD)法。使用SGD法训练模型通常效率较低,为此可采用基于SGD法的修正优化方法,如AdaGrad法[23]、Adam法[24]等。
对于训练好的网络模型,需采用验证数据集验证其有效性以评价模型的性能。常用的目标检测模型评价指标如下:
(1)准确率A,即正确检测或分割到的样本或像素数与总样本或总像素数的比值,计算公式为
(9)
式中:Tp为正确识别到的正对象数;TN为正确识别到的负对象数;Fp为错误识别到的正对象数;FN为错误识别到的负对象数。
(2)精确率P,即正确检测或分割出的目标样本或像素数与检测或分割到的所有目标样本或像素数的比值,计算公式为
(10)
(3)召回率R,即正确检测或分割出的目标样本或像素数与实际的目标样本或像素数的比值,计算公式为
(11)
一般情况下,当精确率较高时,召回率较低;反之亦然。为综合评价网络训练效果,使用综合评价指标F1[式(12)]综合考虑精确率和召回率的指标。
(12)
LeCun等[19]于1998年提出了CNN模型LeNet-5,将其用于手写数字的识别。作为早期的卷积神经网络,由于运算能力的限制和过拟合问题,此类模型的应用和发展受到限制。2012年,Krizhevsky等[28]提出了AlexNet模型,其模型结构如图4所示。相比于LeNet-5,该网络的卷积层和池化层有所增加,使其在ImageNet数据集[29]上的图像分类准确率大幅提高。其采用Dropout策略缓解了过拟合问题,并通过使用ReLU激活函数以及采用GPU运算,提高了网络的训练和识别速度。AlexNet模型被提出后,在网络的深度和宽度层面,CNN模型不断有新的发展。
图4 AlexNet模型结构示意
为研究网络层数对模型性能的影响,Simonyan等[30]在AlexNet基础上提出了VGG模型,其选用3×3的卷积核,以减少模型的参数。测试发现,随网络层数增加,图像分类准确率有所提高,但层数超过一定数量时,模型出现退化现象。当模型包含16个卷积层、5个池化层和3个全连接层(VGG-19)时,其图像分类效果最优。为解决网络退化问题,He等[31]提出了ResNet模型,该模型通过引入恒等映射(与卷积层组成残差模块),使反向传递的梯度变化不大,基本解决了模型退化问题并提升了训练速度。同一时期,Szegedy等[32]提出了GoogleNet模型,该模型在深度方向包含多个Inception模块,每个Inception模块在宽度方向包含多个使用不同大小卷积核的卷积运算。以上方法使模型的准确率和鲁棒性显著提升,且模型的训练参数较少。此外,针对ResNet模型的不足,一些学者通过改变残差模块的宽度(模块内卷积层的通道数)提升了网络的识别准确率和训练速度[33],或在每层建立本层与之后各层的前馈连接以提高特征表达的复用性[34]。也有学者将GoogleNet模型中的Inception思想与残差思想相结合,提出了新的模型,其训练速度和性能得到了显著提升[35]。Xie等[36]在ResNet模型中引入了不同于深度和宽度的新维度(Cardinality),即在残差模块内增加多个卷积路径,在未增加网络复杂度的情况下显著提高了图像分类的准确率。Hu等[37]针对卷积神经网络提出了一种新模块(Squeeze-and-excitation Block),使模型能根据各特征通道的重要性,自动调节相应通道的权重,该模型在图像分类的top-5错误率降低至2.251%。
近年来,众多学者对如何将CNN用于图像目标检测进行了大量研究。针对目标识别的CNN模型包括基于分类的算法、基于回归的算法和图像分割算法[38-40]。基于分类和回归的算法属于目标检测算法,其中,基于候选区域的算法[40]应用较多,该算法也被称为两阶段目标检测算法。两阶段目标检测算法首先从待检测图像中选取若干候选区域,然后对其进行特征提取,最后对特征进行分类,以完成目标检测,其典型代表有:R-CNN[41]、SPP-Net[42]、Fast R-CNN[43]、Faster R-CNN[44]、R-FCN[45]和Mask R-CNN[46]等;基于回归的算法不含提取候选区域的过程,因此也被称为单阶段目标检测算法,该算法将卷积神经网络模型看作回归器,直接在待检测图像中回归目标物的位置信息,从而将特征提取、目标分类和位置回归集中在同一卷积神经网络模型中完成,其典型代表有:YOLO系列[47-50]、SSD系列[51-55]、RetinaNet[56]、CornerNet[57]、CenterNet[58]和EfficientDet[59]等。基于CNN的图像分割算法是近年来得到快速发展的一种图像分割技术,其能在识别过程中直接完成目标物的分割工作,可实现目标的像素级提取。
上述基于卷积神经网络的目标检测算法中,当识别目标为结构损伤(表面裂缝、混凝土保护层剥落和局部破坏等)时,即为结构损伤目标检测算法,这类算法主要被用于结构损伤的分类与定位。其中,基于分类的算法包括直接基于经典卷积神经网络的结构损伤识别方法,以及利用特定算法对待测图像提取候选区,在此基础上使用卷积神经网络对结构损伤进行分类和位置回归的基于候选区的算法;基于回归的算法在损伤检测过程中不包含候选区的生成过程,计算速度一般比基于候选区的算法快,但检测精度比后者低。基于分类和基于回归的算法使卷积神经网络更易应用于实际的结构损伤检测中。直接使用CNN遍历图像(直接基于CNN的方法)以及采用基于候选区和回归算法的裂缝识别效果如图5所示。
图5 不同方法的输出结果
Dorafshan等[62]对6种边缘识别器和1种直接基于CNN的方法在用于裂缝检测的包含100张原始图像的混凝土桥面数据集上识别裂缝的性能进行了对比。所用的卷积神经网络采用AlexNet模型的3种训练模式,即完全训练模式、迁移学习模式和分类器模式,分别指直接在裂缝数据集上训练的模型、在大型数据集上对模型进行预训练并使用裂缝数据集继续训练高层次权重的模型和仅在大型数据集上训练的模型。结果表明,使用已有的边缘检测法可识别到图像上53%~79%的裂缝像素(裂缝像素识别召回率为53%~79%),识别到的裂缝宽度均大于0.1 mm,并会在最终的二值图像中残留噪声。相比之下,使用卷积神经网络对图像进行识别其准确率可达到或超过97%。在迁移学习模式下,卷积神经网络可检测到86%的裂缝图像(裂缝图像识别召回率为86%);在完全训练和分类器模式下,卷积神经网络可识别出宽度大于0.08 mm的裂缝,在迁移学习模式下,可识别出宽度大于0.04 mm的裂缝。同时,卷积神经网络检测裂缝的速度更快。此外,将边缘检测器与卷积神经网络结合而构成混合裂缝检测器来检测裂缝,可大幅减少图像上的残留噪声;对卷积神经网络在大型结构损伤数据集中进行预训练后进行迁移学习,可有效提升模型裂缝检测的性能。
韩晓健等[63]认为,直接基于CNN的裂缝识别模型相比传统的机器学习算法虽然可实现裂缝图像特征的自动化提取,显著提高裂缝识别精度,但训练卷积神经网络需要大量标签样本,使直接基于CNN的裂缝识别方法的应用受到极大限制,且此类方法不能直接提取图像上的裂缝。
针对以上缺点,作者选择AlexNet模型,使用直接基于CNN的方法,并调整最后的全连接层以实现裂缝和背景图像的分类。同时,基于迁移学习思想,对网络在已有的大型数据集上进行预训练,得到网络权重(参数)初始值,之后对其在样本数量有限的裂缝数据集上再进行训练,以达到模型可识别裂缝的要求。此外,对识别出的包含裂缝的图像采用双边滤波算法、裂缝灰度增强和基于局部区域阈值的图像分割方法提取裂缝,最终得到只含有裂缝的二值图像。经测试,上述采用迁移学习的混凝土结构裂缝识别模型的识别准确率达到了98%以上。
与混凝土结构表面裂缝类似的是混凝土路面裂缝。针对此类裂缝的检测,王丽苹等[64]提出了一种直接基于CNN的检测方法,该模型仍使用AlexNet架构,并在此基础上对网络结构和神经元数量、卷积层尺寸、参数更新时的学习率等除权重和偏置以外的超参数进行优化。通过相机采集照片建立混凝土路面裂缝彩色和灰度图像数据集用以训练模型。最后,基于Caffe开发平台,分析了数据集大小、颜色信息、网络结构和超参数对该模型性能的影响。分析结果表明,优化后的网络比原AlexNet网络的裂缝识别准确率高,对彩色图像的裂缝识别准确率最高达98.5%。该网络可直接用于彩色标准图像的裂缝检测,减少了图像预处理工作量。
王超等[65]针对以往卷积神经网络结构过于复杂、参数多、设备配置要求高和检测实时性差等问题,提出一种基于轻质化CNN的混凝土结构表面裂缝识别模型。该模型包含21个卷积层、6个池化层和2个不同的Inception模块,且未使用全连接层。每个Inception模块含多个卷积层,以此增加网络宽度。对于如何提高网络模型的泛化能力,从而提高网络的鲁棒性和稳定性,防止过拟合发生,作者认为关键在于网络的训练裂缝数据集应具有背景多样性和裂缝宽度、走向以及光照强度多样性。通过测试集测试模型可知,与卷积神经网络VGG-16(包含13个卷积层、5个池化层和3个全连接层)[30]、GoogleNet和ResNet-50[31]相比,模型的准确率、精确率、召回率和综合评价指标均有所提高;相比于结构相似但存在全连接层的模型,上述指标亦有所提升,且网络识别速度有所提高;与在每个卷积层后进行批量标准化以及未进行批量标准化的模型相比,仅在最后的卷积层之后使用批量标准化层,模型的稳定性最好且裂缝识别效果较好。
Ali等[66]针对混凝土结构裂缝的检测提出了一种卷积神经网络模型,该模型由5个卷积层、3个池化层、2个全连接层和softmax输出层组成,如图6所示。作者将该网络模型与VGG-16、VGG-19、ResNet-50、InceptionV3[67]在8个大小不同的裂缝数据集上的计算时间、裂缝识别结果、识别准确率、精确率和召回率进行对比。结果表明,训练数据量大小和数据样本的不均匀性对模型性能影响较大。上述模型在使用适量的、类型多样的数据进行训练时会表现出较好的性能,当训练数据量过大且多样性降低时,模型泛化能力下降且会出现过拟合现象。该模型和VGG-16在混凝土结构的裂缝检测方面均表现优异,但前者计算速度快,网络复杂程度较低。
图6 一种新提出的CNN结构[66]
由上述研究现状可知,目前针对直接基于CNN算法的结构损伤识别的研究已取得一定进展,但是直接基于CNN的方法大多仅应用于混凝土结构裂缝的识别,涉及的结构损伤类型和应用场景单一,在特殊条件下(如钢结构细微裂纹等[68])该方法的结构损伤识别性能有待提高。
针对老化混凝土桥梁的检测和维护,Kim等[69]采用搭载高分辨率相机的商用无人机来识别桥梁裂缝。首先,使用无人机对桥梁进行拍摄来获得基于点云的背景模型。随后,使用R-CNN模型在通过无人机拍摄得到的图像中识别裂缝并采用图像处理技术分析裂缝宽度和长度。最终,将识别出的裂缝在背景模型中予以呈现。
所使用的R-CNN模型的计算步骤为首先使用Selective Search方法从输入图像中生成候选区,随后对裁剪为统一大小的候选区图像使用CNN模型提取特征并对候选区进行分类。CNN模型中包含3个卷积层及随后的ReLU激活层和最大值池化层、2个全连接层和softmax输出层。考虑到桥梁裂缝数据较少,作者基于迁移学习思想,使用来自Cifar-10数据集[70]中的50 000张图片对模型的卷积层、激活层和池化层部分进行预训练,随后使用384张裂缝图片对模型的全连接层部分进行微调训练。对经微调训练的R-CNN模型进行测试,结果表明该模型可有效检测和定量分析既有桥梁的裂缝,使用该模型结合裂缝自动化呈现技术可实现对桥梁裂缝发展过程的监测。
鉴于以往使用CNN模型识别的结构损伤类型较为单一,Cha等[71]采用基于ZF-Net[72]的Faster R-CNN模型对结构的多种损伤进行检测,损伤类型包括钢结构的适度腐蚀、严重腐蚀、螺栓腐蚀、表面开裂分层和混凝土结构表面开裂。该模型结构如图7所示。由图7可知,模型由用于生成候选区的区域提议网络(Region Proposal Network,RPN)[44]和用于目标定位与分类的卷积神经网络Fast R-CNN构成。RPN和Fast R-CNN共用ZF-Net网络以提取输入图像的特征。相关研究表明,ZF-Net对于目标检测具有较高的训练和检测速度,可对目标进行快速检测[72]。
图7 基于ZF-Net的Faster R-CNN模型结构示意[71]
在训练模型前,使用相机搜集297张分辨率为6 000×4 000的照片并裁剪为2 366张分辨率为500×375的包含上述5种损伤的数据集,并将损伤类型进行标注。随后,在此数据集中随机选择照片以建立模型测试数据集。未入选的图片经数据增广后建立模型训练和验证数据集,采用试错方法确定模型生成提议部分的初始参数使预测准确率最大。该模型在测试集中对5种损伤预测结果的平均精确率可达到89.7%。使用该模型对混凝土裂缝进行识别,与使用典型CNN模型[60]的识别结果相比,基于ZF-Net的Faster R-CNN模型具有更高的计算效率,对于不同大小的输入图像可提供尺寸多变的选框。此外,使用该模型也可实现准实时视频图像损伤检测。
目前针对基于候选区的算法在结构损伤识别中的应用研究已取得一定成果。由上述研究结果可知,基于候选区的算法使用选取候选区的方式来识别结构损伤,与使用CNN模型遍历图像相比,分析速度大为提高。然而,此类模型的识别精度与选取的候选区质量相关,当图像背景复杂或损伤形状不规则时,候选区质量会有所下降(如选框与真实区域的交并比较大,而选中的损伤面积很小)[73],基于候选区算法的损伤识别效果会受到影响。
鉴于已有结构裂缝检测方法效率低的问题,Jiang等[74]提出了一套混凝土结构裂缝实时检测方法。该方法借助爬墙无人机系统(Unmanned Aerial System,UAS)拍摄结构外立面视频,以解决图像变形与图像缩放参数不确定的问题,其拍摄的视频通过无线数据传输器传给智能手机。数据传输器将视频转换为每秒30帧、分辨率为640×480的模拟视频信号。使用UAS拍摄视频时,智能手机同时接收视频信号,其延迟时间小于10 ms。因此,整个裂缝识别过程是实时的。
智能手机在Tensorflow Lite平台上使用基于CNN的裂缝识别模型来检测视频中的结构外立面裂缝。该模型采用基于Single Shot MultiBox Detector(SSD)的单阶段目标检测方法。SSD模型包含基于CNN的特征提取部分(Base Network)以及用于分类和定位的检测部分[51],如图8所示,其中,检测部分采用大小不同的特征图结合多尺度选框(Default Box)来定位裂缝。原有SSD的特征提取部分采用VGG-16,因其层数和参数较多会影响计算速度,作者在此处采用改进的MobileNet网络MobileNetV2。MobileNet可提升模型的实时目标检测性能,能以很小的计算代价达到与VGG-16几乎相同的检测准确率[75-76],MobileNetV2在MobileNet的基础上做了进一步改进,使其梯度传播能力有所提升。此外,作者还将SSD检测部分的卷积层替换为Separable卷积层,形成SSDLite-MobileNetV2模型,以进一步减小模型的计算量。
图8 SSD模型结构示意
在建立结构表面裂缝数据集时,通过UAS获取不同建筑物的表面裂缝视频,通过相关软件将视频按帧数转换为裂缝图像,并按一定比例分配以用于模型的训练和测试。对比该模型与Faster R-CNN、SSD-MobileNet和SSD-MobileNetV2的训练结果可知,Faster R-CNN的预测平均精确率最高但速度最慢,SSDLite-MobileNetV2的速度最快。模型的实时测试结果表明,对于一部4 min的检测视频(包含6960帧图像),SSDLite-MobileNetV2的识别精确率可达到94.48%。
针对混凝土高速路桥梁的损伤快速检测,Zhang等[77]提出了一种基于卷积神经网络YOLOv3[49]的单阶段多种损伤检测模型。YOLOv3网络包括主干网络(Backbone)和头部网络(Head Subnet),如图9所示,其中,主干网络使用DarkNet-53网络[49]在平均值池化层之前的部分,用于提取图像特征,包括卷积层和残差单元;头部网络用于目标分类和定位(框选),采用特征金字塔卷积神经网络模型(Feature Pyramid Network,FPN)[78]在3个层次上检测目标,其中,FPN使用连接操作(Concatenation)来合并不同层次的图像特征。YOLOv3在使用FPN后,分别在3个层次进行下采样。此外,作者采用改进的迁移学习方法以解决预训练数据集和微调训练数据集分布差别大导致训练效果差的问题,并改进了原有的批量正则化方法和损失函数。用于迁移学习的数据集包含2 206张来源于现场检测的桥梁裂缝图片,其中包括混凝土开裂、胀裂、剥离、钢筋暴露和多种检测场景。测试结果表明,原有的YOLOv3模型在交并比IoU阈值为0.5情况下的平均精确率均值为66.2%,在IoU阈值为0.75情况下的平均精确率均值为24.0%。改进的YOLOv3模型的预测精度可分别达到79.9%、47.2%。
图9 YOLOv3结构示意[77]
由上述研究现状可知,目前针对基于回归的结构损伤识别单阶段算法的研究已取得一定进展,而此类算法的特点使针对将其应用于结构损伤实时检测中的研究更为深入和广泛。由单阶段算法的模型架构可知,模型特征提取部分的性能对整体网络的识别速度影响较大。然而,大多数现有的CNN模型结构复杂,参数较多,在一定程度上限制了此类算法在结构损伤实时检测中的应用。此外,在现场进行实时检测时,通常需借助无人机等设备来获取图像,由于设备安全工作条件等要求的限制,此类方法对于结构表面细微损伤的识别能力有待进一步提高。
使用目标检测算法可分类和定位图像中的损伤,若要进一步分析损伤参数(裂缝宽度、损伤面积等),需借助传统的图像处理技术来提取损伤。已有的图像处理技术存在特征提取泛化能力不强、易受环境因素干扰和效率低等缺陷[79]。为了实现在像素级别上直接从图像中分割损伤以便于计算损伤参数,已有较多学者研究了针对结构损伤的基于深度学习的图像分割算法并进行了应用。使用该算法的损伤提取效果如图10所示。
图10 图像分割算法识别结果[80]
目前,采用卷积神经网络来提取损伤,主要是基于全卷积神经网络(Fully Convolution Network,FCN)[80-81]及在其基础上改进的模型来进行的。FCN在传统的CNN模型基础上进行了扩展,包含用于目标分类的全部为卷积层的编码器部分以及包含上采样操作(转置卷积或反卷积)的解码器部分。该模型的结构如图11所示。
图11 FCN模型结构示意[81]
FCN模型中,经典的网络结构有FCN-32s、FCN-16s和FCN-8s,其中,FCN-32s是在编码器完成分类后通过上采样将特征图放大32倍;FCN-16s是将编码器中池化层4与卷积层7输出的特征图合并后放大16倍;FCN-8s是将编码器中的池化层3、池化层4和卷积层7输出的特征图合并后放大8倍。
增加FCN模型解码器部分的层次,形成深度FCN,即可构成U-Net模型[82]。该模型的解码器部分几乎与编码器部分对称,后者由多层卷积模块组成,该模块包含2个卷积层及随后的ReLU激活层和最大值池化层,其在模型中的作用为下采样,即减小特征图的大小并成倍增加特征图通道数量;前者亦包含多个模块,每个模块包括上采样操作和随后的卷积层、相同层次上与编码器之间用于合并特征图的skip连接,以及随后的2个卷积层和ReLU激活层。模型总计包含23个卷积层,其结构如图12所示。
图12 U-Net结构示意[82]
为充分利用深度卷积神经网络(网络层数较多)中具有金字塔形式的特征图体系,从多个尺度提取图像特征并进行目标的像素级分割,Lin等[78]提出了FPN模型,其结构如图13所示,其中,上采样(8×)表示将特征图在长、宽方向上扩大8倍,1/32表示输出特征图在长、宽尺度上为原输入图像的1/32,其余含义同。该模型包含具有特征金字塔形式的由底到顶的路径、由顶到底的路径以及两路经对应层次间的连接。由底到顶的路径可由任意形式的卷积神经网络构成。由顶到底的路径包括上采样操作,在每次上采样后将每层特征图与来自由底到顶路径并经历卷积操作的特征图进行叠加。最后,将分别从不同层次得到的特征图经上采样后进行合并,从而得到最终的预测结果。从结构上看,FPN模型与U-Net模型基本一致,主要区别在于前者在网络的不同层次分别进行预测。
图13 FPN结构示意
对于基于CNN模型的图像分割性能的综合评价,其指标主要有以下几种。
像素准确率(Pixel Accuracy,PA),即图像中各类目标正确分割的像素数与总像素分割数之比RPA,计算公式为
(13)
平均像素准确率(Mean Pixel Accuracy,MPA),即图像中每一类像素的正确分割比例的平均值RMPA,计算公式为
(14)
交并比(Interaction over Union,IoU)为某一类目标正确分割的像素数与该目标真实区域和预测区域并集之比RIoU,计算公式为
(15)
平均交并比(Mean Interaction over Union,MIoU)为每一类目标预测交并比的平均值RMIoU,计算公式为
(16)
频权交并比(Frequency Weighted Intersection over Union,FWIoU)在MIoU的基础上对每一种类目标设置不同权重,RFWIoU计算公式为
(17)
式中:Puu为类别为u的像素被推断属于类别u的像素数;Puv为类别为u的像素被推断属于类别v的像素数;Pvu为类别为v的像素被推断属于类别u的像素数;RIoU,i为第i类目标的交并比;N为目标类别数。
当需要分割的像素仅有2类(目标和背景)时,式(13)等同于式(9)。
为解决原有基于图像处理的裂缝检测技术易受到光照变化等因素干扰的问题,Ye等[83]建立了基于FCN架构的卷积神经网络Ci-Net,以实现性能稳定的像素级混凝土结构裂缝检测。该模型包括卷积层、池化层、上采样层、反卷积层和softmax分类器。笔者从CrackForest数据集[84]和TITS2016数据集[85]采集到762张包含混凝土裂缝的图像,并裁剪为12 500张分辨率为80×80且裂缝位于或靠近中心的图像,将其中12 000张图像用于训练和验证模型,两者数量之比为7∶3。模型训练结果表明,在循环训练40 epoch后,模型的裂缝提取平均准确率可达到93.6%。将剩余500张图像用于测试,结果表明,模型提取裂缝的精确率为84%,召回率为82%,交并比为72.7%,综合评价指标为60.4%。经对比分析可知,采用Ci-Net提取混凝土裂缝的效果明显优于使用Sobel和Canny边缘检测法的效果。
Li等[86]针对混凝土结构多种损伤的像素级提取,提出了一种改进的FCN模型。该模型将DenseNet-121[34]作为编码器,DenseNet-121中包含卷积层、DenseBlock模块和最大值池化层。模型的解码器中包含上采样层、Crop层(用于裁剪特征图)和Eltwise层(用于叠加特征图)。使用智能手机采集了1 375张分辨率为4 032×3 016的包含裂缝、剥落、风化和孔洞4类损伤的照片,对损伤进行像素级标记,同时将上述照片缩小至分辨率为504×376的图像以减小模型训练的计算量。随后,通过数据增广来增加图像数量,将用于训练、验证和测试的图像数量分别设为2 000、200、550。采用迁移学习方法将模型的权重和偏置初始化,并通过试错方法选出性能最优的学习率,按此学习率训练的模型RPA可达到98.61%,RMPA可达到91.59%,RMIoU可达到84.53%,RFWIoU可达到97.34%。使用550张图像对模型进行测试,结果表明:该模型对混凝土结构多重损伤进行像素级提取的性能较为稳定;增加训练图像数量可进一步提高模型的性能和泛化能力。使用基于FCN的模型SegNet[87]在相同的损伤数据集上对其进行训练并与改进的FCN模型相比,SegNet的损伤分割性能指标MIoU和FWIoU均低于改进的FCN模型;SegNet对于混凝土的剥落损伤提取结果较好,对于裂缝、风化和孔洞的提取面积相比实际面积偏大。此外,由于改进的FCN模型编码器使用了DenseNet-121,模型大小和参数量大为减小,使其可安装于智能手机以便于实际应用。
Meng[88]基于全卷积神经网络U-Net架构建立了一种用于分割混凝土裂缝的模型CrackNet。考虑到ResNet-101[31]相比于VGG-16参数少且能提取更深层的目标特征,模型编码器采用ResNet-101。建立数据集时,首先在相关文献和实际工程中搜集裂缝图片,随后使用基于python的图像数据增广工具Augmentor对已有图像进行旋转、拉伸和缩放,以扩展裂缝数据,并采用专业软件Labelme对裂缝进行像素级标记。为减少模型运算所需的存储空间和冗余信息,笔者将需要处理的彩色图像转换为灰度图。训练模型时采用交叉熵形式的损失函数,其表达式为
(18)
图像的整体损失值取各像素点损失平均值。在评估模型性能时,对于预测结果分别按照式(10)和式(11)计算裂缝分割的精确率和召回率。通过与全卷积模型FCN-8s和FCN-32s的预测结果进行对比可知,FCN分割裂缝的精度较低,不能较好地排除噪声干扰;对于不同类型混凝土裂缝的分割,CrackNet的性能较稳定且精确较高。
钢筋混凝土(RC)结构多类型地震损伤的定量评估是震损RC构件性能退化和震后RC结构安全性评估的关键,而量化地震损伤首先要较精确地检测损伤。为此,Miao等[89]开发了一种针对RC构件多类别损伤的基于CNN的识别方法,其能够实现对震后RC构件出现的裂缝、剥落、压碎以及钢筋外露、屈曲和断裂进行定位、分类和分割。
针对损伤数据中不同类型损伤样本数量差异大(数据不均衡)的问题,笔者开发了针对目标及其像素的数据均衡化技术,该技术通过一定检验过程保证每类损伤在数据集中达到足够数量使数据集达到样本级别下的数据均衡,并通过改进损失函数使数据集达到像素级别的数据均衡,进而使模型识别不同类型损伤的能力更均衡化。同时,利用分层采样使数据集中的背景样本达到足够数量,进而使模型识别复杂背景的能力增强。笔者基于U-Net架构建立了Damage-Net模型,其结构相对于U-Net有所调整,使模型输入和输出图像的大小相同。模型的编码器采用VGG-16架构并结合迁移学习方法,使模型的训练效率和预测性能有所提高。通过编码器和解码器之间的4个skip连接来建构图像中的细微边界。
Damage-Net模型经不同数据集训练后,分别得到可用于识别裂缝的卷积神经网络Crack-Net和可用于识别除裂缝外4种破坏的卷积神经网络Category-Net。测试结果表明,2种模型的损伤识别性能较好,在测试集上的MIoU可达到70%。
由上述可知,针对可进行结构损伤像素级分割的FCN模型和在其基础上发展而来的U-Net模型的研究已取得较大进展,为基于损伤的结构安全性量化评估提供了支撑。然而,此类基于“编码器-解码器”架构的CNN模型仍存在结构复杂、参数多的问题,对于图像噪声的抗干扰能力有待进一步提高。此外,训练数据集对此类模型损伤分割的性能影响较大[90]。目前不同类型的结构损伤分割数据集较缺乏,且在像素级别上标记损伤较为复杂,标记时需考虑不同的结构材质、图像亮度和损伤的大小与粗细,工作量较大,而利用现有的数据增广技术也不能完全模拟实际场景中结构损伤的多样性。以上因素在一定程度上限制了此类模型的应用。
Yang等[91]针对路面裂缝检测问题,提出了一种基于FPN结合分层推进(Hierarchical Boosting)模块的卷积神经网络模型,其中FPN用于将高层信息引入低层特征图,以提升低层的特征表达能力;通过分层推进模块调整样本权重,使模型能更好地应对较难处理的裂缝分割案例。测试结果表明,与全卷积神经网络FCN-8s相比,使用该模型提取的裂缝更加清晰。
混凝土结构裂缝与路面裂缝在形式上较为接近,则将上述方法中的训练样本替换为混凝土结构裂缝时,可实现此类裂缝的像素级分割。Ni等[92]据此提出了一种可分割混凝土结构裂缝的卷积神经网络模型。该模型核心包含2个模块,分别为用于分类和特征提取的CNN模块(此处作者使用GoogleNet,也可使用VGG-19、ResNet-101等性能好的网络)以及用于裂缝分割的裂缝描绘网络(Crack Delineation Network,CDN)模块。CDN包含用于合并经预训练的CNN提取所得特征图的FPN网络和连续卷积层,以实现裂缝的像素级检测和分割。测试结果表明,合并的特征图通道数对模型的裂缝分割性能影响较大;将CDN模块内合并特征图的方法优化后,其裂缝识别性能进一步提高,检测和分割分辨率为6 000×4 000的图像的混凝土裂缝平均需花费16 s,分析速度有待进一步提高。
由上述研究结果可知,由于FPN模型可通过融合不同层次的特征来进行目标分割,可在一定程度上提升损伤分割的准确度和抗干扰能力,但也在一定程度上降低了检测效率。
结构外立面的损伤能够很大程度反映结构的健康状况。为了对结构外立面损伤进行可视化、自动化的评估,Guo等[93]提出了利用基于规则的深度学习进行以评估为目的的混凝土结构外立面损伤检测方法。使用该方法可得到包含重要信息(外立面损伤的类型、位置、数量和大小等)的外立面有效评估区,以便于损伤评估。
该方法基于Mask R-CNN模型,而该模型常用于目标的分类、定位和分割,其中包含4个模块:①用于特征提取的CNN模块;②用于合并不同级别特征的FPN模块;③用于区域提议的RPN模块;④预测模块,此模块将生成的候选区域作为兴趣区域(Region of Interest,RoI),利用RoIAlign层提取具有空间信息的特征,并通过框选分支和Mask分支来分别定位、分类和分割目标。模型结构如图14所示,其中CNN模块使用ResNet-50网络。此外,将设计好的规则分别集成在数据集生成、模型训练和模型预测3个步骤中。在数据集生成阶段,依据分类和分割法则对损伤区域进行注释和标记,随后依据定位法则结合选框生成程序,将原有注释合并为有效评估区内基于规则的注释;在模型训练阶段,利用提议加权法则提高训练样本的均匀性;在模型预测阶段,利用调整法则生成符合相关评估要求的立面评估区。
图14 Mask R-CNN结构示意
模型训练结果表明,与未考虑相应法则的不同模型共同进行10次重复训练后,该模型在各类损伤(开裂、剥落和分层)的定位和分割方面的平均精确率均值最高且性能最稳定;使用提议加权法则可有效减小噪声对模型稳定性的影响。此外,根据不同要求,在设置同类损伤之间不同的距离阈值(一处损伤内2块损伤间距离的最大值)后,损伤检测结果显示该模型仍具有良好而稳定的性能。
Kim等[94]针对混凝土结构的多种损伤检测,采用在COCO数据集[95]上经过预训练的Mask R-CNN模型,对765张从互联网和实际现场搜集的包含裂缝、剥落、表面风化和钢筋暴露的混凝土结构照片进行微调训练,来定位、分类和分割几种典型损伤。模型中的CNN模块采用ResNet-101网络。使用25张取自实际中包含上述损伤且周边含有不同杂物的图像来检测损伤以验证模型的有效性。结果表明:在损伤定位方面,平均精确率可达到90.41%,平均召回率可达到90.81%;在损伤分割方面,平均精确率可达到87.24%,平均召回率可达到87.58%。模型对细长型损伤的检测性能和分割精细程度还有待进一步提高。
由上述研究结果可知,基于Mask R-CNN的结构损伤识别方法可同时实现对结构损伤的定位(框选)和像素级分割,克服了基于FCN及其衍生模型仅能分割损伤,不能预测损伤位置信息的缺陷。然而,由于此类模型包含区域提议步骤,其识别结构损伤的效果仍会受到选框质量的影响。此外,其分割损伤的精度会受到Mask分支分辨率的影响,当分辨率较大时,模型的计算时间会有所增加。
实际中,除混凝土结构在既有结构中占比很大,既有砌体结构亦量大面广,检测此类结构损伤十分重要。同时,既有钢结构和古建筑木结构的损伤检测亦不容忽视。当结构类型不同时,图像中的损伤形态(裂缝形式和破坏形态)和背景信息会有较大不同,进而影响基于CNN模型的损伤识别效果。以下对研究基于CNN检测砌体结构、钢结构和古建筑木结构损伤的典型案例进行描述。
Dais等[96]研究了采用深度学习方法检测图像中砌体墙裂缝的性能,包括裂缝检测和分割。因缺乏砌体结构损伤数据,作者建立了包含不同大小和走向的裂缝(以阶梯形裂缝为主)以及复杂背景的砌体照片数据集,其中部分照片如图15所示。识别和分割裂缝时,使用了不同的卷积神经网络并结合迁移学习方法。通过使用在ImageNet数据集上预训练的不同卷积神经网络可知,利用MobileNet进行图像分类可达到95.3%的准确率;将不同预训练卷积神经网络模型作为编码器,并结合U-Net和FPN,用于分割图像中的砌体裂缝,测试结果表明,对于结合预训练的MobileNet模型U-Net-MobileNet以及结合预训练的InceptionV3模型FPN-InceptionV3,两者综合评价指标达到79.6%。此外,当U-Net-MobileNet的卷积神经网络未预训练时,分割砌体裂缝时其综合评价指标会降至75.4%;使用经砌体裂缝数据集训练的U-Net-MobileNet分割混凝土裂缝时,其综合评价指标为74.7%,下降幅度不大,表明该模型具有分割不同类型结构裂缝的潜力。
图15 部分砌体裂缝照片[96]
针对钢结构桥梁连接板疲劳裂缝的检测,Dung等[97]研究了基于CNN的疲劳裂缝识别性能和不同训练方法对模型性能的影响。作者分析了3种训练方法对裂缝识别性能的影响:①使用包含2个卷积模块和1个全连接层的浅层卷积神经网络,并搜集试验和检测现场的图片对其进行训练;②使用在ImageNet数据集上预训练的卷积神经网络VGG-16,对全连接层进行微调训练;③在第2种方法基础上,对VGG-16第2个卷积模块和其后的全连接层进行微调训练,学习率定为1×10-4。
测试结果表明,采用VGG-16结合数据增广技术并使用第3种方法训练,裂缝识别性能最好,精确率可达到98%。部分疲劳裂缝识别结果如图16所示。
图16 部分裂缝识别结果
古建筑木结构一般存在裂缝、腐朽和变形等损伤,检测这些损伤是修复前的重要步骤。Liu等[98]针对古建筑木结构的裂缝采用YOLOv3模型对其进行检测。训练模型时,首先采集光照强度不同的木结构古塔裂缝照片,其中不同形式的裂缝比例大致均衡。随后,将其裁剪至分辨率为800×800的图片并进行标记,结合数据增广技术最终获得包含不同类型木结构裂缝的图片,并按一定比例分配以用于模型的训练、验证和测试,如图17所示。结果表明,该模型对木结构裂缝的识别精确率较高,速度较快。
图17 不同形式的木结构裂缝[98]
目前,基于CNN的结构损伤识别研究已取得了较大进展和较多成果。
由于结构出现损伤的场景较特殊,且工程结构类型较多,破坏机制复杂多样,损伤种类较多,导致不同类型结构损伤的样本数量有限。同时,标注损伤的工作量较大。以上因素使可用来训练基于CNN的结构损伤识别模型的不同类型结构损伤数据集较缺乏。现阶段多数研究采用迁移学习方法来解决此类问题,结果表明该方法较为有效[99]。因此,基于迁移学习思想,研究更合理高效的针对预训练模型的微调训练方法,以减少样本数据的依赖性,提高模型的训练效率,是基于CNN的结构损伤识别模型在训练方法上的重要研究方向和发展趋势。同时,通过进一步开发数据增广与均衡技术,以减轻样本数量和类型不足带来的影响并提高训练样本的均匀性和多样性,是增强结构损伤识别模型检测效果的关键。此外,深入研究用于结构损伤识别的基于生成对抗网络的无监督或半监督学习方法[100-102]以减轻或免去标注样本的工作,这也是基于CNN的结构损伤识别的发展方向。
对于结构损伤的现场实时检测,目前主要依赖单阶段目标检测算法。此类场景中,损伤检测的速度和精度主要受算法的模型结构和图像采集设备(无人机等)性能的影响。因此,为进一步提升使用此类算法进行损伤实时检测的性能,需进一步研究参数少、结构更优化的CNN主干模型,以用于单阶段算法中,并开发环境适应能力更强的采集设备,提升摄像机等硬件的性能。
针对结构损伤的像素级分割,目前研究和应用较多的是基于全卷积神经网络及其衍生模型的方法,以及结合定位功能的基于CNN的分割方法。此类方法可为结构的损伤量化评估和受损结构抗震性能评估提供支撑[103-104]。使用此类方法分割结构损伤的精度和识别不同损伤的泛化能力主要受训练数据集样本复杂性和多样性的影响;调整此类方法的模型架构和超参数可提高复杂和细微损伤的分割能力,但同时会增加模型的计算量。因此,综合全卷积神经网络、特征金字塔网络和定位框选网络的优点,开发轻质化的CNN损伤分割模型,并进一步补充取自实际场景的多种结构损伤的像素级标记数据集,是此类方法的发展方向。
本文针对卷积神经网络模型在工程结构损伤检测中的应用,回顾了损伤检测所使用的不同卷积神经网络模型。在对比不同模型的架构特点和损伤识别效果后,得到以下主要结论:
(1)若训练模型的结构损伤样本数量充足且种类多,则使用基于CNN的损伤识别方法识别结构损伤的结果较精确,模型泛化能力较高。
(2)采用单阶段的目标检测算法可显著提高损伤识别速度,实现实时检测,但精度不够高;采用基于U-Net、FPN或Mask R-CNN的图像分割算法可实现结构损伤的像素级提取,为损伤的定量分析创造条件,但模型的参数较多,计算量大,需要较好的硬件资源。
(3)在缺乏训练样本时,可采用数据增广技术来扩充样本数量并结合迁移学习方法来训练模型,以达到较好的损伤识别效果,也可避免因训练样本较少而出现过拟合。
(4)一般采用基于CNN的方法仅可精确识别一种结构的损伤,且识别微小损伤的精度有限。对于不同类型损伤,由于训练样本数量不均衡,总体损伤识别精度不高;对于不同种类结构的损伤,需分别建立相应的CNN模型来识别。
针对以上结论中基于CNN的结构损伤识别方法存在的问题,可考虑进行以下方面的尝试以期有所改进:
(1)针对高精度实时损伤检测,可从模型架构入手,通过设计轻量化卷积神经网络,在大幅减少模型参数量、提高检测速度的同时,保持模型较高的检测精度。
(2)针对微小损伤的识别,考虑到分辨率低、所占像素比少的特点,可从模型架构入手,采用优化的融合多尺度图像特征的方法,结合不同层次的语义信息来提高检测精度。
(3)对于通过同一个CNN模型进行不同种类结构的损伤和不同形式损伤的识别,可考虑改进模型训练和生成训练样本的方法,结合数据平衡技术以提高使用同一模型识别不同损伤的精度。