摘要
针对桥梁高强度螺栓松动检测工作量大、目标小、异常多且难以获取等问题,该文提出一种半监督深度学习模型,即使少量负样本情况下也可得到螺栓松动检测模型,解决了模型训练样本不平衡的问题。YOLOv5-CT 模型对螺栓目标检测的精度达 98.33%。通过对螺栓数据进行预处理,提高 Ganomaly 模型对螺栓图像的重构能力。当隐空间向量值为 100 时,模型的 SAUC最高,具有最佳判别性能。在模型测试阶段,将异常分数阈值设置为 0.295,计算模型对高强度螺栓异常松动检测的精度可达到 85% 以上,实现螺栓的自动识别和检测。
Abstract
High-strength bolt loosening detection of bridges faces problems such as heavy workload, small targets, many anomalies, and difficult collection. Therefore, this paper proposed a semi-supervised deep learning model, which could obtain the bolt loosening detection model even with a small number of negative samples and solve the problem of unbalanced model training samples. The accuracy of the YOLOv5-CT model for bolt target detection reached 98.33%. By preprocessing bolt data, the reconstruction ability of bolt images by the Ganomaly model was improved. When the hidden space vector value was 100, the model had the highest SAUC and the best discriminant performance. In the model test stage, the threshold of abnormal fraction was set to 0.295, and the accuracy of the calculation model for abnormal loosening detection of high-strength bolts could reach more than 85%. As a result, the automatic identification and detection of bolts were realized.
0 引言
高强度螺栓连接件广泛用于桥梁工程,成为钢桥和钢组合桥的主要连接形式之一[1]。当高强度螺栓构件发生应力腐蚀损伤,导致其预紧力大幅下降,出现疲劳松动[2]。如果螺栓松动后没有及时处理,将诱发连接失效的风险累积,最终导致螺栓脱落。南 (宁)广(州)铁路某钢桁梁桥在 2019—2021 年运营期间发现折断掉落的高强度螺栓(图1)共 169 套,高强度螺栓松动脱落直接影响行车安全,桥梁结构的局部稳定性也将受到较大影响。因此,对大量螺栓进行科学、高效检测显得尤为重要。传统的检测方法多为人工目视和接触式检测,使用轴力扭矩复合测试仪逐一排查高强度螺栓,该方法不仅影响交通通行,检测效率低,还受到高空作业等人为因素影响。
图1 钢桁梁桥螺栓脱落
Figure1 Bolt shedding of steel truss girder bridges
国内外学者对螺栓检测展开了大量的研究,主要包括超声波与压电材料、基于图像与基于深度学习等方法。武金等[3] 通过传感元件获得螺栓结构声波信号,并利用 3/2 维谱分析信号,进而判断螺栓与铝板的连接状态;潘勤学等[4] 从弹性理论出发,利用有限元仿真试验,对基于形状因子和材料因子的超声波螺栓进行检测,并分析了温度对检测结果的影响;邵俊华等[5] 在螺栓头部安装压电材料,通过实验室模拟精确螺栓预紧度,并研究了不同环境下的压电峰值频率与螺栓预紧度的关系;蒋田勇等[6] 使用压电波动法对法兰连接中的高强度螺栓健康状态进行研究,通过对时域与频域信号分析,均能反映法兰连接中高强度螺栓松动损伤程度,具有一定的可靠性。使用超声波与压电材料可以客观地检测螺栓松动,若要实现大量的螺栓松动检测,需要对待检螺栓进行分布标定与测试,其检测效率还有待提升。
Park 等[7] 提出了基于图像分割的螺栓检测方法,通过对比螺栓与拼接板的偏转角度来判断螺栓是否松动;Huang 等[8]把有白光散斑的垫圈作为光传感器,通过图像信息来测量垫圈的应变,根据受力分析螺栓松紧情况。基于图像的方法具有成本低、数据获取便捷的特点,可实现螺栓的无损检测,但图像的分析数据处理量大,检测分析速度慢,导致检测结果与周期达不到预期效果。
深度学习解决了人工分析大量数据的麻烦,为客观的数据分析与检测精度提供了保障,其中以卷积神经网络(CNN)为代表的深度学习算法得到了广泛应用[9]。现有的基于机器视觉与深度学习检测方法多分为两步,即定位+检测。赵振兵等[10]将密度聚类 DBSCAN(Density-Based Spatial Clustering of Application with Noise,)算法与改进的特征金字塔 FPN(Feature Pyramid Networks)模型相结合,在自建的螺栓缺销数据集中取得了 76.23% 的精度;罗隆福等[11] 根据 4C 检测车获取的高铁接触网图片,通过改进的 SSD(Single Shot MultiBox Detector)算法对接触网的螺栓进行定位后,再利用 Deeplab v3 plus 语义分割算法来对螺栓进行异常检测;戚银城等[12]提出了一种嵌入双注意力机制的 Faster R-CNN 深度学习框架,通过增强目标螺栓区域的特征来提高检测精度。
基于机器视觉与深度学习技术,改进了螺栓检测方式,提升检测效率与精度,实现螺栓的自动检测。但实际检测中难以辨别螺栓异常松动,导致样本数量少,又监督学习模型易过拟合,检测精度难以提高[13]。本文针对螺栓目标小、定位难、松动多、样本少等问题,提出了基于 YOLOv5-CT 和 Ganomaly 的半监督算法,仅需要少量的螺栓松动样本,自动完成螺栓定位、丢失、松动识别。螺栓检测算法思路和步骤如图2 所示。
图2 螺栓检测模型算法框架
Figure2 Algorithm framework of bolt detection model
1 方法论述
为了明显表示出螺栓的松动特征,在桥梁高强度螺栓表面画上直线,如果螺栓表面的线和钢材面板的线不在一条直线上,则认定该螺栓发生了松动,如图3 所示,上排左右和下排左右 4 颗螺栓。
图3 桥梁高强度螺栓图
Figure3 High-strength bolts of bridges
首先通过 YOLOv5-CT 目标检测模型对螺栓进行定位,同时筛选出丢失的螺栓;然后对目标螺栓区域的图像进行预处理;最后通过 Ganomaly 异常检测模型对螺栓进行松动检测。
1.1 YOLOv5-CT 模型的螺栓定位
YOLOv5 作为当前的 one-stage 目标检测的典型算法,模型检测速度快且精度高,模型结构包括:特征提取主干网络 Backbone、特征融合层 Neck 与预测层 Head。其中,主干网络中的 Focus 为隔行采样拼接结构,将输入图片进行切片操作,减少模型的参数量,提升检测速度;C3 模块为残差网络结构,包含了 3 个标准卷积层以及 Bottleneck 模块,用于特征提取; SPP 结构采用 3 个不同尺度的池化层:5 × 5、9 × 9、 13 × 13,将输入特征最大池化后再进行堆叠,能够极大程度增加感受野,消除输入尺度不一致的影响,产生固定长度的输出。Neck 部分采用 FPN 结构与路径聚合网络 PAN(Path Aggregation Network)将更高层的特征信息进行 Concat 特征融合,进一步提高特征提取能力。预测层通过 8×8、16×16、32×32 共 3 种不同尺度的特征图来生成对应的检测框,并采用非极大值抑制 NMS(Non-Maximum Suppression)获得最优目标检测框,Bounding box 损失函数为 CIOU-Loss,在 DIOU-Loss 的基础上考虑了真实框与预测框的长宽比。
经典的 YOLOv5 模型对于小目标物的螺栓,目标检测存在漏检、误检的情况。为了提高模型的检测精度,更好地利用底层特征信息,本文在 YOLOv5 算法的基础上做出了以下改进:
(1)将 Backbone 层的前 3 个 C3 模块的最后卷积模块中加入 CBAM(Convolutional Block Attention Module)注意力机制。
(2)在特征提取层最后一个 C3 模块中,将原有的 Bottleneck 模块替换为 Transformer 模块,改进后的结构如图4 所示。
图4 YOLOv5-CT 结构图
Figure4 Structure of YOLOv5-CT
1.1.1 CBAM 注意力机制
CBAM 注意力机制包括通道注意力机制模块与空间注意力机制模块,如图5 所示。
图5 CBAM 结构图
Figure5 Structure of CBAM
通道注意力机制对输入为 H×W×C 的特征层 Ft,经过全局平均池化和最大池化,得到 1×1×C 的通道描述,接着使用共享权值通过一个激活函数为 Relu 的卷积层后再做一次卷积操作,然后将得到的两个特征相加后经过 Sigmoid 激活函数得到权重系数 Mc,最后将权重系数 Mc加权到特征层 Ft,得到带有通道注意力机制的特征 Ft_c。经过通道注意力机制后,空间注意力机制对 H×W×C 的特征层 Ft_c 分别进行一次全局平均池化与全局最大池化操作,得到两个 H×W×1 的通道特征,将这两个通道特征拼接后经过一个激活函数为 Sigmoid 的 7×7卷积操作获得权重系数 Ms,最后将获得的权重系数 Ms 与特征层 Ft_c 相乘获得最后的输出特征 Ft_cs。经过 CBAM 注意力机制后的特征层将得到通道和空间维度上的注意力权重,大大提高了各个特征在通道和空间上的联系,更有利于提取目标的有效特征。
1.1.2 Transformer 模块
Transformer 模块结构如图6 所示,整个模块包括两层,第一层是多头注意力层,通过自注意力机制学习特征位置内部的关系;第二层为前馈神经网络层,包括两个全连接网络。第一层与第二层分别使用残差连接。Transformer 模块首先在输入的特征中加入坐标位置编码,然后通过多头注意力机制与残差结构获得带有自注意力机制的特征,接着通过一个前馈神经网络与一个残差结构获得输出,最后进行维度处理。与原有的 Bottleneck 相比,Transformer 在网络的末端提高了捕获全局信息和丰富上下文信息的能力。
图6 Transformer 结构图
Figure6 Structure of transformer
1.2 基于 Ganomaly 的螺栓松动异常检测
生成对抗网络 GAN(Generative Adversarial Net-works)作为机器学习架构的一个分支,对于给定的数据样本类型,它能重构生成世界上不存在的类似数据,起初旨在用于数据集样本的扩充与增强[14-17],随着 GAN 的发展,图片的重构速度与清晰度得到提升,于是 Akcay 等[18] 提出了 Ganomaly 异常检测模型,通过对比重构图信息来区分正常样本与非正常样本。 Ganomaly 与 AnoGAN[19]、Efficient GAN-Based Anomaly Detection[20]不同,Ganomaly 通过对比原图与重构图空间隐藏特征的 L1 差值来推断异常,额外的抽象可以大大提高模型抗噪声能力,Ganomaly 模型结构如图7 所示。
图7 Ganomaly 结构图
Figure7 Structure of Ganomaly
1.2.1 数据重构
整个网络结构可分为 3 个子网络:第 1 个子网络为传统的自编码器结构,将输入的螺栓图像进行编码得到其隐藏特征向量 z,再对 z 采样得到与螺栓图像尺寸大小一致的重构图像;第 2 个子网络将得到的重构图像再进行编码,得到重构图像的隐藏特征向量 ,第 1 个子网络与第 2 个子网络构成了 Ganomaly 的生成器网络;第 3 个子网络为判别网络,判别网络将原图判别为真,重构图判别为假,通过对抗训练的方式,使判别器分辨不出重构图的真假,这时生成器模型性能达到最优。
第 1 个子网络的损失为重建损失,用于减小原始图像与重构图像之间的差异,根据文献[18]所提由于 L1 损失生成的图像要比 L2 损失生成的图像清晰,所以采用 L1 损失:
(1)
式中:x 为输入螺栓图像;为重构图像。第二个子网络的损失是编码网络的损失,采用的是 L2 损失:
(2)
式中:z 为输入螺栓图像编码得到的隐藏特征向量;为重构图像编码得到的隐藏特征向量。为了使网络更加稳定,判别网络的损失设置了特征匹配误差,用于优化图像特征层,采用了最小二乘损失:
(3)
式中:f( x)为输入图像特征;为重构图像特征。优化模型时,所采用的目标函数表示为:
(4)
式中:α、β、γ 分别为对应损失的平衡系数。
1.2.2 异常判别
Ganomaly 模型异常判别程序:首先将待检螺栓送入生成网络模型进行一次编码,得到其隐藏特征向量 z,通过对隐藏特征向量 z 解码获得重构图像;然后再对重构图像进行编码得到重构图像的隐藏特征向量 。对于输入的螺栓图像 x,定义其异常分数如下:
(5)
通过给定的一个区分阈值 φ,若得到异常分数 A(x)>φ,则表示该输入螺栓图像为异常螺栓图像。由于松动螺栓表面的线条与钢材面板的线条发生偏移,与正常螺栓样本存在明显的差别,因此 Ganomaly 无法重构出异常螺栓的偏移线条,得到的异常分数高于阈值 φ,从而判定螺栓为异常螺栓。
1.3 数据预处理
为了提高模型的泛化能力,保证重构图像的清晰度,在异常检测模型的训练与测试前,首先采用 HSV(Hue,Saturation,Value)颜色空间[21]对深色线条提取,设置 HSV 阈值最低为[0,43,46],最高为 [10,255,255],即图像在这个区域内的 HSV 值判定为深色,对深色线条进行 Mask 提取,如图8 所示,从左到右依次是螺栓原图、检测深色线条、提取深色线条的 Mask 图片。
图8 提取深色线条
Figure8 Red line extraction
接着将 Mask 图片的白色像素点 X 和 Y 坐标作为二维数据建立直角坐标系,通过最小二乘法[22]对白色像素点进行线性拟合如图9(a)所示,根据斜率得到图像偏角 a,然后将图像按照偏角 a 旋转后实现水平对齐,最后将旋转后的图片进行圆形分割,保留主要特征信息,如图9(b)所示。
图9 数据对齐
Figure9 Data alignment
2 试验环境及评价标准
2.1 试验环境与数据集
试验所用显卡为 NVIDIA GeForce RTX 3060,编程环境为 python3.8,pytorch1.9.0,使用 CUDA11.1 进行 GPU 加速。使用 GOPRO9 运动相机获取高强度螺栓图像,构建目标数据集,如表1、2 所示。
表1 螺栓定位数据集
Table1 Bolt positioning dataset
表2 螺栓异常检测数据集
Table2 Bolt anomaly detection dataset
2.2 评价标准
2.2.1 目标检测评价
目标检测评价的结果有以下 4 类:正确分类的正样本个数 NTP(True Positive);正确分类的负样本个数 NTN(True Negative);错误分类的正样本个数 NFP (False Positive),错误分类的负样本个数 NFN(False Negative),通过以下公式对模型进行评价:
(6)
(7)
式中:P 为检测的准确率(Precision);R 为召回率 (Recall)。目标检测算法所用的 mAP评价指标由以下公式计算得到:
(8)
(9)
式中:PAP为平均精度;mAP为平均精度均值;Pi、Ri分别为第 i 类检测的准确值、召回率;Nc为所检测类别的总数。
2.2.2 ROC 曲线
在异常检测评价指标中,由于正负样本不均衡问题,使用受试者操作特性曲线 ROC(Receiver Operating Characteristic)来评估,RTPR(True Positive Rate)与 RFPR(False Positive Rate)分别为 ROC 的横纵坐标,SAUC(Area Under Curve)为 ROC 曲线下的面积,SAUC的值越大,表明模型分类效果越好。
3 试验结果与分析
3.1 螺栓定位试验及结果分析
利用 YOLOv5-CT 模型对所标注的训练集进行迭代训练,在本文的训练模拟中,设置目标螺栓标签为“Bolt”,螺栓丢失目标标签为“Lose”,初始的权重学习率为 0.01,权重衰减率为 0.000 5,batchsize 为 8,迭代次数为 300 次。
图10 为改进模型与原始模型训练过程对比,其中图10(a)为 mAP值,图10(b)为训练损失值,根据试验结果看出:在迭代结束时,YOLOv5-CT 模型的 mAP 值高于 YOLOv5 模型;训练的目标损失值低于 YO-LOv5 模型。这表明 YOLOv5-CT 模型对螺栓的检测性能优于原始的模型。
图10 训练结果对比图
Figure10 Comparison of training results
为了验证改进的主干网络有效性,将YOLOv5-CT 模型与目前经典的目标检测算法作对比,并对改进的部分进行消融试验,结果如表3 所示。
表3 不同模型结构的对比试验
Table3 Comparative experiment of different model structures
由表3 可以看出:在相同的输入维度下, Faster-RCNN 具有较高的精度,但由于受模型推断速度的限制,达不到实时检测的目的。YOLOv5-CT 模型较 YOLOv5 模型在检测速度与精度上都有所提升,在本文所提出的方法中目标检测的 mAP值可达到 98.33%,比 YOLOv5 模型提升了 1.3%,且帧数达到 65.54 帧/s,能够进行实时螺栓检测。与经典目标检测算法的对比,YOLOv5-CT 模型 mAP 值相较于 YOLOv3 提高了 1.9%,相较于 YOLOv4 提高了 1.7%,相较于 Faster-RCNN 提高了 0.2%。
图11 为测试的结果。从图11 可以看出: YOLOv5 模型对小目标的特征利用率不足,误检率较高,而 YOLOv5-CT 模型提高了对底层特征的捕捉能力,可以精准地检测到螺栓的丢失,减小误检率。
图11 检测结果对比图
Figure11 Comparison of detection results
3.2 螺栓的异常检测试验及结果分析
3.2.1 模型训练结果及对比
将上述 3.1 中包含正常螺栓区域检测框中的图片进行数据对齐后,送入 Ganomaly 异常检测模型训练,每张螺栓图片的大小为 128×128 像素,学习率为 0.000 2,Batchsize 为 16,迭代 1 200 次,采用文献[18] 建议的权重平衡系数,对抗损失平衡系数 γ 为 1,重建损失平衡系数 α 为 50,编码损失平衡系数 β 为 1。为了分析模型的异常检测性能,保持其他参数不变,选择不同的隐空间向量维度进行试验,训练结果如图12 所示。图12(a)为设置不同维度时的 ROC 曲线,当维度为 100 时,曲线下方包裹的面积最大。从图12 (b)看出:隐藏向量维度为 100 时,SAUC 值最大,说明此时该模型具有最好的判别性能。
图13 展示的是隐空间向量维度设置为 100 时生成器网络重构螺栓的过程。由图13 可发现:随着迭代次数的增加,模型渐渐地重构出训练图像中螺栓的形状与细节;线条与螺栓形状均清晰生成。
3.2.2 模型异常检测结果
图14 为测试结果可视化。
图12 不同隐藏空间维度训练对比
Figure12 Comparison of training in different hidden space dimensions
图13 螺栓图像训练过程可视化
Figure13 Visualization of bolt image training process
图14 测试结果可视化
Figure14 Visualization of test results
从测试结果可以看出:Ganomaly 可以重构出正常螺栓数据的特征信息,当该模型作用于异常螺栓数据时,重构螺栓局部模糊且无法对偏移线条进行重构,说明模型无法生成异常螺栓图像。
通过式(5)对测试集数据进行 L1 差值评估,得到测试数据的异常得分,为了更加直观地反映异常值的分布情况,绘制异常值散点分布图,如图15所示。
图15 正常和异常测试样本的异常值散点图
Figure15 Outlier scatter plots of normal and abnormal test samples
由图15 可以看出:正常螺栓的异常值基本小于 0.3,松动螺栓的异常值明显高于正常螺栓,为了保证检测精度,选择异常阈值为 0.295,即异常值得分大于 0.295 的螺栓数据判定为异常螺栓,最终实现对螺栓的异常松动检测。试验结果如表4 所示。
表4 螺栓异常检测结果
Table4 Abnormal bolt detection results
通过式(6)、(7)计算出检测的精确率为 85%,召回率为 83%,试验证实了模型对螺栓异常松动检测的有效性。综上所述,Ganomaly 算法模型可有效地辨别正常螺栓图像与异常松动螺栓图像,并具有较高的精度,为桥梁高强度螺栓的检测提供了有效的算法工具。
4 结论
针对桥梁高强度螺栓松动检测工作量大、目标小、异常多且难以获取等问题,本文提出了一种半监督深度学习模型,有效解决了桥梁高强度螺栓松动检测中一系列问题。得到以下结论:
(1)在少量负样本的情况下,该模型成功解决了训练样本不平衡的问题。
(2) YOLOv5-CT 模型对螺栓目标检测的精度达到 98.33%。通过对螺栓数据进行预处理,提高了 Ganomaly 模型对螺栓图像的重构能力。当隐空间向量值为 100 时,模型的 SAUC最高,具有最佳判别性能。
(3)在模型测试阶段,将异常分数阈值设置为 0.295,计算模型对高强度螺栓异常松动检测的精度达 85% 以上,实现了螺栓的自动识别和检测。