周前飞, 丁树庆, 冯月贵, 庆光蔚, 胡静波
(南京市特种设备安全监督检验研究院,江苏 南京 210000)
大型起重机金属结构的传统人工检测方法存在检测盲区、高空作业危险、劳动强度大、效率低等问题,利用无人机搭载高分辨率视觉传感器,实时采集显示起重机待检测部位的图像进行裂纹判定,具有非接触、高精度和远程可视化等特点,尤其适合起重机高空金属结构远程检测。但是,目前基于无人机的起重机检测系统大多仅完成图像采集、传输以及一些预处理[1-4],而裂纹识别仍依赖检验员肉眼浏览图片来完成,存在对微小裂纹和色差不明显裂纹不敏感、易漏检微弱缺陷和长时间检测易疲劳等问题,导致缺陷检测效率仍然较低且精度不高,并且缺乏对裂纹的远程量化评价方法,无法为结构安全评估提供精确的数据支撑。因此,研究室外复杂背景下大型起重机高空钢结构表面裂纹检测和量化识别方法,提高检测精度和效率,具有重大的理论意义和应用价值。
目前,基于机器视觉的裂纹检测方法可以大致分为三类:传统图像分割检测方法、基于机器学习的裂纹检测方法和基于深度学习的裂纹检测方法。传统图像分割检测通过阈值分割、边缘检测、颜色分割、形态学分水岭分割、频率域分割等方法分离出裂纹区域进行识别[5-7],容易受外部环境、背景、光线等干扰,对于单一背景裂纹具有较好的检测效果,不适合复杂背景多样性裂纹检测;机器学习方法通过人工设计并提取图像中缺陷特征,采用SVM、AdaBoost、STRUM、CrackForest等分类器模型对缺陷进行分类识别[8-10],需要人工设计并提取特征,但人对特征的定义受经验影响,人工设计的缺陷特征对于多样性变化的鲁棒性不高,当人工设计算法无法表述图像高级特征时,识别率会大大降低;深度学习检测方法利用深度神经网络[11-14],自动从大数据样本中学习目标深度特征,代替人工构造特征,对缺陷特征的描述更贴近真实情况,更具有鲁棒性,从而提升识别率,并且可以检测出传统机器视觉算法检测不到的微弱缺陷[15]。
由于起重机械金属结构形状复杂,涉及箱型梁、工字梁、桁架等多维度平面和三维曲面检测,不同表面光照差异大,对比度低,裂纹形态多变,背景复杂,存在焊接纹理、划痕、水渍、漆膜开裂等伪裂纹缺陷干扰。为改善箱型梁下盖板等人员不易到达部位的拍摄视角问题,研制出一种基于倒置式无人机平台的智能视觉检测系统,可快速全方位高质量采集并实时显示被检测部位的图像;在此基础上,提出了一种适应起重机械金属结构复杂背景和复杂表面特征的缺陷检测和识别算法,实现对结构表面裂纹缺陷的自动判别分类和量化评价,提高了结构缺陷检测的灵敏度和识别精度,提升了起重机械金属结构检测的自动化和智能化水平。
针对大型起重机结构检测的应用特殊性,研发了适应起重机金属结构缺陷检测的倒置式工业级无人机检测系统,如图1所示。为便于拍摄桥门式起重机主梁下盖板和门座式起重机象鼻梁等人员不易到达的关键受力部位,将正常情况下搭载在无人机正下方的相机云台改为布置在无人机本体上方,使云台垂直方向俯仰角范围达到±90°,水平方向运动范围达到±150°,既能向下俯视成像,又能向上仰视成像,能够对大型起重机各种关键部位进行多方位拍摄且无视场死角,具备良好的适应性。
图1 倒置式无人机智能视觉检测系统样机
系统利用无人机为平台搭载高分辨率可见光相机,获取被测结构表面图像,通过通信链路传给地面控制台实时显示,并利用图像处理算法对结构表面缺陷特征进行智能检测和识别。系统搭载的相机分辨率为1600万像素,支持机载端4K高清视频、1600万像素图片存储,支持H.265视频压缩和1080P高清视频无线传输到地面控制台显示。镜头焦距为50 mm,畸变率小于2%,在实验室利用裂纹尺测试相机分辨能力,如图2所示,当相机距离目标3 m时,能分辨出宽度为0.1 mm的微裂纹,可以满足无人机在安全距离外检测结构表面裂纹的要求。
Faster R-CNN神经网络由卷积神经网络、区域生成网络、池化层、最终分类器4个部分组成[16],将区域生成网络与Fast R-CNN[17]对象检测网络相结合,生成一个共享全图的卷积特征与检测网络,经过训练生成高质量的区域建议(数量限定为300个),Fast R-CNN将其用于检测,由于区域生成网络的预测绝大部分在GPU中完成,且卷积网和Fast R-CNN部分共享,因此大幅提升了检测速度。
利用Faster R-CNN深度神经网络对裂纹缺陷进行检测算法流程如图3所示,通过分类层和回归层来实现对缺陷的分类和检测,第1组分类和回归在区域生成网络处,分类检测是否有裂纹,属于二分类问题,回归进行候选区域的初步选取;第2组分类和回归在池化层后的预测网络,回归为确定候选区域在图像中的精确位置。
根据图3所示,Faster R-CNN神经网络裂纹检测算法包括以下4个步骤。
图3 Faster R-CNN神经网络裂纹检测算法流程
① 将训练集图像输入到深度神经网络算法模型进行训练,得到训练好的模型,然后将待检测图像输入到训练好的模型,进行VGG16卷积运算得到原始特征图。
② 将原始特征图传入区域生成网络,提取包含目标概率更高的若干区域,实现裂纹缺陷有无的检测。特征图为卷积神经网络输出的最后一层,在此特征图的基础上再做一次卷积,生成 256个特征图,然后分别做分类和回归,分类层输出预测属于裂纹缺陷或者背景的概率;回归层输出缺陷位置预测目标框的 3个参数:目标框左上角位置、长度和高度。
③ 池化层将不同大小的输入特征转换为固定长度的输出特征,将最后一层卷积层得到的256个特征图下采样到大小为7×7的网络中,对每个网络进行最大池化处理,将不同大小的特征变成了统一大小的特征向量,确保每一个不同大小的窗口具有相同的维度,形成固定大小的特征图,方便进行全连接操作。
④ 利用池化层后的预测网络实现缺陷分类识别和精确定位,确定候选区域在图像中的精确位置。
在检测出裂纹缺陷与其位置后,还需要对金属结构表面裂纹宽度、长度、方向等相关参数进行定性和定量分析,为金属结构安全评估提供精确有效的数据基础。裂纹参数识别算法流程如图4所示,包括图像预处理(灰度化、滤波去噪、对比度增强、二值化分割)、裂纹边缘检测、裂纹参数识别、伪裂纹去除等步骤。
图4 裂纹参数识别与评价算法流程
如图4所示,为减小计算量,直接对Faster R-CNN神经网络检测出的裂纹目标框区域进行处理,首先将目标框区域彩色图像转化为灰度图像,采用滤波去噪和对比度增强方法使图像裂纹特征更为突出,在图像二值化分割的过程中,利用最大熵阈值法确定阈值对图像进行分割,能够有效准确地区别裂纹区域和背景区域;然后采用 Canny 算子提取裂纹边缘,由于裂纹形状各异且整体呈“线状”分布,计算裂纹边缘最小外接矩形的长宽比对裂纹方向进行识别,分为横向、竖向、斜向裂纹。
根据式(1)~式(3)计算裂纹的水平、垂直投影向量和面积,绘制裂纹的垂直、水平方向投影曲线图,获取裂纹最大宽度、最小宽度。利用最大圆盘形态学骨架提取算法[18],获取裂纹的单像素宽形态学骨架,并对短枝噪声进行消去处理,统计骨架化的裂纹像素数得到其长度L,根据式(4)计算面积S与长度L的比值为裂纹平均宽度D:
(1)
(2)
(3)
(4)
式中:g(x,y)为阈值分割和边缘提取后的二值图像中坐标为(x,y)的像素点灰度值;H(x)为水平方向(行方向)投影向量,表示各行方向g值为1的像素点个数;V(y)为垂直方向(列方向)投影向量,表示各列方向g值为1的像素点个数;S为裂纹面积,表示裂纹目标框区域g值为1的像素点个数;L为裂纹长度,表示裂纹单像素宽骨架的像素点个数;D为裂纹平均宽度。
由于起重机结构表面背景复杂、干扰目标多,检测结果中可能包含漆膜开裂和水渍等伪裂纹缺陷,因此需要做进一步鉴别。鉴于真裂纹一般表现为非常细的黑线,长宽比很大,在局部范围内方向具有一致性,而伪裂纹一般不具有这些特征,通常表现为孤立的相对较小的点或小块。因此,设计基于长宽比(L/D)和面积S的真伪裂纹鉴别方法:当目标面积大于某一阈值T1且长宽比大于某一阈值T2时,判定为真裂纹,予以保留,否则判定为伪裂纹,消除该候选目标。最后,根据针孔成像模型和物距标定出每个像素代表的实际物理尺寸,计算裂纹的实际宽度和长度。
开发无人机图像智能检测系统软件,调用裂纹缺陷检测与识别算法,完成缺陷的自动检测,同时可导入设备基础信息,现场出具检测报告,具体检测流程如图5所示。将无人机采集的图像传输到图像智能检测系统,设定与算法运行速度匹配的取帧频率;调用Faster R-CNN神经网络算法对当前帧图像是否存在裂纹进行定性检测,如果检测到有裂纹缺陷,用裂纹的最小外接矩形框标记缺陷位置,并提取裂纹目标框区域图像;然后,调用裂纹参数识别算法,对各裂纹的宽度、长度、方向、面积、长宽比等进行识别,并根据裂纹面积和长宽比是否大于设定阈值,识别并剔除伪裂纹缺陷,为设备维护保养提供辅助决策。
图5 基于无人机视觉的起重机表面裂纹检测流程
实验采用 TensorFlow 作为深度学习框架,使用GPU 对训练过程进行加速,其使用的主要硬件配置是Xeon E5-2620 v4处理器、128 GB内存和NVIDIA GTX 1080 Ti 显卡;软件环境是 Linux 系统和Python 3.7,GPU 加速库采用 CUDA 9.0.176和 CUDNN 7.0.4。采用准确率和速度来衡量裂纹检测效果,对于给定的测试数据集,准确率为标记正确的裂纹目标框个数与标记出的所有目标框个数之比。
采用2000张金属裂纹灰度化图片、80张裂纹试块图片、50张起重机金属结构图片作为训练集,部分训练图像如图6所示。
图6 部分裂纹缺陷训练数据集图像
采用40张起重机金属结构图片作为测试集,部分图像检测结果如图7所示,在裂纹目标框左上角用英文字母neg来标记裂纹,neg后面的数字表示算法判定该区域为裂纹的概率(0~1)。
从图7可以看出,Faster R-CNN深度神经网络检测识别算法能准确地检测出图像中裂纹缺陷,并对缺陷区域进行精确定位,统计测试集的检测结果,裂纹检测平均准确率达到95.4%,速度达到2 f/s。下面通过裂纹参数识别算法对裂纹长度、宽度进行进一步识别,以利于量化评估。
图7 部分测试图像的裂纹检测效果
利用无人机检测系统距离3 m拍摄已知裂纹尺寸的试块图像,裂纹通过线切割方法得到,各裂纹位置分布如图8所示,裂纹真实尺寸如表1所示,宽度范围为0.05~0.4 mm。
表1 T型角焊缝试块中各裂纹真实尺寸
图8 T型角焊缝试块中各裂纹位置分布
通过1.2节Faster R-CNN深度神经网络算法检测出裂纹及其所在位置,结果如图9所示;然后对裂纹目标框区域进行处理,调用1.3节裂纹参数识别算法,对裂纹的长度和宽度进行定量检测和分析,并与裂纹的真实尺寸进行比较,以验证算法的准确性。
图9 T型焊缝试块裂纹检测结果
以左侧焊缝竖裂纹和右侧母材斜裂纹为例,用裂纹参数识别算法进行处理,得到结果如图10和图11所示,图中(a)~(g)依次为原始图像、灰度图像、中值滤波去噪后的图像、对比度增强图像、最大熵阈值分割图像、Canny边缘检测与裂纹识别、裂纹最小外接矩形标记。
图10 左侧焊缝竖裂纹识别
图11 右侧母材斜裂纹识别
然后,根据裂纹最小外接矩形的长宽比判别裂纹方向,并对裂纹进行垂直、水平方向积分投影,获取裂纹的垂直、水平方向投影曲线图,如图12所示,其中行投影为水平方向投影,列投影为垂直方向投影,其中横坐标表示图像行坐标或列坐标,纵坐标表示位置为该行坐标或列坐标的像素个数。
图12 裂纹区域的水平、垂直方向投影曲线图
从图12(a)、图12(b)可以看出,左侧焊缝竖裂纹的最大宽度为7 px,列投影有明显的凸起区域,说明该裂纹为纵向裂纹;提取裂纹单像素宽骨架,统计其像素数得到裂纹长度为271 px,计算裂纹面积与长度的比值得到平均宽度约为4.00 px,长宽比为67.75。从图12(c)、图12(d)可以看出,右侧母材斜裂纹的最小宽度为2 px,最大宽度为5 px,行、列投影在整个坐标轴范围内均有分布,说明该裂纹为斜裂纹;提取裂纹单像素宽骨架,统计其像素数得到裂纹长度为591 px,计算裂纹面积与长度的比值得到平均宽度约为3.00 px,长宽比为197。相机分辨率为4640 px×3480 px,经标定后每像素的实际物理距离为0.07 mm,计算裂纹的实际长度和平均宽度,并与表1中裂纹的真实尺寸对比(左侧焊缝竖裂纹对应竖裂纹2,右侧母材斜裂纹对应斜裂纹5),计算裂纹测量相对误差,如表2所示。
表2 裂纹参数识别误差
从表2可以看出,裂纹长度和宽度的测量值与真实尺寸非常接近,宽度平均测量误差为5.83%,长度平均测量误差为7.61%,裂纹参数识别算法能够准确地测量出裂纹的宽度和长度,可以满足结构安全评估的要求。
同时,在实验中发现,图像获取的检测条件对裂纹定量评价结果有较大影响,例如光照强度、拍摄距离、成像系统噪声、温度、振动等。环境光在金属表面形成一部分反射光和逆光阴影,或者由于光照不均匀使图像亮度不均,造成图像边缘不清晰,引起边缘提取误差,导致测量精度降低。因此,无人机应尽量顺光拍摄结构表面,并采用直方图均衡化、线性灰度拉伸、同态滤波等对比度增强算法,降低光照条件变化带来的影响。根据针孔成像模型,拍摄距离直接影响每个像素对应的实际物理尺寸(即像素当量),在保证安全的前提下,无人机应尽可能靠近结构表面进行拍摄,以获取更小的像素当量,提高图像测量精度。
此外,CCD暗电流噪声、像元响应非均匀性、散粒噪声、量化误差、热电子噪声等成像系统自身噪声对测量精度也有较大影响,应采用中值滤波等方法消除噪声影响,突出裂纹特征,提高系统测量精度。相机振动会引起图像抖动和模糊,降低图像清晰度,直接影响裂纹的精确测量,因此无人机采用基于挤压式减振球的高精度云台防抖和减振技术,保证拍摄图像稳定性和清晰度要求。温度过高会导致成像系统信噪比急剧下降,过低会影响系统采集图像的稳定性和均匀性,因此在环境温度过低时可以先对系统进行适当的预热,温度过高时可以加装散热装置,从而提高成像品质,并进一步提高系统测量精度。
针对大型起重机结构裂纹检测的特点,设计了倒置式工业级无人机检测平台,能够对大型起重机各种关键部位进行多方位拍摄且无视场死角,具备良好的适应性;提出Faster R-CNN深度神经网络裂纹检测算法,实现了对裂纹缺陷的高精度智能可视化检测,检测准确率达到95.4%,速度达到2 f/s,利用裂纹特征参数识别算法,实现了金属结构表面裂纹的非接触式精确测量,现场应用测试表明,上述算法能够适应复杂背景和复杂特征下起重机械金属结构表面裂纹的自动检测和识别要求,提高了无人机视觉的缺陷识别能力。