基于轻量化PE-YOLO 的桥梁裂缝检测算法研究
2024-01-11郭佳佳董增寿常春波GUOJiajiaDONGZengshouCHANGChunbo
郭佳佳,董增寿,常春波 GUO Jiajia, DONG Zengshou, CHANG Chunbo
(1.太原科技大学 车辆与交通工程学院,山西 太原 030024;2.太原科技大学 电子信息工程学院,山西 太原 030024)
0 引 言
桥梁是重要的交通基础设施,裂缝是混凝土结构桥梁最常见的病害,它的出现和发展将对桥梁的耐久性和承载能力构成威胁,严重影响桥梁建筑的安全使用,是桥梁养护中必须解决的关键性问题。传统人工检测方法需要封闭车道且工作条件不安全、结果不可靠、耗时。因此有必要对裂缝自动检测方法进行研究,将人工程序转换为自动程序,自动化将减少检验成本和人为错误,同时提高检验速度。为了满足各种应用需求,桥梁裂缝自动检测主要分为两大类:基于图像处理的算法[1]和基于深度学习的算法[2]。
传统的数字图像处理方法,如Canny、Sobel、Laplacian 等算子[3]利用像素之间的强度变化定义边缘,裂缝被认为是响应边缘检测滤波器的特征。Abdel-Qader 等人[4]比较了Sobel 算法、Canny 算法、快速傅里叶变换和快速哈尔变换四种基于图像处理的裂缝检测算法,试验表明快速哈尔变换相对更具优势。Mustafa 和Mohamed 在2015 年[5]提出一种支持向量机(SVM) 的自动混凝土裂缝识别方法,对数据进行预处理,从每个图像中提取特征,使用SVM 对图像进行分类。Shi 等人[6]提出一种新的基于随机森林的裂缝检测框架,引入随机森林生成可以识别任意复杂裂缝的高性能检测器。上述研究多利用手工特征表示,限制了细节和复杂语义信息方面的性能,对道路图像中的许多小细节很敏感,不能提供有效的噪声抑制。
卷积神经网络(Convolutional Neural Networks,CNNs) 从图像中提取空间视觉特征(从低级特征到高级特征) 非常强大,能从不同层次和尺度学习不同特征,有效克服桥梁复杂环境下裂缝检测的困难,提高计算机视觉任务的性能速度和准确性,逐渐主导了目标检测领域。Chen 等人[7]提出NBCNN 算法找到图像中所有感兴趣的目标并确定其位置,但混凝土表面的裂缝分布及形状不规则导致识别精度有限。Sun 等人[8]提出一种基于更快区域的CNN(Faster R-CNN) 的损伤检测方法,以提供混凝土裂缝、钢腐蚀、螺栓腐蚀和钢分层检测,支持端到端检测和卷积共享。YOLO 由Redmon 等人[9]在2016 年使用无锚概念来实现单阶段检测。Faster R-CNN 和YOLO 算法在检测桥裂缝方面较为有效,分别是两阶段和单阶段算法的示例。对于桥梁裂缝这种需要进行快速检测的工业场景,常用单阶段算法,但很多算法结构复杂,占用资源较多,需对模型进行轻量化处理便于工业部署。Mandal 等人[10]提出一种基于YOLOv2 的路面裂缝自动检测和分析系统,检测精度有待提升。模型量化是目前模型轻量级的方法之一,通过减小参数的位宽,有效减小模型大小和内存消耗,提高计算效率和速度。方仁渊等人[11]简化YOLOv3 的骨干网络,重构了检测头结构,实现了推理速度上的部分提升却牺牲了过多的精度。Jamiya 等人[12]提出Little-YOLO-SPP 用于摄像头图像中检测车辆,通过深度可分离卷积和点卷积来实现参数的减少。Zhang 等人[13]引入MobileNetV2 实现YOLOv3 算法的轻量化。孔维刚等人[14]提出轻量化YOLOv4 模型减少模型的计算量和参数量,用于嵌入无人机设备。Zhu 等人[15]在YOLOv5 中增加特征融合层之后加入注意力机制来突出目标物体的信息,试验表明有效的注意力机制可以提高模型精度。虽然多数方法对某些情况的检测精度有所提高,仍存在参数量大、计算速度慢等问题。一些轻量级模型可以有效降低模型参数,但无法达到精度和速度之间的平衡。
针对上述问题,本文研究了轻量级方法,提出一种基于YOLOv5l 的轻量化桥梁裂缝检测算法PE-YOLO,以提高检测速度。将YOLOv5l 特征提取网络替换为轻量级PP-LC 网络,形成了一个精简、快速的桥梁裂缝检测网络,使其更加适用低算力场景下的裂缝检测,所需计算资源更少,此外在最后特征融合中加入ECA 注意力机制模块,实现对信息的选择,同时抑制了其他无用信息,提高模型精度。改进后算法参数更少,检测速度更快,提高桥梁检测效率。
1 YOLOv5l 算法
YOLOv5l 架构主要由四部分组成(输入端Input、骨干端Backbone、颈端Neck、预测端Prediction),各部分由不同的卷积(Conv)、串联(Conca)t、C3(集中综合卷积) 模块和SPPF(Spatial Pyramid Pooling-Fas)t 模块构成,允许用不同的大小和比例来识别同一物体。YOLOv5l 结构的各组成部分如图1 所示。
图1 YOLOv5l 网络架构
输入端对图像大小进行自适应调整,利用自适应锚定算法在训练前对数据进行预处理,镶嵌数据增强用来丰富数据集、提高网络的鲁棒性、减少所需图形处理单元(GPU) 数量并降低成本。骨干端被认为是提取特征的编码器层,主要由CBS(Conv、BN 层、SiLU 激活函数)、SPPF 和C3 模块组成。Conv 是YOLOv5l 残差网络块的最小组件,由卷积层、批量归一化(BN) 层和SiLU 激活函数组成。C3 是YOLOv5l 中学习残差特征最重要的模块。它的结构分为两个分支:一个分支将模块与三个具有多个瓶颈的普通卷积层堆叠在一起,一个分支通过一个普通卷积层。最后,两个分支连接起来。SPPF 主要对不同内核大小进行最大池化,通过下采样操作来表示图像特征。颈端由特征金字塔网络FPN 和路径聚合网络PAN 两部分组成,FPN 通过自上而下的将从骨干部分提取的浅层特征与原始深度特征融合,PAN 以自下而上的金字塔传输数据,以改进特征提取并将图像特征传递给最终的检测预测层。预测网络由三个检测层组成,具有不同大小的特征图,用于检测不同大小的目标对象。每个检测层输出相应的向量,最后生成原始图像中物体的预测边界框和类别并对其进行标记。
2 PE-YOLO 算法
2.1 轻量化PP-LC 网络。PP-LCNet[16]是百度提出的轻量化网络架构,可以有效部署于移动端,是一种体积小,运行速度快,计算资源要求低的轻量级模型。本文在原有YOLOv5l 骨干网络的基础上,设计一个轻量级的特征提取网络,如图1 左侧框中结构所示,具有延迟低、参数少、易于满足嵌入式设备的优点。
改进的轻量化网络将原有YOLOv5l 中的Leakyrelu 激活函数转化为了速度更快H-Swish 损失函数,网络精度几乎不受影响;随即进行连续卷积核大小为3×3 的相同个数的DepthSepConv 和卷积核大小为5×5 不同个数的DepthSepConv 卷积操作得到不同倍数的下采样特征图,最后经过快速空间金字塔池SPPF 输出结果。网络中将更大卷积核放置在网络尾部可以达到更高的精度。PP-LC 轻量化网络的具体卷积结构如图2 所示,3×3DepthSepConv(5×5DepthSepConv) 先进行3×3(5×5) 的深度卷积操作,再进行1×1 的点卷积操作,虚线框SE 模块代表可选择选项,在此模块中,对特征图使用全局平均池化(Global Average Pooling,GAP) 压缩,经过两次全连接层(FC) 进行激励,使网络提取更加丰富的特征信息,改进的主干网络中,只在最后一层加入SE 模块能取得更好的性能与速度的平衡。
图2 PP-LC 网络结构
2.2 ECA 模块。注意力机制可以强制网络对本质特征的注意力,增强特征图的表现力,有效提高网络的检测精度,同时略微增加计算工作量和复杂度。高效通道注意力(ECA)[17]使用一维卷积代替SENet[18]中的全连接层,有效降低权重参数,加快推理速度。PE-YOLO 算法在最后预测部分插入此模块,对裂缝特征进行重构和分配,可以提高小目标特征图的比例和权重,加强对裂缝标签区域的模型训练,增强网络的特征提取能力,使模型利用全局特征来区分图像信息水平。且此模块的参数要求较少,在避免模型过于复杂的同时弥补了模型轻量化造成精确度损失。
高效通道注意力机制结构如图3 所示。W、H、C 分别是特征向量的宽度、高度和通道尺寸。首先使用全局平均池化(GAP) 根据每个通道的特征变换将输入特征向量X 进行空间特征压缩提取为所有像素的平均值,得到1×1×C 的特征图,C 为通道维数;随后在维数相同的情况下进行通道特征学习,通过K(K= 5 )大小的快速一维卷积,还是得到1×1×C 的特征图,其中内核大小K 决定了交互作用的覆盖率,因此K 和C 之间存在非线性映射,通过通道维数C 可以计算卷积核大小K;进而利用Sigmoid 激活函数计算出一维卷积的激活值,得到不同的权重来表现渠道之间的相关性和重要性;最后,生成每个通道的权重加权到原始输入要素映射,完成对各通道特征的重新编码,以便为重要特征分配要增强的大权重,则有效特征得到增强,相反的无效特征被分配小权重来抑制。
图3 ECA 结构
3 实验及结果分析
3.1 数据集及实验环境。桥梁裂缝数据没有公共数据集,本文实验数据来自收集的桥梁表面不同光照和背景的裂缝图像1 500张,以及经桥梁裂缝图像相似度对比,选择优秀论文[19]中的裂缝数据图像1 000 张,合并数据图像后均转换为JPG 格式,通过数据增强获得3 500 张裂缝图像。数据增强是为了增加数据的数量和多样性,有助于减少过度适应小的数据集。利用LabelImg注释工具手动绘制矩形形状框到物体的边界中,裂缝对象标签为“crack”注释的值保存在TXT 文件中。数据文件是分为两个文件夹:图片和标签。对每个文件夹按7∶3 比例进行划分为两个子文件夹:train 和valid。
本实验中用于训练和验证算法的硬件设备和软件环境是:处理器AMD Ryzen 9 3950X,内存64gb、Win10 操作系统、Pytorch1.13.0、深度学习框架、CUDA 版本11.6。
3.2 评价指标。不同的考核指标在不同方面反映了检测算法的性能。对于本文的轻量化裂缝检测任务,选择准确率P(Pr ecision )、召回率R (Recall )、平均精度均值mAP (mean Average Precisio n )等评价指标来衡量模型的性能。为了评估算法的全面性,选择参数量(Parameter s )、GFLOPs(浮点运算)、推理时间和每秒传输帧数(Frames Per Second, FPS) 来评价模型的复杂度。准确率计算为正确预测的阳性样本数量与预测为阳性样本的样本数量的比例。
召回率是根据正确预测的所有目标的比例来计算的。
其中:mAP 作为主要指标,可以验证在检测裂缝对象时的总体表现。N 的值为1,表示只有裂缝这一类别。TP(True Positives ),FP (False Positive s ),FN (False Negatives )分别代表真阳性样本即正确检测到的裂缝数量、假阳性样本即检测到错误目标的数量、假阴性样本即未检测到的裂缝的数量,即错过检测。
Parameters 表示算法的参数,由卷积层、批量归一化层、激活层、采样层和池化层组成。其中,卷积层占参数的比例最大。GFLOPs 是千兆浮点运算,可以理解为计算量,代表算法的复杂程度。与参数的数量一样,卷积的计算占最大比例。
其中:C0是输出通道的数量,Ci是输入通道的数量,Kh和Kw分别是卷积核的高度和宽度。
其中:H 和W 分别是特征图的宽度和长度。
3.3 实验结果分析。本文模型训练设置:图像输入大小640×640,初始学习率为0.01,学习速率调整为0.001,Batch size 为16,最大迭代次数为200epoch(每个epoch 意味着所有图像都经过一轮训练)。为了更好且更直观地观察网络的效果,使用可视化工具记录训练过程中损失函数值和平均精确度的变化。PE-YOLO 算法训练损失函数和mAP 的变化趋势如图4、图5 所示。在图4 中可看出网络训练的前50 个epoch,损失值迅速下降,进而进入稳定的收敛阶段。100 个epoch 后,损失值温和减小,损失函数曲线收敛,表明模型训练效果成功。
图4 损失函数
图5 mAP 曲线
为了进一步验证PE-YOLO 算法的有效性,将所提出的PE-YOLO 算法的性能与原YOLOv5l 算法及两阶段目标检测Faster R-CNN 进行了比较。所有检测算法均在统一数据集及环境配置下进行测试,表1 显示了PE-YOLO 算法与其他算法的检测效果比较。
表1 结果对比
使用PP-LC 网络作为骨干后,平均精度均值与原模型基本持平,相比Faster R-CNN 更好;原YOLOv5l 模型及Faster R-CNN 模型的参数量是改进后PE-YOLO 模型的两倍以上;对于GFLOPs 改进后的算法效果最好;推理时间方面,改进后算法只有13.3ms,分别比Faster R-CNN 和YOLOv5l 少8.0ms、14.1ms;每秒传输帧数中PE-YOLO 最多。比较平均精度均值、参数量等评价指标的大小,PE-YOLO 算法具有更好的性能,更好结合了模型参数和模型精确度,表明所提出的改进具有有效性。
4 结 论
针对移动终端或嵌入式设备部署中裂缝检测模型参数量大,精确度难以均衡的问题,提出了一种基于改进YOLOv5l 的桥梁裂缝检测算法PE-YOLO。构建了一个包含3 500 张图像的真实数据集,在此数据集上进行了对比实验,将所提方法与其他模型进行了比较。实验结果表明,提出的模型使用PP-LC 网络替代YOLOv5l 中的骨干网络,实现轻量级特征提取网络,减少整个网络的参数数量,提高模型检测速度。模型参数量下降了2.0 倍,GFLOPs 下降了2.6 倍。为了改善轻量化模型带来的平均精度均值损失,在最终特征融合使用参数量极少的ECA 注意力机制弥补了轻量级网络缺失的精确度。为更加高效的桥梁裂缝自动检测奠定基础。