APP下载

基于Swin Transformer的沥青路面病害分类检测研究

2024-02-29杨玉龙杨冰鑫

计算机测量与控制 2024年2期
关键词:准确率病害路面

郭 晨,杨玉龙,左 琛,杨冰鑫

(1.长安大学 信息工程学院,西安 710064;2.长安大学 运输工程学院,西安 710064)

0 引言

沥青路面是当前城市交通中最常见的路面类型,被广泛应用于城市道路、高速公路等交通基础设施。然而,由于受到长期的车辆负荷、自然环境等因素的影响,沥青路面容易出现各种病害[1]。交通运输部2018年12月发布的《公路技术状况评定标准》[2],将沥青路面损坏分为龟裂、块状裂缝、纵向裂缝、横向裂缝、沉陷、车辙、波浪拥包、坑槽、松散、泛油等10种类型。这些病害严重影响着沥青道路的正常使用,不仅导致路面使用寿命缩短,更会导致交通事故风险增加[3]。其中裂缝损坏和坑槽是常见且对路面正常使用影响较大的病害类型。裂缝不仅会破坏沥青路面结构,导致路面整体强度降低,并且会使得雨水和油污渗透到路面中,加剧路面老化和破损,进而使得裂缝发展成更为严重的病害。坑槽损坏使得行车舒适性下降,严重的坑槽损坏直接增加了发生交通事故的风险。因此对于裂缝和坑槽的精准识别分类是十分重要的,可以有效提高交通安全性,延长路面使用寿命,降低维护成本。

早期路面病害检测主要依赖于人工实地检查。这种方法虽然能够较为准确发现病害,然而费时费力,影响公路交通正常运行[4]。以灰度阈值分割、多尺度以及数字形态学为主的数字图像处理检测算法可以在图像中提取出路面病害特征,但是这些算法泛化能力不足,难以满足实际需求[5]。随着计算机技术的发展,传统机器学习方法被引入到路面病害检测中。这些方法通常基于手工设计的特征提取和分类算法,例如支持向量机(SVM)、K近邻(KNN)等[6],提高了检测效率,并且通过合理的特征选择和算法优化,可以实现一定程度的病害分类准确性。然而这些方法特征提取依赖于人工经验,往往需要大量领域知识和实验调优,工作量较大,对于复杂多样的路面病害的泛化能力有限,很难提供高度准确的检测结果[7]。

随着计算机硬件的发展,尤其是GPU(图形处理单元)的广泛应用以及深度学习算法的不断优化,推动了基于深度学习的路面病害检测的发展[8]。卷积神经网络(CNN,convolutional neural network)架构于1998年由LeCun[9]等人提出,卷积神经网络的优点在于可以从原始像素数据中学习到抽象的特征表示,实现对复杂图像的高级语义理解。2019年,沙爱民等[10]提出了一种包含3个CNN的级联模型,进行路面裂缝和坑槽检测。其中,第一个CNN判定路面病害类型,其余神经网络关注裂缝和坑槽的几何结构提取。实验结果表明,级联CNN对路面裂缝与坑槽的识别与测量具有运算高效、结果精准等优势。2020年,陈泽斌等[11]针对复杂背景下路面裂缝,对UNet网络上采样过程的特征融合阶段进行改进,进一步提升CNN的泛化能力和识别精度。为提升路面表观病害检测效率与精度,2021年晏班夫等人[12]提出了基于Faster R-CNN,CNN与形态学的集成方法对路面病害进行快速识别,相较于传统方法提升了效率。然而,卷积神经网络主要依赖局部卷积操作来提取特征,导致其本身缺乏全局依赖性,对于长距离图像特征的提取准确率低下。另一方面CNN的性能依赖层级结构和参数设置,导致其面临精度局限。

Transformer模型在自然语言处理中的成功证明了注意力机制[13]在建模长距离依赖和全局上下文方面的卓越能力。研究人员逐渐开始探索将其应用于计算机视觉领域。2020年Dosovitskiy等人提出的ViT(vision transformer)模型[14]取得了突破性成功,在多个数据集的分类任务上表现出良好的性能。然而ViT全局注意力机制由于需要计算图像每个像素之间的关联性,导致计算资源增加,为处理高分辨率图像和大规模数据集带来挑战。在ViT此基础上,研究人员设计了Swin Transformer[15]。Swin Transformer采用了层级注意力机制,在保留长距离建模优势的基础上降低了计算资源的需求,并且Swin Transformer还表现出强大的扩展能力。

2023年LUO等人[16]为了针对传统神经网络容易丢失边缘细节信息、对于不规则的路面裂缝形状检测效果不佳等问题,提出了名为STrans-YOLOX的路面裂缝检测结构。该结构首先利用CNN进行特征提取,然后通过引入Swin Transformer增加长距离建模能力。实验结果表明该结构在RDD2020数据集上的mAP值达到了63.37%,超越了最先进的模型。

由此可见Swin Transformer在路面病害检测领域具有良好的应用前景,为路面病害检测领域提供了新的思路和方向。然而目前基于Swin Transformer的路面病害检测所用的数据采集手段为车载相机拍摄或者手机拍摄[16-17],这样的图像采集方式成像质量不一,且图像中非路面因素多,对其进行分类或者分割任务相对比较困难。本文使用的数据集为路面检测车在我国高速公路的实际采集数据,具有图像质量高,没有与路面无关因素干扰等特点[18]。

文献[19]的研究成果初步表明,与CNN结合的ViT混合模型,在长距离路面裂缝的识别上具有一定的优势,但是在纵向裂缝的识别能力上有待提高,对于坑槽病害的检测能力尚未可知。并且纯Transformer模型对于路面病害的识别能力也有待研究。因此本文基于路面检测车采集图像引入纯Swin Transformer模型进行沥青路面病害分类检测研究。并与3种经典的CNN模型进行对比,探索Swin Transformer在长距离路面病害结构上的识别优势。针对实验过程中出现过拟合问题,采用更换损失函数、调整初始模型率等方法解决、实验结果表明,Swin Transformer不仅对于横向裂缝,纵向裂缝等长距离裂缝结构具有良好的识别精度,并且对于龟裂、坑槽等病害也有良好的识别效果,整体的分类准确率也要优于CNN模型。通过计算各模型的F1-score,表明Swin Transformer相比于CNN模型具有更好的可靠性。

1 实验模型

1.1 Swin Transformer模型

使用Swin Transformer模型进行路面病害图像分类如图1所示。Swin Transformer的网络结构由4个阶段(Stage)组成,每个Stage包含若干个Swin Transformer Block,本文所采用的Swin_base模型在4个阶段分别有2,2,18,2个Swin Transformer Block。对于输入的路面病害图像,Swin Transformer在图像分割层使用4×4的窗口对图像进行分割,分割后的窗口图像在通道方向展平[20]。原始图像的高和宽缩减为原来的1/4,通道数变为原来的16倍。在首个Stage中通过线性映射将图像块转换为一维向量输入到Swin Transformer Block中。在后续每个Stage都通过图像块拼接层对图像块进行下采样。最后的输出经过一个全局池化层和一个全连接层得到病害的分类结果。

图1 使用Swin Transformer进行路面病害图像分类

两个Swin Transformer Block结构如图2所示,Swin Transform Block都是成对出现的。这是由于在第一个Block中Swin Transformer将原始Transformer中的多头自注意力(MSA,multi-head self-attention)模块替换成了窗口自注意力模块(W-MSA,window multi-head self-attention)。W-MSA不计算整幅图像中所有的像素之间的注意力,而是将图像划分为若干个窗口,对于每个窗口只计算窗口内部图像像素之间的注意力,而不与其他窗口进行交互。单头窗口注意力的计算公式如下:

(1)

图2 两个连续的Swin Transformer Block结构

式中,Q,K,V分别代表查询矩阵Q(Query)、键矩阵K(Key)和值矩阵V(value)。它们是由输入特征进行线性映射后得到的。假设输入特征X的形状为[B,H,W,C]。B代表一次输入数量,H,W,C分别代表输入特征的高、宽和通道数。则X分别与查询权重矩阵WQ,键权重矩阵WK和值权重矩阵WV相乘得到Q,K,V。B代表相对位置编码,用来将注意力的计算范围限制在划定的窗口之内。dk表示键矩阵K的维度,用来帮助模型在不同注意力头之间捕获不同层次特征关系。多头注意力机制是将多个单头注意力模块级联起来,每个注意力头可以捕获不同特征之间的依赖关系,允许模型在多个抽象层次上对输入特征进行编码。多头窗口自注意力公式表示为:

MultiHead(Q,K,V)=Concat(head1,…headh)Wo

(2)

headi=Attention(Qi,Ki,Vi)

(3)

式(2)中,Wo是一个可学习的权重矩阵,用于将注意力头的输出进行线性变换,使得最终的输出与输入特征具有相同的维度。

只在窗口之间计算注意力虽然降低了计算量,但是由于窗口和窗口之间没有信息的交互导致无法获取图像整体的信息。因此Swin Transformer在紧跟着下一个Block中采用滑动窗口注意力机制(SW-MSA,shifted window based multi-head self attention),SW-MSA在W-MSA划分的窗口的基础上将所有窗口通过循环移位的方式进行移动,在移动后的窗口内部再进行注意力计算,将各个窗口的信息重新组合为新的图像表示。使得在计算量不增加的情况下,每个窗口之间有了信息的交互,从而可以获取到图像的全局信息。因此在Swin Transformer中W-MSA和SW-MSA是两两交替出现,除了注意力机制的不同,两个连续Swin Transformer Block中其他组件都是完全相同的,包括两个归一化层(LN,layer normalization),两个残差连接层和一个多层感知机层(MLP,multilayer pereptron)。

1.2 对比模型

为了客观全面地评估Swin Transformer在路面病害图像分类任务上的表现。本文选择ResNet101,Densenet161和EfficientNet_b3三个模型作为对比模型。

ResNet由微软研究院的He等人[21]提出,是深度学习中的一种经典模型。其关键创新是引入了残差连接(Residual Connection),使得网络能够更容易地训练深层模型,有效地解决了传统深层网络中的梯度消失和梯度爆炸问题。ResNet101是ResNet系列中较深、较复杂的一个模型,总共有101层。适用于计算机视觉任务中的图像分类、语义分割等任务。

DenseNet 是由Huang[22]等人提出的一种深度学习架构。它的核心思想是在网络中引入密集连接,以解决深度神经网络中的梯度消失和梯度爆炸问题,同时改进了模型的训练效率和准确性。是深度学习领域重要模型之一。DenseNet161是DenseNet的一个变体,每个Dense Block中包含161层。模型深度和参数量相对较大,在计算机视觉任务上具有强大的特征提取能力。

EfficientNet是由谷歌研究人员Tan等人[23]提出的一种神经网络架构。它的核心思想是通过对网络结构进行均衡缩放来实现高效且优秀的性能。已经在图像分类,目标检测和语义分割等计算机视觉任务上取得了显著成绩。EfficientNet_b3是其中一个较大规模的变体。

这些模型在多个数据集和任务上都经过充分验证,是深度学习领域经典且性能强大的模型,因此可以提供一个相对稳定的基准。

2 实验数据

本文数据采集地点位于我国辽宁省某段高速公路,由路面检测车进行采集。共采集沥青路面图像2 000张,图像尺寸为1 590×2 048。

2.1 图像预处理

路面检测车采集到的原始图像如图3(a)所示,由于采集设备能力的限制,原始图像整体呈现为灰黑色,对比度较低,从视觉效果上很难分辨出路面病害的类型。其灰度直方图如图3(c)所示,灰度值主要集中在50~60之间。这样的图像对于深度学习模型的训练是十分不利的。因此需要一种能够增强图像对比度的方法来对原始图像进行处理,增强图像可视化效果。

图3 直方图

在图像处理领域常见的增强图像对比度方法有直方图均衡[24]、直方图拉伸[25]、直方图规定化[26]和小波变换[27]等。其中直方图拉伸需要手动调整参数、适用性窄,并且容易导致图像亮度过于增强。直方图规定化需要目标直方图来进行匹配,复杂度较高,容易受噪声干扰。小波变换方法参数选择比较困难,容易造成信息损失导致图像细节不够清晰。相对于以上3种图像处理方式,直方图均衡技术具有能够自动增强图像对比度,无需人工干预、避免像素浪费、可以更好地保持图像亮度平衡以及适用性广泛等优势。

因此,选用直方图均衡技术对原始图像进行处理。它的核心思想是以像素灰度值的累积分布函数作为转换函数,重新映射图像的灰度值,使得图像的像素灰度值在整个灰度范围内的分布更加均匀,从而增加图像对比度。

经过直方图均衡后的图像如图3(b)所示,可以看出经过处理后的图像可视化效果得到很大增强。图3(d)展示了其灰度直方图,相较于原图,处理后图像灰度值的分布更加均匀。

2.2 数据集划分

为了增加数据样本的多样性并扩充数据集,使用图像裁剪将图像一分为四。并且为了契合在实际中的应用,对于裁剪后的图像采用图像处理方法重新resize为原始图像的大小。然后进行数据清洗,剔除掉不能使用的数据,共有图像7 650张。按照《公路技术状况评定标准》中对于沥青路面损坏评定标准,将7 560张图像分为横向裂缝、纵向裂缝、块状裂缝、龟裂、坑槽及无病害共6种类型。各病害图像如图4所示。

图4 各病害图像

对于各病害类别图像按照8∶1∶1的方式划分训练集、验证集和测试集。划分后各数据集病害数量如表1所示。

表1 各病害类别图像数量

3 实验及评价指标

3.1 评价指标

选用准确率(accuracy),查全率(recall)和F1-score这3种常用的图像分类评价指标来评估模型的性能。

准确率是最简单直观的评价指标,代表模型正确分类的样本比例,准确率越高表示模型在数据总体上的分类表现越好。计算公式表示为:准确率=正确分类的样本数/所有的样本数。

查全率衡量模型正确预测为正例的样本占所有正例的比例,强调模型正确捕捉到所有实际正例的能力,查全率越高说明模型识别实际正例的能力越高。查全率的公式为:

Recall=TP(TP+FN)

(4)

其中:TP和FN是混淆矩阵中的基本术语,TP表示真正例,指模型正确地预测为正例的样本数;FN表示假反例,指模型错误地预测为负例的样本数。此外还有TN表示真反例,指模型正确地预测为负例的样本数;FP表示假正例,指模型错误地预测为正例的样本数。

F1-score是查准率和查全率的调和平均值,用于综合评估模型的分类性能。F1-score越高,表明模型越可靠。F1-score公式为:

F1-score=(2*Recall*Precision)/(Recall+Precision)

(5)

式(5)中Precision代表查准率,计算公式为:

Precision=TP(/TP+FP)

(6)

式(5)的计算的是二分类问题的F1-score,本文为六分类问题,所以本文的F1-score计算公式如式(7)所示,其中i代表类别序号。

(7)

3.2 实验方法

本文采用双阶段训练模型方法。实验分为初次实验和二次实验。二次实验在初次实验的基础上通过调整初始模型,修改训练参数来解决初次实验中出现的过拟合问题。过拟合通常是指深度学习模型在训练过程中对于训练数据拟合得过于好,以至于捕捉了数据中的噪声和随机性,导致在未见过的新数据上表现较差。一般过拟合现象的表现形式为训练Loss在训练过程中不断下降,而验证Loss先下降再上升。

调整初始模型是将初次实验训练好的模型作为二次实验初始模型。这样的选择是考虑到初次实验完成的模型已经在初次实验参数条件下本文数据集有了较为均衡的拟合效果,故选择其作为初始模型可以对本文的数据具有更加针对性的学习,降低出现过拟合现象的风险。

修改训练参数包括更换损失函数,增加图像增强手段,降低学习率等。

修改损失函数是将交叉熵损失函数更换为MultiClassFocalLossWithAlpha()损失函数。初步实验选择的交叉熵损失函数虽然可以帮助多分类模型判断预测的类别和真实类别之间的相似度。但是它并没有考虑数据量不平衡的情况。故而将损失函数更换为MultiClassFocalLossWithAlpha()损失函数。这是一种扩展的损失函数,通过引入Alpha参数来调整不同类别在损失函数中的权重,以解决多类别分类问题中类别数量不平衡的问题。通过给横向裂缝,纵向裂缝,坑槽等数据量较少的类别增加权重提高在它们在模型训练过程中的影响力。

数据增强手段可以提升模型泛化性能,降低过拟合出现的风险,因此在初次实验的基础上增加随机灰度数据增强方式。学习率用于控制模型在优化过程中更新参数的步长,降低学习率可以使得模型在训练数据上的学习过程更为平缓,减缓模型对训练数据中噪声和异常样本的过度拟合[28]。选择将初次实验中的学习率降低十倍进行二次实验。

3.3 实验设置

本文所有实验均在Linux下,ubuntu操作系统,版本为18.04。CPU型号为Intel Xeon Platinum 8255C,有12个虚拟cpu核心。GPU型号为RTX 3080,显存为10 G。深度学习框架为pytorch,版本为1.1。python版本为3.8。

初次实验中,所有模型训练时Batch设置为16,优化器使用随机梯度下降优化器(SGD),损失函数采用交叉熵损失函数(CrossEntropyLoss),学习率设置为0.001,训练迭代次数设置为100。同时为了在训练过程中增加数据的多样性,提高模型的泛化能力,选择两种数据增强手段,分别为随机裁剪缩放和随机水平翻转。选择训练过程中在验证集上准确率最高的模型作为最终模型。

二次实验损失函数选择为MultiClassFocalLossWithAlpha(),学习率设置为0.000 1,数据增强手段增加随机灰度方式。仍然选择训练过程中验证精度最高的模型作为最终模型,训练Epoch设置为50轮。其他设置均与初次实验相同。

3.4 不同阶段实验对比

初次实验中Swin Transformer和DenseNet的训练Loss曲线分别如图5和图6所示。从它们的Loss曲线图可以看出符合过拟合现象的表现。

图5 Swin Trasformer训练过程Loss值

图6 DenseNet训练过程Loss值

Swin Transformer和DenseNet二次实验最终模型分别在训练集、验证集和测试集上的分类准确率如图7所示。可以看出两个模型3个准确率比较接近,说明模型过拟合问题得到了妥善解决。

图7 Swin Transformer和DenseNet在不同数据集上的分类准确率

为了验证调整初始模型并在新的损失函数上训练是否使得分类模型在本文数据集上有更好的表现。选择初次实验使用的初始模型在新的损失函数上进行100个Epoch的训练,并与二次实验的结果进行对比。结果如图8所示,实验1为不调整初始模型使用新的损失函数后,最终模型在测试集上的测试结果。实验2为调整初始模型并使用新的损失函数在测试集上的测试结果。从图8可以看出,实验2的所有模型的分类准确率整体要比实验1所有模型的分类准确率高,证明所采用的调整初始模型方法可以使得训练模型更好地拟合本文数据集。

图8 不同实验各模型在测试集上的分类准确率

4 实验结果分析

将二次实验完成后所有模型在测试集上的分类结果进行混淆矩阵图绘制,如图9~12所示。

图9 Swin Transformer分类混淆矩阵图

图10 ResNet分类混淆矩阵图

图11 DenseNet分类混淆矩阵图

图12 EfficientNet分类混淆矩阵图

并通过混淆矩阵图计算出各模型的分类准确率,横向裂、纵向裂缝、块状裂缝的查全率以及F1-score如表2所示。

表2 各模型评价指标对比

从表2可得,Swin Transformer相较于CNN模型表现出了更高的分类准确率。相较于ResNet,Densenet和EfficientNet,准确率分别提升了2%,1.6%,和2.6%。对于路面病害而言,横向裂缝、纵向裂缝、块状裂缝数据长距离裂缝信息,对于它们进行精准识别分类并做出及时修复,可以避免它们发展成更为严重的病害,有助于节约维护成本。从表2可以看出Swin Transformer在这3类病害上的查全率也都要优于CNN模型。说明Swin Transformer在长距离裂缝结构识别方面具有优势。

对于龟裂类型病害,图像中裂缝块更为密集,相较于长距离裂缝病害而言是更为严重的病害类型,同时也是图像数量最多的病害类型,对其精准识别也尤为重要。从各模型分类混淆矩阵图可以看出,Swin Transformer对此类病害也具有良好的分类准确率,与DenseNet并列第一。同时对于坑槽型病害,直接影响着行车安全。对其进行精准识别并及时修复有助于减少安全事故的发生。从图中可以看出,在此类病害的识别上,Swin Transformer也表现出了良好的分类性能,与ResNet并列第一。

5 结束语

为了解决传统CNN模型在路面病害检测领域对于长距离病害结构识别能力不足以及精度局限等问题,本文引入Swin Transformer进行沥青路面病害分类检测研究。

本文数据来自路面检测车采集数据,虽然具有图像清晰,无与路面无关因素干扰等优点。但是存在对比度低,数据量少等情况。并且由于是灰度图像,相对于常见数据具有一定的特殊性,因此在训练时容易出现过拟合现象。因此本文首先采用直方图均衡技术处理图像,增强对比度,并对数据进行裁剪扩充数据集。其次针对训练过程中模型过拟合问题,采用更换损失函数并调整初始模型的手段解决。不仅解决了过拟合问题,并且使得模型对本文数据的学习效果得到增加。最终实验结果证明,本文所采用的Swin Trsnformer在路面病害检测任务上相对于CNN模型具有更好的分类检测效果。整体分类准确率达到了80.6%,超越了所有对比模型。不仅在横向裂缝,纵向裂缝,块状裂缝等这些长距离病害结构识别上面具有优势并且对于非长距离病害结构也有很好的分类效果。F1-score计算结果也证明训练好的Swin Transformer模型具有良好的可靠性,能够满足实际工程中对沥青路面病害实现高效精准分类检测的需求。

猜你喜欢

准确率病害路面
早春养羊需防六大病害
小麦常见三种病害咋防治
葡萄病害周年防治历
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
果树休眠期咋防病害
用艺术修补路面
高速公路车牌识别标识站准确率验证法
一款透水路面养护车