过民龙,张 凯,杨厚易
(广东省建筑科学研究院集团股份有限公司 广州 510500)
钢筋锈蚀是导致混凝土结构承载性能与耐久性下降的主要诱因之一,其严重危害了结构的可靠性与安全性[1]。大量工程调查与研究表明,钢筋锈蚀产物体积膨胀是混凝土结构耐久性劣化演化过程的关键影响因素[2-3]。针对钢筋锈蚀产物,目前可用到的检测方法包括超声导波、X 射线管谱分析、衍射分析、热分析等方法,其通过钢筋锈蚀产物的特殊理化反应或物理特性对锈蚀产物的组分、密度、膨胀率等进行测定,从而推算钢筋锈蚀体积。此类方法,一方面对于检测仪器的工作环境及精度要求高,且人为操作对检测结果的影响大;另一方面其测得的钢筋锈蚀量往往是待检测样本的平均值,而研究表明即使在同一根钢筋中锈蚀的发展也是沿长度非均匀分布的,非均匀锈蚀对结构构件的劣化影响不可忽略[4-8]。因此,构建一种可考虑钢筋非均匀锈蚀且易于工程现场使用的钢筋锈蚀量检测方法十分有意义。
相比利用理化特性测量钢筋锈蚀量的方法,图像法是通过计算机辅助工具,将锈蚀钢筋截面像素从所拍摄的图像样本中提取出来,并利用像素与面积之间存在的比例关系以获得所测锈蚀钢筋的截面积,进而可求出钢筋任意位置处的锈蚀量[9-10]。图像法通常采用成熟的计算机图像处理工具库以提取图像样本像素的特征数据,再人为给定一些参数阈值以判断钢筋截面的边界,这一方面赋予了钢筋截面判断过多的主观影响,另一方面钢筋所处环境的复杂性也无法使钢筋截面边界的像素信息阈值得到良好归纳。因此,图像法的使用依然需要改进。
本文提出了一种基于全卷积深度神经网络的锈蚀钢筋截面检测方法。基于全卷积神经网络对钢筋截面像素的分类与分割能力[11-13],获得了一种可以准确、快速识别锈蚀钢筋截面的现场检测方法。通过对比两种像素分割全卷积神经网络架构的训练与测试结果,给出了适用于单钢筋截面图像样本二分类问题全卷积神经网络架构的选用建议;通过对比钢筋截面面积占总样本图像比例不同的样本检测结果,对采样时待检钢筋截面几何尺寸的范围限值给出了建议。本文所提方法为钢筋锈蚀量的检测提供了快速、高效的新途径。
数学中卷积运算在一维实数域的定义为:
从式⑴可知,卷积运算的实质是将函数f与g的乘积在实数域进行积分。将g(x)沿x轴平移t后,上述积分运算结果将是t的函数,即χ(i)。若函数f与g仅在部分实数域有定义,则卷积运算的积分域为二者定义域的交集,若此时函数f与g是离散函数,则卷积运算将进一步转化为代数和的形式:
即先将有序实数集合g的单元序号角标向前平移m个单位以获得新的有序实数集合,再将新集合与有序实数集合f其角标相同的单元相乘并求和。二维条件下只需将实数集合单元角标编号规则类推:
神经网络中的卷积操作与数学中的卷积操作类似,而在网络层中使用了卷积操作的神经网络称为卷积神经网络。当将平面图像作为输入并对图像进行卷积运算时,先将图像各像素灰度值的平面分布类比为二维平面内的离散函数fi,j,再选取合适的gi,j并将gi,j沿着图像长、宽方向每次滑动m和n个单位,通过式⑶即可得到χm,n,若将χm,n视作二维平面图像上m,n处像素的灰度值,则χm,n代表的灰度图像称为输入图像fi,j的特征图。
图像卷积运算的基本流程如图1所示,其中图1⒜所示原图像尺寸为8×8,图像左半部分为黑色(灰度值取1)、右半部分为白色(灰度值取0),同时规定灰度值非0即为黑色,反之为白色。gi,j取为图1⒝所示的3×3小图(称为“卷积核”),并将其沿着原图像长、宽方向进行卷积运算,滑动步长取1。卷积运算前,在原图像上进行一定程度的像素填充延拓,如图1⒝左图,使得输出图像仍然为8×8,所得输出特征如图1⒝右图所示。
图1 二维图像卷积运算流程Fig.1 Convolution Process for 2D Image
由图1⒝可见,原图像经过卷积运算后特征图中显现出原图像的交界线。从而易知,卷积运算可将图像的特征信息提取出来,并且由于计算时卷积核沿着图像平面滑动,故所提取的特征不随其位置的变化而改变,即具有平移不变性。
若将原图像灰度值与卷积输出特征图的灰度值,根据图1 所示神经网络拓扑结构依次排开,并令卷积核元素值变为未知参数,如图2所示,则可知以图像为输入的卷积运算与常规神经网络层间节点的数据运算无本质区别。因此,卷积神经网络与常规神经网络一样,可拟合所输入图像像素信息与目标输出之间的函数关系,且因卷积运算可对图像的高级特征进行提取,故卷积神经网络所拟合的上述函数关系是基于对图像高级特征的函数组合而得,逻辑意义明确因而处理图像的效果更好。
图2 二维图像卷积操作与常规神经网络的关系Fig.2 Relationship between Convolution for 2D Image and Normal Neural Networks
下采样层在卷积神经网络中称为池化层,池化层的运算类似卷积运算,即通过称为池化窗的类卷积核算子,沿特征图长、宽方向将池化窗所略过的像素数据进行特定运算处理。本文所采用的池化运算称为最大值池化,即使用2×2的池化窗,以步长为2进行滑动,将窗内像素数据取最大值作为输出。经过最大值池化下采样运算后,输出特征图尺寸变为原尺寸的一半。
下采样一方面可保持层间卷积核数量不变,即一定程度保持了网络对图像特征的提取能力,另一方面相当于减少了网络节点的数量,从而可缓解卷积神经网络的过拟合。
卷积神经网络通过非线性函数f处理来自上层卷积运算所得的输入值,以使卷积神经网络可以描述非线性问题。常用的激活函数为修正线性单元函数(Rectified Linear Units),其表达式为:
此外,Sigmoid函数也可作为激活函数使用,如式⑸所示。其常作用于神经网络的最后一层,其输出值作为目标的判定概率。
Softmax 函数作为同样可生成目标判定概率的激活函数,具有更好数值性能,如式⑹所示。其满足所有输出目标概率和为1的要求。
式中:N为类别数量;xi为神经网络对应第i个类别的输出特征值。
由前可知,将输入图像进行多次卷积、池化下采样后可获得包含高级特征的特征图。将这些特征图通过尺寸与之相同的卷积核进行卷积运算,则输出将变为一个标量。若将本次卷积运算的卷积核通道数(卷积核个数)取与类别数量N相等,则只需在本次卷积输出的N个标量之后接续若干层常规神经网络层(全连接层),最后作用以Sigmoid 或Softmax 等激活函数,则可构建出由样本图像输入到图像内容类别判定概率输出的典型分类卷积神经网络,如LeNet、VGG等[14-15]。为了实现从样本图像输入到样本图像逐像素的类别判定输出,可基于典型分类卷积神经网络,通过添加上采样操作,将分类卷积神经网络中具有高级特征且尺寸因下采样而变小的特征图的尺寸逐渐还原为样本图像的尺寸,从而利用尺寸还原的特征图构造样本图像逐像素的类别判定输出。
常用的上采样操因其运算特点使其可视作对应卷积运算的逆操作。与卷积运算不同,反卷积运算的目的不是提取高级抽象特征,而是通过组合高级抽象特征以再现低级的具象特征,因此每个上采样反卷积操作都对应一个卷积操作,它们之间的计算参数具有相关性。卷积与反卷积的对应计算流程如图3所示。
图3⒜所示卷积操作中卷积核尺寸k=3、卷积核滑动步长s=1、图像外围设置的零像素填充p=0,在此设置下观察输出特征图左上角的g1,1,显然g1,1是通过左上角3×3 区域的9 个像素数据而生成的,因此在反卷积时g1,1也应参与还原特征图左上角3×3 区域各像素点信息的计算。故可知上采样反卷积的卷积核尺寸与对应卷积的卷积核尺寸相同,即k′=k,而反卷积的其余计算参数为s′=1、p′=k-p-1。当对应卷积的卷积核滑动步长s>1 时,需将特征图各像素间插入(s-1)个0,如图3⒝所示。
图3 卷积与反卷积过程Fig.3 Process for Convolution and De-convolution
本文采用基于分类卷积神经网络VGG19[15]的全卷积神经网络VGG19-FCN 以及U-Net[16],构建了用于钢筋锈蚀截面锈蚀梁判定的锈蚀像素分类网络。
在VGG19-FCN 中,原始分类网络VGG19 的最后几层为全连接层,其作用为对图像进行类别归属划分,其网络输出为样本属于特定类别的概率。而全卷积神经网络通常基于分类卷积神经网络,将其用作分类的最后几层全连接层替换为输出特征图尺寸为1×1卷积层,再在其后添加多层反卷积层以将高级抽象特征图逐步上采样以构造样本图像逐像素的分类信息输出。由于分类神经网络最后几层特征图虽保存有高度抽象的图像特征信息,但像素位置相关信息却被下采样运算所磨灭,而逐像素的分类信息输出必然需要利用图像像素的位置信息,因此全卷积神经网络上采样过程中需通过将网络浅层的特征图与上采样输出特征图进行像素信息相加,即所谓“特征融合”,以结合网络浅层的位置特征信息及深层的类别特征信息,从而提升逐像素分类信息输出的准确性。
在U-Net 网络中,将分类卷积神经网络中的全连接层全部删去,替代以更多的上采样反卷积层,以结合更广泛的浅层位置特征信息。并在特征融合时,使用另一种方式,即将两个待融合特征图的最后一维(通道数)以扩展方式直接拼接。
本文所采用全卷积神经网络的结构如图4 所示。VGG19-FCN 和U-Net 网络的可训练参数数量分别为57.8M 和31.0M,输入锈蚀钢筋截面样本图像皆为RGB 通道24 位彩色图像,分辨率为224×224,网络输出的逐像素分类信息特征图尺寸为224×224,通道数为2(表征背景像素、锈蚀钢筋断面像素两个类别),每个通道对应的224×224 个输出值表征某个像素对应某个类别的输出特征值,即对应式⑹的xi。
图4 本文所使用的全卷积神经网络架构Fig.4 Achitectures of Fully Convolutional Networks in This Paper
损失函数是描述神经网络输出与人为给定输出间差异的函数。本文采用的损失函数为针对二分类问题的二项交叉熵函数,即:
对于常规的梯度下降训练法,其每次迭代运算只涉及单个样本,这样易使网络参数陷入对单一样本特质化特征的学习中,从而导致损失函数的优化收敛性不佳。为解决上述问题,可先将训练网络参数所用样本以随机抽样的方式均分为多个小批次,并定义样本批次损失函数为批次中单个样本损失函数的平均值,如式⑻所示;而后将样本批次损失函数采用梯度下降法进行网络权重参数的更新;当样本批次用尽后,再重新对样本进行随机抽样划分为新的训练批次。此法即为小批量随机梯度下降法。
在训练权重参数量较多的神经网络时,通常只能依靠如GPU等硬件设备进行并行计算,才能在合理的时间内完成网络训练。同时,储存权重参数相关的大量中间计算结果也将占用大量计算机内存、显存资源。特别是当采用小批量法训练神经网络时,批次样本数量B若超过GPU 的最大储存能力时,将无法进行网络训练。
为了解决上述问题,本文基于二项交叉熵损失函数的表达式(7-2)及计算批次损失函数的定义式(8-1),将单批次样本进一步分解为子批次,使每个子批次的样本数量恰好可以充分利用GPU的运算及存储能力,当所有子批次计算完毕批次损失函数对网格权重参数的梯度后,再将子批次权重梯度值对子批次数量取平均值,这样即可使计算所得恰好等于整个批次一次性计算批次损失函数对权重参数梯度的结果。上述过程可用式⑼所示恒等式解释。
式中:w为任意权重参数;χi为第i个图像样本的二项交叉熵函数;M、N分别为单个子批次所包含的样本数量及子批次数量,并有B=M×N。
通过小批量子集随机梯度下降法训练卷积神经网络,即可在计算机GPU 资源较紧的情况下,仍然可以选择合理的小批量样本数进行网络权重参数的训练,而代价为训练时间上的增加。
为了验证本文全卷积神经网络在锈蚀钢筋断面识别中的适用性,使用在实际工程中收集的2 000 个锈蚀钢筋断面样本进行本文神经网络的训练,其中训练集取1 700 个样本、验证集取300 个样本。采用Tensorflow 框架进行神经网络的构建,计算机配置为CPU为i7-8750H六核2.2GHz、GPU为单张gtx1060、内存16 G、显存6 G。训练时将小批量数量取32、并将此小批量继续分为4 个子批量进行运算,学习率取1×10-4。样本图像像素信息输入网络前将各色彩通道值除以255 变换至[0,1]区间,以便训练过程具有更好的数值性能。将所有训练样本遍历一次称为一个循环(Epoch),两个网络模型皆运行约30 个循环。VGG19-FCN 的运行时间为315 min、U-Net 的运行时间为228 min,训练过程的损失函数及部分训练特征参数曲线如图5所示。
图5 网络训练的特征参数曲线Fig.5 Feature Curves for Parameters in Network Training
在训练集中,以样本像素类别人工标签与样本像素类别网络预测标签的匹配率作为准确率,则VGG19-FCN 网络和U-Net 网络在验证集上的最终准确率为99.59%和98.87%;通过样本人工标签及网络预测标签判定为钢筋断面像素的像素可构成两个集合,此两个集合的并集像素数为分母,交集像素数为分子,求得的比值作为钢筋像素识别的精确度,则VGG19-FCN 网络和U-Net 网络在验证集上的最终精确度为96.59%和95.06%。从图6 各曲线可以看出,对于二分类问题VGG19-FCN 与U-Net 在识别效果上均有良好表现。部分验证集图像样本的钢筋断面检测结果,如图6所示。
图6 神经网络识别结果Fig.6 Detection Results of Neural Networks
训练过程中两个网络架构均能使验证集的识别准确率自始至终保持较高的水准,其原因在于所输入的钢筋断面样本图像中有较大面积为背景,从而高准确率贡献源自大部分背景的正确识别;对于钢筋断面识别的精确度,显然VGG19-FCN 网络可在更短的迭代数量达到更高精确度,且精确度提升过程更加稳定,但训练结束时两者精确度相差无几,故可认为此二者的识别效果基本相同。
对于主要用以区分背景及待检测目标的二分类问题,所采集样本中背景通常占可观比例。而从本文样本的测试结果可发现,背景占比大小对样本识别的精确度有重要影响。以人工标注的钢筋断面像素为基准,计算本文神经网络识别钢筋断面像素数的相对误差,验证集样本中钢筋区域占全画面的比例与识别相对误差间的关系如图7所示。
由图7⒜可知,当图像样本中待测钢筋断面像素数占画面过小时,识别相对误差急速增大。VGG19-FCN 网络识别的最大相对误差为12.7%,而U-Net 网络识别的最大相对误差达到34.6%。过大或离散性较大的相对误差将影响钢筋断面的识别精度,因此样本采集时应选取合适的钢筋断面区域画面占比取值范围。以5%的相对误差作为容许值,并偏于保守地将图7⒝散点图的上包络线与5%相对误差的交点横坐标作为采样图像中钢筋断面占比下限值,则VGG19-FCN 的下限占比为7.97%,U-Net 的下限占比为15.46%。由于本文样本钢筋断面像素面积占比最大值为51.78%,且两个网络在此样本上的识别相对误差均为1%左右,故将51.78%作为样本钢筋断面占比上限值是合适的。将上述面积比率换算为长度比率,则可知若采用VGG19-FCN 网络对钢筋断面进行识别,则采样时钢筋断面长宽尺寸占整个画面比率的合适取值范围为28.23%~71.95%,采用U-Net 网络时取值范围为39.32%~71.95%。
图7 两种神经网络的识别误差Fig.7 Detection Errors for the Two Neural Networks
由上述分析可知,VGG19-FCN 网络和U-Net 网络在钢筋断面识别效果上接近,但U-Net 网络的参数数量为VGG19-FCN 网络的54%左右,且训练时间前者为后者的72.4%,因此综合权衡网络存储所需空间、训练时间、识别精度,U-Net网络更适合本文钢筋断面识别的工作任务。
本文基于全卷积神经网络提出了一种检测锈蚀钢筋截面的新方法,可为非均匀锈蚀钢筋不同位置截面锈蚀量的准确、快速测量提供技术基础。通过人工标注的2 000 个锈蚀钢筋断面样本(训练集1 700 个、验证集300个)分别对VGG19-FCN和U-Net两种神经网络进行训练,以对比二者识别效果。结果表明:
⑴在神经网络训练时,本文所提小批量子集随机梯度下降法,在小批量梯度下降法的基础上,将单个训练批次再划分为更小的子集,并利用二项交叉熵损失函数的特性,使其计算效果等同于小批量梯度下降法,在解决网络训练中GPU显存不足的问题上具有良好效果。
⑵训练时VGG19-FCN网络比U-Net网络收敛速率快、损失函数曲线下降更加平滑,同时钢筋断面像素识别精确度上升更快,故可知对于本文钢筋断面样本,VGG19-FCN比U-Net在样本训练利用率上更高效。
⑶两个网络在验证集上的最终精确度分别达到96.59%和95.06%,故可说明两个网络在识别性能上均较好,对本文锈蚀钢筋断面识别均是可行的。
⑷ 以5%相对误差为容许值的条件下,使用VGG19-FCN 网络进行识别时采样图像中钢筋截面占比尺寸下限为28.23%,对U-Net 网络此值为39.32%。因本文所有样本中钢筋截面尺寸上限为71.95%,故推荐VGG19-FCN 网络的待测样本钢筋截面尺寸范围为全画面尺寸的28.23%~71.95%,U-Net 网络为39.32%~71.95%。
⑸综合考虑神经网络存储所需空间、训练时间、识别精度,本文认为U-Net 网络更适合锈蚀钢筋截面识别的工作任务。