基于SqueezeNet的混凝土表面裂纹检测研究
2021-11-15金映谷杨亚宁
王 月,金映谷,李 阳,杨亚宁
(大连民族大学 a.信息与通信工程学院;b.机电工程学院,辽宁 大连 116605)
混凝土表面裂纹是民用建筑的主要缺陷,这些缺陷对混凝土建筑结构的美观性、持久性甚至安全性都带来非常不利的影响。因此混凝土表面裂纹缺陷检测在检查建筑物健康方面起着重要作用。现阶段,对于混凝土表面裂纹缺陷的检测大多采用人工检测方法,这种方法劳动强度大,消耗时间长,易造成工人的视觉疲劳,引起检测误差,不仅效率低、检测准确率不高还会增加人力成本。
近年来,随着深度学习、图像处理技术的迅速发展,已有很多科研工作者对混凝土表面缺陷检测进行了研究。王林林[1]提出了一种基于数字图像处理技术的混凝土裂缝特征检测与计算分析方法。首先对采集的图像进行预处理,其次采用基于灰度图二值化的阈值分割算法与Canny边缘检测方法进行处理,得到边界曲线,使用像素计算方法计算裂缝宽度,对最大裂缝宽度和平均裂缝宽度的检测精准度分别为95.81%和92.81%。刘鹏[2]提出了一种基于图像处理的混凝土预制构件裂缝检测系统。首先,对图像进行预处理,减小外界环境因素对图片检测的影响;其次,采用改进脉冲耦合神经网络(PCNN)对混凝土裂缝图像进行分割,以裂缝的几何形态特征为基础对图像中的裂缝进行识别并计算已识别裂缝的长度和平均宽度,实验证明具有可行性。Manjurul Islam和Jong-Myon Kim[3]提出了一种基于机器视觉的深度卷积神经网络裂缝自动检测方法。将深度神经网络和一个基于语义分割的编码器与解码器框架组成,从像素级别进行分类,实验结果表明,该方法对混凝土裂缝分类非常有效,召回率和F1平均值均达到约92%。翟磊[4]等提出了一种基于深度学习的混凝土表面缺陷检测方法。该方法采用两段式学习网络,第一部分提取图像中像素级别的特征以完成对图像的像素分割;第二部分对第一部分处理的图像是否存在缺陷进行判断,实验证明,该方法分割准确率高,鲁棒性强。上述方法取得了较好的缺陷检测成果,但在检测准确率方面仍有待提高。
随着科研人员对卷积神经网络的不断研究,其应用范围也越来越广泛。为探索卷积神经网络在建筑物检测方面的应用,进一步提高检测效率,本文提出了一种基于SqueezeNet的混凝土表面裂纹检测方法,其利用SqueezeNet网络模型训练裂纹缺陷分类器,得到混凝土表面裂纹检测模型,最终利用检测模型对混凝土表面裂纹进行检测。结果表明,该方法获得了较高的准确率,极大的提高了检测效率,为混凝土表面裂纹缺陷检测的研究提供了一定的参考价值。
1 SqueezeNet网络
1.1 Fire Module网络
SqueezeNet是一种轻量级卷积神经网络,该网络结构的核心部分是Fire Module结构。Fire Module结构由Squeeze结构和Expand结构组成,如图1。Squeeze结构采用s1×1个1×1卷积代替3×3卷积核对前一层输出的特征映射进行卷积,从而降低特征维数,完成卷积后经过ReLU激活函数;Expand结构由e1×1个1×1卷积核和e3×3个3×3卷积核共同组成,将卷积的结果进行串联实现扩展,完成卷积后再经过ReLU激活函数。Fire Module中应设置s1×1 图1 Fire Module 本文网络模型结构如图2。主要由卷积层、池化层以及Fire Module层组成。网络输入层的混凝土图像大小为224×224×3。每个卷积层连接ReLU激活函数,改进网络模型的非线性特征;模型共堆叠8个Fire Module,每个Fire Module的参数设置见表1,且每个Fire Module内部先通过Squeeze减少通道数,再通过Expand增加通道数;在第一层、第四层以及第七层后连接降采样的Max Pool,缩减尺寸;在Fire9 Module后,使用ratio大小为0.5的Dropout改善过拟合,接着的卷积层为上一层结果图的每个像素预测分类得分;再使用一个Global Average Pool获得结果图得分,使用Softmax分类器归一化为概率。 表1 各个Fire Module参数设置表 图2 网络模型结构 本文使用了来自中东技术大学[7]的各个校园建筑物的混凝土裂纹图像的开源数据集进行分类。此数据集包含40 000张具有RGB通道的227×227像素的混凝土表面图像,没有应用随机旋转,翻转或倾斜方面的数据增强。这些图像被分为“裂纹”和“无裂纹”两类,其中“无裂纹”数据集是指包含没有任何裂纹的混凝土数据集,部分示例样本如图3。本文随机选取数据集的70%作为训练集,15%作为验证集,15%作为测试集。 a)裂纹 b)无裂纹图3 混凝土图像示例 首先对数据集进行预处理,由于样本数据集大小是227×227,而本文所用网络输入层图像大小是224×224,因此需要将样本图片统一缩放至224×224。 本实验的相关编程均在机器视觉软件HALCON中进行,实验环境配置见表2。 表2 环境配置 本文根据训练的混凝土类型数据集设置Batchsize(批量传输至设备存储器中的图像数)为64,迭代200轮次;InitialLearningRate(初始学习率)为0.001,本文将学习率每50个周期缩小0.1;Momentum(将先前的更新矢量添加到当前更新矢量的程度)设置为0.9;Weightprior(应对训练中存在的过拟合现象的正则化参数)为0.000 5。 设置模型超参数后,对混凝土图像训练集进行训练。其中利用非线性优化算法将损失函数值最小化,利用随机梯度下降算法进行优化,其会在迭代时将前一次迭代次数t的权重更新为新值,如式(1)。 (1) 式中:u表示动量;λ表示学习率;w表示网络权重;f(x,w)表示根据w和输入x所得出的分类结果;vt表示动量产生的影响。本文使用多项式逻辑损失作为损失函数如式(2)。 (2) 其中,yn为one-hot编码目标向量[8],对包含N个图像的批次x的第n个图像xn的标签进行编码;正则项Eα(w)为加权的L2-范数,可以通过控制α来影响它。同时,本文获取模型损失值并绘制损失曲线如图4。在训练和验证集上对分类器进行评估,并绘制训练和验证的错误率曲线如图5。曲线1表示训练过程的误差曲线,曲线2表示验证过程的误差曲线,曲线3表示学习率的变化。 从图4可以看到,当模型迭代至110次时,损失函数基本不变,说明网络已经收敛。在图5中,可以看出该模型在迭代73次之后,误差曲线趋于稳定,训练效果较好。 图4 损失函数曲线 图5 训练、验证误差曲线 本文将通过准确率(Accuracy)、召回率(Recall)、精确率(Precision)和F1值来评价训练出的分类模型的有效性能,其计算公式见表3。 表3 评价指标计算公式 其中,TP(True Positive)表示正样本被网络模型正确的分类到该类别的样本数量;FP(False Positive)表示负样本被网络模型错误分类为正样本的数量;FN(False Negative)表示正样本被网络模型错误分类为负样本的数量;TN(True Negative)表示负样本被网络模型正确分类到负样本的数量。F1值表示网络模型召回率与精确率的调和平均,是对召回率与精确率的综合数值。 本文将测试集样本应用到分类器中进行分类,部分分类结果如图6。其中0表示NOTOK(裂纹),1表示OK(无裂纹),Ground truth class ID表示混凝土表面实际类别,Result class ID表示分类器检测结果,Prediction表示检测结果正确与否。 a)结果一 b)结果二 c)结果三 d)结果四图6 测试集检测结果 经过对测试集进行测试得到的模型混淆矩阵见表4。矩阵的每一行表示分类器的预测类别,每一列表示样本的真实类别,通过3.1节模型性能评价指标能够评定分类器的性能,计算出各类别的召回率、精确率、F1值和准确率见表5。 表4 模型混淆矩阵 表5 模型分类性能 由表5结果可知,本文所用分类器对混凝土裂纹缺陷检测的准确率高达99.85%,且各个性能指标均在99.7%以上,单张平均检测时间0.155 s,检测效果较好。其中,对识别有误的样本分析可知,当混凝土表面有遮挡物(如树叶等)干扰,裂纹较浅、较小时,可能会对模型识别造成影响,如图6d所示的部分识别错误样本。为进一步验证本文算法的有效性,将本文算法同其他算法进行比较,结果见表6。 表6 性能F1比较结果 从表6结果可知,本文算法的F1值比CrackNet-T算法提升了0.011 7,较ResNet提升了0.014 2,较AlexNet提升了0.036 2,检测效果较好。 本文针对混凝土表面裂纹检测准确率不高,效率低的问题,提出一种基于SqueezeNet的混凝土表面裂纹缺陷检测方法。该方法主要利用轻量级卷积神经网络SqueezeNet模型训练检测分类器,实现了高准确率、高效率检测混凝土表面裂纹缺陷的目的。实验证明,该方法提高了检测结果的可靠性和稳定性,检测准确率高达99.85%,可以满足混凝土表面裂纹的实际检测需求。但该方法目前只能对混凝土表面是否存在裂纹缺陷进行检测,后续将通过锐化、边缘检测、分割等技术对混凝土不同裂缝宽度的检测进行研究。1.2 模型构建
2 混凝土表面裂纹缺陷检测
2.1 数据集及其预处理
2.2 环境搭建及超参数设置
2.3 训练过程
3 实验结果与分析
3.1 模型性能评价指标
3.2 结果分析
4 结 语