刘珂铖 谢群 李雁军
文章编号:1671-3559(2024)03-0341-09DOI:10.13349/j.cnki.jdxbn.20240024.003
摘要: 针对现有混凝土构件裂缝人工检测操作不仅费时、 费力,而且易出现错检、 误检、 漏检,以及部分位置难以开展检测的问题,提出一种基于深度学习YOLOX(You Only Look Once)算法的混凝土构件裂缝智能化检测方法;首先采集、 整理包含各类混凝土构件的典型裂缝图像,并通过图像数据增强建立Pascal VOC数据集,然后基于Facebook公司开发的深度学习框架Pytorch,利用数据集训练YOLOX算法,并进行裂缝识别和验证;将训练完成后YOLOX算法移植至搭载安卓系统的手机端,进行现场实时检测操作。结果表明:在迭代次数为700时,混凝土构件裂缝识别精度可达88.84%,能有效筛分混凝土构件表面裂缝,并排除其他干扰项,证明了所提出的方法对裂缝具有较高的识别精度和广泛的适用性;经试验测试,移植至手机端的YOLOX算法能在提升便携性的同时保证高效、准确的检测效果,具有良好的应用前景。
关键词: 深度学习; YOLOX(You Only Look Once)算法; 混凝土构件; 裂缝识别
中图分类号: TV544; TP18; TP391.41
文献标志码: A
开放科学识别码(OSID码):
Intelligent Detection Method for Cracks of Concrete Members Based on
Deep Learning YOLOX Algorithm
LIU Kecheng, XIE Qun, LI Yanjun
(School of Civil Engineering and Architecture, University of Jinan, Jinan 250022, Shandong, China)
Abstract: In view of the problem that the existing artificial detection technology for cracks of concrete members was not only time-consuming and laborious but also prone to misdiagnosis, false detection, miss detection, and difficulties in detecting some locations, an intelligent detection method for cracks of concrete elements based on deep learning YOLOX (You Only Look Once) algorithm was proposed. Typical crack images of various concrete members were firstly collected and sorted out, and a Pascal VOC dataset was established through image data enhancement. On the basis of deep learning framework Pytorch developed by Facebook, YOLOX algorithm was then trained and verified for crack identification by using the dataset. YOLOX algorithm after training was transplanted to the mobile phone terminal with Android system for on-site real-time detection. The results show that the crack identification accuracy concrete members can reach 88.84% when the iteration number is 700. Cracks on the surface of concrete members can be effectively screened out and other interference items can be excluded, which indicates that the proposed method has high identification accuracy and wide applicability for cracks. Through the test, YOLOX algorithm transplanted to mobile phone terminals can not only improve portability but also ensure the efficient and accurate detection effect, which has a good application prospect.
Keywords: deep learning; YOLOX (You Only Look Once) algorithm; concrete member; crack identification
收稿日期: 2022-12-21 網络首发时间:2024-01-24T18:14:34
基金项目: 国家自然科学基金项目(52108214); 山东省住房城乡建设科技计划项目(2020-K5-18); 建筑结构加固改造与地下空间
工程教育部重点实验室开放课题项目(MEKL202006)
第一作者简介: 刘珂铖(1999—),男,福建福州人。硕士研究生,研究方向为图像识别与智慧建造。E-mail:llwllkc0214@foxmail.com。
通信作者简介: 谢群(1979—),男,山东聊城人。教授,博士,博士生导师,研究方向为新材料结构、 新型装配式结构、 工程结构抗灾。
E-mail:cea_xieq@ujn.edu.cn。
网络首发地址: https://link.cnki.net/urlid/37.1378.N.20240124.1122.006
混凝土构件破坏开裂产生的裂缝是构件受力和变形最直观和主要的损伤形式[1]。 在实际工程建筑物的检测鉴定中, 裂缝损伤属于可靠性鉴定的主要指标, 在混凝土结构受力性能试验中, 裂缝也是混凝土结构加载过程中测量的关键指标。 据美国联邦公路管理局2001年公开报道[2], 公路桥梁工程中人工检测裂缝损伤存在主观性强、 精确性差、 定期检测中易忽略混凝土剪切裂缝等重要裂缝等重大缺陷。 在试验中对混凝土构件裂缝的检测目前同样主要由人工进行[3-5], 但是试验通常具有往复加载时间长、 加载级数多等特点[6], 因此人工监测不仅费时、 费力, 无法实时动态监测, 而且极易因记录者疲劳等而导致错检、 误检和漏检。 探寻一种便捷、 高效的试验中混凝土构件裂缝的检测方法, 对我国日益增长的建筑抗震性能试验需求具有重大现实意义。
目前,有关试验中混凝土构件裂缝检测的研究匮乏。鉴于传统的裂缝人工检测方式在该领域中的诸多缺陷,利用近年来崛起的人工智能是改善现状的最佳方法。深度学习(deep learning, DL)是源于机器学习(machine learning, ML)的新兴研究方向,深度学习的引入使机器学习更接近实现人工智能的终极目标。由于深度学习具有重现性能良好、处理精度和泛用性广等诸多优点,因此受到施工方和研究者的广泛关注与青睐[7-8]。目前,深度学习在数据模拟、 材料分析、 事故分析及智能检测等多项土木建筑工程领域中均具有良好的应用前景[9-13]。
YOLO(You Only Look Once)系列算法仅浏览1次即可识别出图像中物体的类别和位置,YOLOX算法作为该系列算法的改进版,综合了系列算法的网络的优点,使用Focus、 CSPnet网络结构进行特征提取,通过Mosaic结构进行数据增强,创新地应用了新的解耦头、 Anchor Free思想和SimOTA动态正样本匹配方法,大幅改善了YOLO系列算法的识别效果。本文中以各类典型混凝土构件为研究对象,提出一种基于深度学习YOLOX算法的混凝土构件裂缝智能化检测方法,对混凝土构件裂缝进行识别和验证。
1 YOLOX算法结构及裂缝识别流程
目前学者们已提出一些基于深度学习的裂缝检测方法[14-16],并证明了这些方法在裂缝检测和识别中的良好可行性。这些方法通常应用于建成一段时间的道路和桥梁,裂缝尺寸较大,对识别精度要求较低,同时这些裂缝图像的像素点与灰度值存在重叠,并且与背景和噪声的形态存在差异,因此研究者后续选用卷积神经网络(convolutional neural network, CNN)[17],或区域卷积神经网络(region-based CNN, R-CNN)[18]等改进算法。在试验过程中,構件开裂最先形成的裂缝多为细小裂缝,这些裂缝在图像中的像素点较小,因此应用于道路和桥梁的深度学习方法泛用性不足,无法直接应用于试验中混凝土构件裂缝的检测。更重要的是,传统的神经元网络系统在裂缝识别时对设备要求高,训练周期长,通常需要训练上万次才能达到较高的识别精度[19-20],无法满足低成本、易操作和高效检测混凝土构件裂缝的实际需求。
针对混凝土构件裂缝检测面临的实际问题,本文中提出一种兼具识别快、 运行效率高、 准确率较高等特性[21]的基于深度学习YOLOX算法的混凝土构件裂缝智能化检测方法。图1所示为YOLOX算法与其他最先进的物体探测算法的速度与精度均值对比[21]。由图可知,相对于作为工业应用最广泛的探测器之一的YOLOv3算法,YOLOX算法在COCO数据集上的精度均值(average precision)更高,在图像处理器(GPU)Tesla V100上以每秒68.9帧的速率实现精度均值50%,识别效果优于同期发布的YOLOv5算法[21]。
按照网络深度和特征图深度的大小,YOLOX算法可分为轻量级和标准2种类型,YOLOX-s算法是标准网络中深度最小、运行最快的算法,能够实现端对端的目标检测,该算法选用单个神经网络直接预测图像中物品的类别和边界概率[21],更适用于现场实际应用环境,因此本文中将YOLOX-s算法应用于混凝土构件裂缝识别。
用于混凝土构件裂缝识别的YOLOX算法的结构如图2所示,其中CSPDarknet是主干特征提取网络,输入的图像首先在该网络中进行特征提取,提取
到的特征称为特征层,是输入图像的特征集合;特征金字塔网络(feature pyramid network, FPN)是加强特征提取网络,特征层在该网络中进行特征融合,从而结合不同尺度的特征信息;Yolo Head是分类器和回归器,经由前2个结构产出的加强特征层,具有宽度、 高度和通道个数等尺度,此时可将特征图看作多个特征点的集合,而每个特征点都有等同于通道个数的特征,分类器和回归器Yolo Head的作用即为判断是否有物体与这些特征点相对应。图3所示为YOLOX算法中分类器和回归器Yolo Head与旧版本YOLO算法的区别[21]。由图2、 3可知,与旧版本YOLO算法不同,在YOLOX算法结构中,分类器和回归器Yolo Head分成两大部分,分别实现对应功能,直到最后进行预测时才进行整合。综上所述,整个YOLOX算法的工作流程可以概括为特征提取—特征加强—预测特征点对应的物体类别。
利用YOLOX算法识别裂缝的主要步骤如下: 1)混凝土构件裂缝检测模块根据输入的裂缝图像进行识别和标注; 2)裂缝识别模块对检测到的混凝土构件裂缝区域裁剪出子图像,根据子图像中是否存在裂缝进行图像二分类; 3)预测得出裂缝的识别结果。
2 数据集建立
2.1 图像采集及扩增
由于国内尚没有混凝土构件裂缝的公开数据集,因此以济南大学存有的试验用混凝土构件、 实际工程混凝土构件作为研究对象,构件类型涵盖钢筋-混凝土梁、 柱、 板、 剪力墙、 基础、 外墙等,采集这些构件表面裂缝的图像。
为了提高混凝土构件裂缝识别的准确性, 对采集到的图像通过图像旋转、 翻转、 模糊、 增加噪点、 改变亮度等方式进行图像数据扩增, 增加数据集的样本量, 有效缓解算法的过拟合, 提高算法的泛化能力。 裂缝原图及原图增强样例如图4所示。 处理后的数据集中图像数据扩增至702个,建立基于Pascal VOC格式的混凝土构件裂缝数据集, 然后按照训练用数据集与验证用数据集中数据个数之比为9∶1, 将所建立的混凝土构件数据集划分为训练用数据集和验证用数据集。
2.2 数据处理
在建立数据集后,进行图像裂缝标注时需要考虑混凝土构件裂缝的实际特性,正确判断图像中的裂缝是否为构件开裂破坏时产生的裂缝,同时区分其他干扰项,例如辨别风干开裂的漆面褶皱、 构件上标注的人工笔迹等。
选用Labelimg系统对数据集图像进行标注, 混凝土构件裂缝标注样例如图5所示。 标注完成后, Labelimg系统生成含有裂缝标注信息的扩展名为txt的文本文件, 包含标注的裂缝个数和坐标等信息。
3 YOLOX算法训练及识别效果分析
3.1 训练配置
选用华硕品牌飞行堡垒系列GL502VML型便携式计算机进行训练, 硬件配置为英伟达品牌精视系列GTX 1060 3GB型GPU, 英特尔品牌酷睿系列i7-6700HQ型中央处理器(CPU);操作系统为Windows 10 21H1版本,开发平台选用Pycharm,软件环境为Python 3.6;深度学习框架选用Facebook公司开发的Pytorch 1.2.0;根据建立的Pascal VOC格式的混凝土构件裂缝数据集训练YOLOX-s算法。
3.2 训练方案
选取标注的数据集中的裂缝图像库作为训练样本。 初始权重文件为yolox_s.pth; 使用单GPU加速训练; 算法的最大、 最小学习率分别设定为0.01、 0.000 1, 学习率下降方式选为余弦退火(cosine annealing); 选用随机梯度下降(stochastic gradient descent, SGD)优化器,为了防止过拟合,设置权值衰减系数为0.000 5。
3.3 损失计算
YOLOX算法的检测头主要分为Cls、 Reg和Obj这3个部分,其中Cls用于判断每个特征点包含物体的种类,Reg用于判断特征点的回归参数,Obj用于判断特征点是否包含物体。YOLOX算法在训练迭代中的损失L由分类损失Lcls、 定位损失Lreg和置信度损失Lobj这3个部分组成,其中Lcls和Lreg只计算正样本的损失,Lobj中对正、 负样本的损失均进行计算。损失L的计算公式[21]为
L=Lcls+λLreg+LobjNpos ,(1)
式中: λ为定位损失Lreg的平衡系数,设置为5; Npos为正样本的锚点个数。
3.4 评价指标
通常采用广泛应用于目标检测算法模型的识别效果评估[22-24]的平均精度均值(mean average precision)作为衡量模型性能的评价指标;但本文所提出的方法仅对混凝土构件裂缝进行目标检测,因此本文中YOLOX算法可以直接选用精度均值作为裂缝识别的评价指标。精度均值能有效反映模型识别的效果优劣,数值越大则结果越好。根据精度P与召回率R的关系建立P-R曲线,精度均值Pa在对P-R曲线下方区域的面积进行积分后得出,具体公式[22-24]为
P=TpTp+Fp ,(2)
R=TpTp+Fn ,(3)
Pa=∫10PRdR ,(4)
式中: Tp为被正确识别为含有裂缝的正样本数量; Fp为被正确识别为未含有裂缝的负样本数量; Fn为未被正确识别为含有裂缝的正样本的个数。
3.5 训练结果
YOLOX算法共进行1 000次训练,算法训练的迭代次数与损失、 平均精度均值的关系如图6所示,算法训练时的损失如表1所示。
训练损失、 验证损失—YOLOX算法在
训练用数据集、 验证用数据集中的损失。
由图6、 表1可知,当迭代次数为700时,YOLOX算法在训练用数据集中的损失(简称训练损失)和验证用数据集中的损失(简称验证损失)相近,表明此时精度已相对较高,同时验证损失与后续迭代次数为800~1 000时差别较小,可见YOLOX算法在迭代次数为700时即可满足现实场景中的泛化误差,因此综合考虑时间成本,选取迭代次数为700时的权值文件作为YOLOX算法训练结果。
由于YOLOX算法的精度和召回率随门限值的变化而变化, 因此通常定义门限值为0.5。 YOLOX算法训练后的精度、 召回率、 精度均值、 精度與召回率的调和均值F1的评估曲线如图7所示。 由图可知, 裂缝识别的精度、 召回率分别为88.84%、 85.27%, 精度均值为88.4%, 精度与召回率的调和均值F1达到87%, 说明此时YOLOX算法的裂缝识别能力和准确性均较高。
3.6 训练后YOLOX算法的裂缝识别效果测试
为了进一步验证算法精度,选取其他混凝土构件图像,裂缝识别效果测试结果见图8。由图8(a)、 (b)可知,训练完成后的YOLOX算法能够较好地区分裂缝和人工笔迹等其他干扰项,识别出测试图中存在的裂缝;由图8(c)可知,在表面粗糙的构件基础上,复杂背景中的细小裂缝仍能被正确识别;由图8(d)可知,未存有裂缝的图像不进行标注。综上所述,训练后的YOLOX算法整体标注效果与传统人工标注水平相近。
4 YOLOX算法移植至安卓系统
4.1 基于ncnn框架的移植
将训练完成后的YOLOX算法运用于裂缝识别时, 通常需要采用计算机结合拍摄设备的协同方式进行, 实施流程比传统人工检测和计算机图像处理方法有所改进, 但是仍过于繁琐, 并且专业拍摄设备便携性欠佳。 为了便于实际裂缝检测操作, 基于ncnn框架和Open CV-mobile编译库将训练完成后的YOLOX算法移植至手机端。
Open CV-mobile是基于跨平台的计算机视觉和机器学习的Open CV软件库改进开发的最小化编译库, 包含大部分常用的图像处理功能。ncnn框架是一个专为手机端极致优化的高性能神经网络前向计算依赖框架, 也是业界首个专精于手机端优化的开源神经网络推断库, 2017年7月由腾讯优图实验室开源发布。ncnn框架与传统手机端编译框架caffe-android-lib、 mini-caffe在YOLOX算法运行过程中内存使用量、 CPU使用率和得出基准结果所需时间对比如图9所示。由图可知:相较于传统手机端编译框架, ncnn框架在YOLOX算法运行前、 后内存使用量更小, 运行YOLOX算法時CPU占用率相对更低, 得出基准结果更快。基于ncnn框架, 开发者无须依赖第三方库就能将深度学习算法封装产出人工智能应用的手机软件(mobile application,
APP),以提升算法的便携性。
4.2 YOLOX算法移植方案
在目前全球范围内的三大主流手机系统中,Apple公司开发的iOS系统用户人数超过17亿,占比为34%,Google公司开源开发的安卓(Android)系统用户人数超过30亿,占比为60%,华为公司开发的鸿蒙系统用户人数为3.2亿,占比为6%,大多数用户持有的智能手机均搭载安卓系统,因此优先考虑将YOLOX算法移植至安卓系统。
采用Android Studio、 Visual Studio 2019软件平台进行算法移植。在配置protobuf、 ncnn框架后, 修改YOLOX算法结构中的部分参数以适配手机软件的开发, 由YOLOX算法中提供的工具包export_onnx.py生成开放神经网络交换(open neural network exchange, ONNX)格式文件,存储训练完成的算法并便于算法在不同框架间进行转移,命名为yolox.onnx;然后由onnx2ncnn代码产出参数文件yolox-nano.param和编译后的二进制文件yolox-nano.bin,将其中部分参数修正后导入Android Studio软件中的ncnn框架,连接搭载基于安卓系统定制的MIUI系统的Redmi K50 Ultra型智能手机,生成集成训练完成的YOLOX算法的手机软件,命名为yolox_demo。
4.3 YOLOX算法移植前、 后裂缝识别效果对比测试
测试手机软件文件yolox_demo完整,确认未发生闪退等故障后,设计一根钢筋-混凝土柱用于实际裂缝检测。采用伺服作动器对钢筋-混凝土柱施加水平往复荷载,构件屈服前由力控制加载,屈服后选用位移控制加载,每级加载循环3次。钢筋-混凝土柱检测现场如图10所示。
钢筋-混凝土柱开始加载后,启动yolox_demo手机软件调用手机摄像头,该软件可选用GPU模式和CPU模式,其中GPU模式识别裂缝效果更佳,因此选用GPU模式与移植前的计算机端共同对检测过程中的钢筋-混凝土柱实时拍摄识别,检测同一构件相同表面处的裂缝进行对比,移植前、后YOLOX算法检测效果对比如图11所示,其中左、 右图分别为手机端、计算机端识别结果,2种终端
对同一区域的裂缝识别结果以双向箭头标示。以图11(b)为例,使用手机端识别2处裂缝的概率分别为88.0%、 78.8%,而计算机端识别对应区域的概率则为94.0%、 83.0%,分别相差6.0%、 4.2%。原因是手机端设备的硬件配置弱于计算机端设备的,并且当前技术尚无法解决[25-26],但是整体来看,移植前、 后识别效果相近,同时相对于计算机端,手机端具有更高的便携性和更多的应用场景[26],证明本文所提出的方法中YOLOX算法的移植在提升YOLOX算法便携性的同时仍然保证了较高的识别精度。
5 结论
本文中通过采集各类典型混凝土构件图像,提出基于深度学习YOLOX算法的混凝土构件裂缝智能化检测方法,得到如下结论:
1)经采集的图像数据集训练迭代后,混凝土构件裂缝识别精度可达88.84%,本文所提出的方法具有识别准确率高、 易于从业人员操作、 对训练样本数量要求少等众多优点,相较现有的人工检测,保障了检查人员的人身安全,同时解决了人工检测时易因记录者主观原因错检、 误检和漏检等技术难题,在试验和工程中兼具广泛应用前景和实际工程价值。
2)将训练后的YOLOX算法经由ncnn框架和Open CV-mobile编译库封装,移植至搭载安卓系统的智能手机,并检测钢筋-混凝土柱实际受力产生的裂缝,识别效果良好,并且移植前、 后识别精度相近,移植方法在保证识别精度的同时有效提升了算法的便携性和实时性。
参考文献:
[1] 中国建筑科学研究院. 混凝土结构试验方法标准: GB/T 50152—2012[S]. 北京: 中国建筑工业出版社, 2014: 6-7, 31-32.
[2] GRAYBEALBA,PHARESBM,ROLANDER D D,et al.Visual inspection of highway bridges[J]. Journal of Nondestructive Evaluation, 2002, 21(3): 67.
[3] 徐文靖, 邵晓东, 马骉, 等. 采用UHPC连接的预制拼装桥墩构造及试验研究[J]. 土木工程学报, 2022, 55(12): 105.
[4] 付波, 李梓捷, 林晨豪, 等. 考虑竖向荷载的外包装饰层钢板剪力墙抗震性能试验研究[J]. 工业建筑, 2022, 52(11): 49.
[5] 杨丹, 贾彬, 郭瑞. GFRP筋混凝土梁柱组合体抗震性能试验研究[J]. 建筑结构学报, 2022, 43(10): 225.
[6] 中国建筑科学研究院. 建筑抗震试验规程: JGJ/T 101—2015[S]. 北京: 中国建筑工业出版社, 2015: 10.
[7] 孙志军, 薛磊, 许阳明, 等. 深度学习研究综述[J]. 计算机应用研究, 2012, 29(8): 2806.
[8] 周飞燕, 金林鹏, 董军. 卷积神经网络研究综述[J]. 计算机学报, 2017, 40(6): 1229.
[9] 王琛, 樊健生. 基于深度學习的土木工程结构全过程响应智能计算框架[J]. 建筑结构学报, 2023, 44(1): 259.
[10] 李潇睿, 班晓娟, 袁兆麟, 等. 工业场景下基于深度学习的时序预测方法及应用[J]. 工程科学学报, 2022, 44(4): 757.
[11] 胡媛媛. 依赖深度学习算法的建筑工程管理项目最优化控制[J]. 贵阳学院学报(自然科学版), 2021, 16(4): 92.
[12] 李岩, 杨豪杰, 刘辉, 等. 基于深度学习的混凝土裂缝检测研究[J]. 信息技术与信息化, 2021(12): 233.
[13] 刘婷, 张社荣, 王超, 等. 水利施工事故文本智能分析的BERT-BiLSTM混合模型[J]. 水力发电学报, 2022, 41(7): 1.
[14] 曹锦纲, 杨国田, 杨锡运. 基于注意力机制的深度学习路面裂缝检测[J]. 计算机辅助设计与图形学学报, 2020, 32(8): 1324.
[15] 王琨. 基于深度学习的路面破损检测研究及应用[D]. 武汉: 武汉理工大学, 2019.
[16] 杨杰文, 章光, 陈西江, 等. 基于深度学习的较复杂背景下桥梁裂缝检测[J]. 铁道科学与工程学报, 2020, 17(11): 2722.
[17] 吴向东, 赵健康, 刘传奇. 基于CNN与CRF的桥梁裂缝检测算法[J]. 计算机工程与设计, 2021, 42(1): 51.
[18] 肖力炀, 李伟, 袁博, 等. 一种基于改进实例分割模型的路面裂缝检测方法[J]. 武汉大学学报(信息科学版), 2023, 48(5): 765.
[19] 李太文, 范昕炜. 基于Faster R-CNN的道路裂缝识别[J]. 电子技术应用, 2020, 46(7): 53.
[20] 杨文伟, 杨霞, 蒙卉恩. 基于压电陶瓷的PVA-ECC混凝土柱裂缝损伤监测[J]. 沈阳建筑大学学报(自然科学版), 2020, 36(4): 628.
[21] GEZ,LIUST,WANGF,etal.YOLOX:exceedingYOLOseries in 2021[EB/OL]. (2021-08-06)[2022-10-09]. https://doi.org/10.48550/arXiv.2107.08430.
[22] REDMON J, FARHADI A. YOLOv3: an incremental improvement[EB/OL]. (2018-04-08) [2022-10-09]. https://doi.org/10.48550/arXiv.1804.02767.
[23] 李健伟, 曲长文, 彭书娟, 等. 基于卷积神经网络的SAR图像舰船目标检测[J]. 系统工程与电子技术, 2018, 40(9): 1957.
[24] CAO G,XIE X,YANG W,et al.Feature-fused SSD:fast detection for small objects[EB/OL]. (2018-11-27) [2022-10-09]. https://doi.org/10.48550/arXiv.1709.05054.
[25] 《电脑迷》编辑部. 手机CPU与电脑CPU的性能究竟差多少[J]. 电脑迷, 2015(8): 55.
[26] 刘九如, 尹茗. 我国智能终端产业发展研究及政策建议[J]. 产业经济评论, 2022(6): 11, 15-16.
(责任编辑:王 耘)