林鸿强, 陈文铿, 黄宏安, 陈国栋, 黄明炜, 俞文龙, 林进浔, 熊海宁
(1 福州大学物理与信息工程学院, 福州 350108; 2 福建数博讯信息科技有限公司, 福州 350002;3 中铁十七局集团第六工程有限公司, 福州 361009)
近几年,国内建筑安全事故已成为关注热点。研究可知,在施工现场的各种危险源中,高空作业是一个高危环节,脚手架的安装操作如果并不规范就可能导致高空坠落等伤亡事故,因此施工安全管理必须高度重视这一风险的控制。 根据脚手架搭设作业安全要求[1],单排脚手架立杆间距、步距应在1.5~1.8 m 之间、不应大于2 m,立杆横距应在1.2 ~1.4 m之间;双排脚手架立杆间距、步距应在1.5 ~1.8 m之间、且不应大于2 m,立杆横距应在1.05 ~1.5 m之间。 传统的脚手架检测方法是通过人工测量来进行的,即需要人工攀爬脚手架,利用杖尺、皮尺和卡尺等工具来完成测量。 这种传统落后的测量方式不仅低效,而且在测量过程中也在很大程度上增加了测量人员的安全隐患,因此采用计算机视觉来实现脚手架的安全规范检测就具有非常重要的现实意义。
由于传统的骨架提取算法不能直接从自然图像中计算出物体的骨架信息,而且计算出来的骨架也不能满足单像素宽度和连通性的要求。 针对上述问题,Wang 等学者[2]提出了一种新颖的上下文flux 来表示对象骨架,明确地表明了图像像素与其最接近的骨骼点之间的关系。 还开发了DeepFlux 算法,该算法可以准确有效地检测图像中对象的骨架信息。实验证明,该算法应用于脚手架的骨架提取可以达到非常好的效果,在此基础上继续对图像进行处理,最终能精确计算出脚手架杠间间距,在脚手架的安全检查中具有很高的使用价值。
DeepFlux 算法的网络遵循文献[3]的全卷积结构,如图1 所示。 由图1 可知,该结构主要由3 个模块组成,分别是: 一个用于提取三维特征图的主干网络;一个空洞空间卷积金字塔池化(ASPP)模块[4],用于扩大感受野,同时避免过度下采样;以及一个多阶段特征融合模块。
图1 网络架构Fig. 1 Network architecture
DeepFlux 算法采用VGG16 作为骨干网络,使用空洞模块的原因是需要一个宽广的感受野:在提取骨架时,必须保证网络的感受野比输入图像中物体部分的最大内侧半径宽。 VGG16 骨干网络的感受野是196,对于大型对象来说不够宽。 因此,采用ASPP 来捕捉多尺度信息。 具体来说,通过在骨干层的最后一层加入4 个具有3×3 核、但具有不同空洞率(2、4、8、16)的平行空洞卷积层,而后沿通道维度进行连接。通过这种方式,获得了理论感受野大小为708 的特征图,这对实验的图像来说是足够大的。
为了构建输入图像的多尺度表示,通过融合了1×1 的核进行卷积后的来自Conv3、Conv4、Conv5 和ASPP 层的侧输出流的特征图。 由于不同层次的特征图具有不同的空间分辨率,在对其进行连接前将相应的大小调整为Conv3 的尺寸,然后在融合后的特征图上进行预测,再上采样到输入图像的维度。对于上采样,使用双线性插值的方法。 网络的最终输出为一个双通道响应图,其中包含对图像中每个像素p的图像上下文flux 的和坐标的预测。
骨架提取算法初始的骨干网络是采用VGG16作为特征提取网络,试验结果不理想,不能对脚手架图像进行精确的骨架提取,而后续的计算误差很大程度依赖于脚手架骨架提取的效果。 因此在原有特征提取网络的基础上对算法结构进行优化,使用InceptionV3、ResNet-50、Res2Net 等特征提取网络作为骨架提取算法的骨干网络进行训练。
数据增强[5]是提升算法检测精度最有效的手段之一,随机性扰动或者抖动已获取的数据来获取更多的训练样本,这种数据增强方式简单且具有强大的功能。 对增强后的数据进行标记,脚手架提取模型训练中的训练集和测试集的数量见表1。
表1 脚手架骨架提取数据集Tab. 1 Scaffold skeleton data set
本次实验在Linux 的操作系统下完成,采用的IDE 为Pycharm,框架为pytorch。 硬件配置中,CPU为Inter Core I7-9700,GPU 为NVIDIA GeForce GTX 2080TI 11 GB,内存大小为16 GB。
为了更加客观地评价不同骨干网络提取结果的准确性,将在设置相同的网络参数、同一个数据集的前提下对不同骨干网络进行训练、测试,实验比对结果如图2 所示。 根据结果表明,将原算法的VGG16网络替换为InceptionV3 网络能提高脚手架图像骨架识别的精确度。
图2 不同网络训练结果Fig. 2 Results of different network training
经过实验比对,由图2 可知,InceptionV3 特征网络在脚手架的骨架提取上相比起原算法中的VGG16 等网络,具有更高的精度,因此,将采用改进后的网络对脚手架图片进行骨架提取。
对测试集脚手架的图像进行骨架识别,实验结果如图3 所示,基本上还原了脚手架的骨架结构。但是识别的骨架并不都呈一条直线,有些部位会出现些许线段移位。 因此,要对骨架提取的结果做进一步处理。
图3 骨架提取效果Fig. 3 Skeleton extraction effect
在3.1 节中根据改进后的骨架提取算法得到了脚手架骨架提取图,本小节针对脚手架骨架提取图像的特征提出了一种交点检测算法,采用计算交点间距的方式来得到脚手架间距像素值,而后再使用像素标定的方法得到脚手架的真实间距值。
3.2.1 交点计算
为了得到脚手架交点信息,首先要对图像进行二值化处理,防止误识过多交点。 其次,对图像进行膨胀腐蚀处理,接着计算每个像素的4 邻域之和,将邻域之和大于2 的像素点坐标保留。 最后,删除重合点坐标,计算相邻交点的欧式距离,就得到了脚手架的像素间距值d。 流程图如图4 所示。
3.2.2 像素标定
计算出像素间距d后,接着采用标靶法将像素间距d转换为实际间距D。 像素间距d与实际间距D是正比关系,比例系数为k,单位为cm/pix。 假定图像拍摄过程中图像平面和参考的目标物之间尽量平行,经过多张图片实验,本次实验结果中k的取值为50 cm/pix,最终实验结果如图5 所示,可以看出脚手架杆间间距相差不多,采用交点检测方法也很好地避免了些许线段移位的影响。
3.2.3 效果与评价指标
为验证检测结果的准确性,将500 张计算机预测的结果图片与对应的实际脚手架的长度进行误差分析,结果见表2,计算出来的横杆、立杆与实际长度的误差在5%左右。
表2 计算误差分析Tab. 2 Calculation error analysis
通过将DeepFlux 骨架提取算法中的特征提取网络替换为InceptionV3,接着对脚手架骨架提取结果进行一系列图像处理,实现了通过脚手架图片来检测脚手架的安装规范。 实验表明,采用骨架提取算法和进一步的图形处理来代替传统的脚手架人工检测方法是可行的,并且误差仅为5%左右,完全能够做到代替人工测量,实现脚手架的安全规范检测。虽然该实验已经基本完成了研究目标,但该实验图像是建立在拍摄图像与水平垂直的基础上,如果拍摄的图像较为倾斜,则脚手架的检测效果可能就会与实际不符。 因此,为了对倾斜拍摄的脚手架图片进行后续安全规范检测,可以在图像预处理阶段对倾斜的图片进行倾斜校正处理[6]。