卢佳祁, 姚志东*, 庄浩然
(1.中冶建筑研究总院(深圳)有限公司, 深圳 518055; 2.深圳市建筑幕墙智能检测工程技术研究中心, 深圳 518055)
近年来,当城市遭遇台风等强风天气时,因未关闭开启窗所导致的开启窗吹落事件屡见不鲜,严重危害了人身安全与公共安全。2017年5、6月份,深圳市建筑门窗幕墙学会对既有幕墙的调研中发现,窗扇尺寸大于1 m2幕墙项目都出现过窗扇坠落现象,其中多数是在刮台风时窗扇没有锁闭被吹掉。《玻璃幕墙工程技术规范》(JGJ 102—2003)[1]中12.1.4规定:“6级以上风力时,应全部关闭开启窗”,而台风的瞬时风力可达10级以上,2018年的台风“山竹”最大风力甚至达到了17级,在10级风力的作用下,开启窗单个撑挡承受的拉力约为3 500 N[2], 远超《建筑门窗五金件 撑挡》(JG/T 128—2007)[3]规定的:“开启扇撑挡开启到预设位置,承受窗扇开启方向1 000 N的力、关闭方向600 N的力”,因此,在强风压作用下,处于开启状态的开启窗撑挡等五金件极易发生断裂与失效,是开启窗脱落的主要原因。因此,在强风天气下,及时发现并关闭开启窗对于幕墙建筑的安全管理至关重要。
在台风来临前,物业等楼宇管理部门一般都采用人工巡检的方法观察开启窗是否关闭,然而这种检查方法有较大弊端:①对于高层建筑或者整个园区的楼宇检查的工作量较大,效率较低;②检查的实时性无法保证,开启窗可能随时被打开;③在楼宇外进行检查时,无法马上确认开启窗所对应的业主房间号,也就无法及时通知相应的业主关闭开启窗。因此,有必要建立一套开启窗启闭状态安全监测系统。深圳市福田区住建局所建立的“福田区既有建筑智慧管理系统”,在对开启窗的管理上,通过对每扇开启窗部署物联网电子传感器感知开启窗的开关状态,并通过无线网络将信息传给管理系统,在台风来临前,管理人员可以通过系统查询未关闭的开启窗,并及时通报给相关业主关闭开启窗,极大提高了管理效率。据深圳市福田区住建局统计,2018年“山竹”台风吹落了福田区多栋建筑开启扇,而该管理系统投入使用至今,无一扇开启扇被吹落。但是,这种部署大量传感器的方式需要投入的设备成本与维护成本较高,经济性较差。
近年来,数字图像处理技术与深度学习技术在建筑的智能运维上发挥了重要作用,实现了“降本增效”的目的,如建筑的缺陷检测[4]与故障分析诊断[5]等问题。
文献[6]通过图像识别窗口开启大小分析对室内温度的影响,该方法首先使用透视变换对楼宇外立面进行图像校正,再通过分析开启窗区域像素值判断窗口开启区域,然而,该方法在使用透视变换校正时,采用人工选取参考点的方式,自动化程度有待提升,此外,窗口状态识别的误差主要来源于像素阈值的选取,其识别的鲁棒性也有待进一步提升。文献[7]通过深度学习的目标检测网络模型Faster-RCNN(faster region convolutional neural network)[8]对开启状态开启窗的侧面与底部开口间隙进行识别,并获得了比较高的精度,然而该方法需要在室内进行图像采集,无法批量识别大量开启窗状态。
现提出一种基于计算机视觉与深度学习技术的幕墙开启窗检测方法,使用采集的楼宇外立面的全景图像,基于语义分割卷积神经网络[9]输出的掩码图像,可自动提取用于外立面图像校正的参考点,使用分类卷积神经网络[10]判断校正幕墙外立面各固定位置开启窗开闭状态,建立开启窗的图像位置与房间号映射关系表,便于快速确定开启窗房间位置,为了提高夜间弱光环境的识别精度,还采用了光照增强的方法提高了图像质量。
采用广角照相机从楼宇底部采集外立面的全景影像,相机与外立面的垂直距离不宜过近,否则无法采集到开启窗开启状态的有效特征信息。为了提高模型的泛化性与鲁棒性,需要采集一定数量的外立面图像作为模型训练集与测试集,同时对数据样本进行标注,标注的结果是一张二值化图像,其中外立面区域像素值为255,其他区域像素值为0。该数据集包含不同时间段、不同天气与不同光照条件下的数据。
获取幕墙外立面掩码区域的描述如下。
(1)使用训练图像样本及标签,基于U-Net[11]语义分割卷积神经网络进行模型训练,由于原始图像分辨率较高,为了提高模型训练效率,将图像缩小成512×512分辨率。U-Net是一种编解码结构的全卷积网络,输出的掩码图像与输入图像同尺寸相同。“跳层连接”将相同尺寸的浅层特征图与深层特征图进行叠加融合,通过浅层纹理特征与深层抽象特征融合的方式可以提高分割区域的精细度。
(2)将原始图像进行预处理后,输入到训练好的U-Net神经网络中,输出幕墙外立面掩码图像,所构建的U-Net外立面语义分割网络模型如图1所示。输出的特征图经过Sigmoid激活函数后输出[0,1]的值,再乘以255转换成一张与输入图像大小相同的灰度图像。
由于摄像头位于建筑底部,高层建筑位置越高,物距越远目标就越小,将采集的原始幕墙外立面的畸变图像校正成正常比例的图像有两个目的:①由于远离镜头的建筑外立面在图像中尺寸较小,不利于目标检测模型的识别,通过图像校正还原了建筑外立面的正常比例,间接放大了远离镜头的外立面尺寸,突出了开启窗特征,可提高开启窗识别的准确性;②有效排除非玻璃幕墙外立面的背景信息,提高后期开启窗识别精度。
Conv(·)为卷积,卷积操作有5个参数,分别是输入通道数、输出通道数、卷积核尺寸、卷积步长与填充像素; Up_Conv(·)为反卷积,参数含义与Conv(·)相同,用于上采样;BN(·)为卷积层批归一化操作; Droupout(·)为卷积层随机失活的正则化操作;LeakyReLU(·)为卷积层激活函数图1 幕墙外立面感兴趣区域分割网络模型Fig.1 Segmentation network model of the region of interest on curtain wall
1.3.1 基于Harris的幕墙外立面角点检测
首先将1.2节得到的掩码图像进行放大,放大的尺寸应接近原始图像尺寸,放大成4 500×4 500分辨率,同时将原始图像尺寸也调整成放大后的掩码图像尺寸,这样操作可以保证图像质量,有利于提高后续开启窗识别精度。
由于得到的掩码图像排除了大部分干扰角点信息,因此可以轻松准确地找出期望的角点坐标。在掩码图像上使用Harris算法检测每个检测幕墙外立面的4个角点,Harris 角点检测分为如下4个步骤[12]。
步骤1计算掩码图像的Harris矩阵M,其计算公式为
(1)
式(1)中:I(x,y)为图像中(x,y)点的像素值;w(x,y)为基于二元高斯函数的窗口函数。
步骤2计算角点度量值c,其计算公式为
c(x,y)=det(M)-k[trace(M)]2
(2)
式(2)中:det(·)为行列式算子;trace(·)为矩阵的迹;k为常量,取0.04。
步骤3保留c(x,y)大于阈值T的点。选择的高斯窗口尺寸为9×9,阈值T=qmax[c(x,y)],其中q为控制阈值系数,q=0.01。
步骤4由于分割的掩码图像的4个角点非标准角点,类似曲率半径很小的圆弧,因此,真实角点周围会检测到多个角点,采用K-means++[13]聚类法对得到的所有角点的位置坐标(x,y)进行聚类,要求聚为4类,最终聚类的4个中心点为外立面的4个角点坐标,图2为幕墙外立面角点检测结果示意图。
1.3.2 基于透视变换的幕墙外立面畸变校正
透视变换[14]是计算机视觉常用的扭曲图像透视校正方法,可通过透视变换矩阵H将图像从一个视平面(x,y,1)面投影到另一个视平面(x′,y′,1),可表示为
(3)
利用1.2.1节检测到的4个角点坐标和预设的4个标准参考点坐标求出透视变换矩阵H,标准参考点的设定应尽量还原正常外立面的比例。对调整后的原始图像按照式(3)进行校正。示例中存在两个幕墙外立面,因此,两个外立面需要分别通过透视变换矩阵H1和H2进行各自的变换校正,将校正后图像进行裁剪,即为幕墙外立面感兴趣区域图像,图3为幕墙外立面校正示意图。
从图3可以看出,校正后的幕墙外立面感兴趣区域中的开启窗排列分布规则,对于特定的建筑,开启窗在图像中位置与大小是已知的,因此,可以直接根据预先标注的区域裁剪出每个开启窗图像,再通过分类卷积神经网络判断出开启窗的开闭状态。未采用如YOLOV4(you only look once version 4)[15]等的目标检测算法来定位开启窗位置的原因在于:原始图像尺寸太大,导致模型参数过多,一般计算机硬件难以支撑,缩小图像又会减小清晰度,影响检测精度[16]。
图2 掩码图像角点检测Fig.2 Detecting corners of mask image
图3 幕墙外立面校正Fig.3 Curtain wall facade correction
在校正后幕墙外立面图像上,对所有开启和关闭状态的开启窗区域进行裁剪,并将裁剪后的图像缩放成64×64分辨率,将开启状态的开启窗作为正样本,关闭状态开启窗作为负样本,正负样本比例设为1∶1。
为了提高夜间的识别效果,采用文献[17]的方法对夜间采集的图像进行增强处理,该方法优化了图像局部对比度,增强了低强度像素,同时又避免了高强度像素的极度增加,方法具体步骤描述如下。
步骤1首先使用对数缩放函数对黑暗图像进行处理得到图像I1,该函数可以估计出人类视网膜所实现的效果,可表示为
(4)
式(4)中:X为输入图像。
步骤2将图像X重新输入到一个指数函数中得到图像I2,该函数可以改进局部对比度,同时削弱图像中的高强度像素。
I2=1-exp(-X)
(5)
式(5)中:exp为指数函数。
步骤3将I1和I2通过对数图像处理模型LIP(logarithmic image processing)组合起来得到图像I3,使I3具有I1和I2两者特性。
(6)
式(6)中:λ为控制增强过程的常数,避免出现不合适的像素强度,这里将λ设为3。
步骤4此时,I3的亮度仍然较低,需要进一步增强以突出更多的细节特征,这里采用改进的双曲正割分布的累积分布函数CDF-HSD(cumulative distribution function of hyperbolic secant distribution)提高图像黑暗区域亮度得到图像I4。
I4=erf{αarctan[exp(I3)]-0.5I3}
(7)
式(7)中:erf为误差函数;α为控制增强量,α越大亮度越高,取α=5。
此时I4的像素值分布仍然被限制在有限的动态范围内,而且图像看起来很白。因此,采用归一化函数线性缩放像素值。
(8)
式(8)中:I5为最终的图像增强结果。
图4 图像增强前后对比Fig.4 Comparison of before and after the image enhancement
幕墙外立面图像增强效果如图4所示,尽管增强后的图像与白天采集的图像质量仍有一定差距,但图像的边缘特征明显增强了,有利于提高后续开启窗识别精度。
使用训练图像样本及标签,基于ResNet-18[18]卷积神经网络进行模型参数训练。ResNet采用了残差跳跃结构,解决了由于网络加深所导致的梯度弥散的问题,使模型更加容易训练,ResNet-18与其他模型相比,其速度和准确性上具有良好的性能,ResNet-18网络结构如图5所示,包含有17个卷积层(包含8个跳跃连接)、全局平局池化层Avgpool、全连接层fc和Sigmoid层,最终输出开启窗状态,这些层的基本原理详见文献[19]。
图5 基于ResNet-18的开启窗状态分类网络模型Fig.5 The architecture of theResNet-18-based window status classification module
检测之前,在校正后的幕墙外立面图像上,对每个开启窗位置进行标注,开启窗位置记为[X1,Y1,X2,Y2],4个参数代表框选开启窗的矩形框的左上角横纵坐标和右下角横纵坐标,同时对每个开启窗位置绑定房间号,建立开启窗的图像位置信息与房间号映射关系表。检测时,根据标注的开启窗矩形框将每个开启窗裁剪出来,并统一缩放成64×64分辨率,然后批量输入到训练好的开启窗状态分类模型中,得到每个开启窗的开闭情况,同时给出开启状态开启窗所对应的房间号。
3.1.1 数据集制作
本实验针对广东省深圳市南山区某写字楼的一侧幕墙外立面使用带有广角镜头的可见光相机采集了500张图像,其中350张作为训练集,50张作为验证集,100张作为测试集,一张幕墙外立面图像含有开窗258扇,每幅图像经过微调后的分辨率为4 500×4 500。首先需要对数据集进行标注,标注的数据集分为如下两类。
(1)对幕墙外立面图像进行标注,标注的结果为外立面的掩码图像,用于U-Net语义分割模型的训练。为了提高模型的泛化能力,使用透视变换、直方图均衡化、加高斯噪声、随机遮挡等方式进行数据增强[20]。由于颜色特征非必要特征,将训练图像进行灰度化,即转换成单通道图像。
(2)对开启窗图像进行标注,标注的结果为开启窗的开闭类型,用于ResNet-18分类模型的训练。共有80 000张样本,其中60 000张样本作为训练集,验证集与测试集各10 000张,其中正样本(开启状态)40 000张,负样本(关闭状态)40 000张,图像缩放成64×64分辨率,为了增强模型的泛化性,同样需要对样本进行数据增强,增强方式包含:左右翻转、色调饱和度亮度(hue & saturation & value,HSV)变化、转灰度、gamma变换、加高斯噪声与随机遮挡等。
3.1.2 试验环境
试验的计算机程序基于Pytorch深度学习框架与OpenCV计算机视觉库,使用Python编程语言实现。计算机试验环境:CPU采用Intel(R)Xeon(R)3106,GPU采用NVIDIA Quadro 5000,操作系统为Win10。
3.1.3 模型训练
U-Net卷积神经网络训练时,采用Adam优化器,每次训练的样本数batchsize=32,初始学习率为0.001;ResNet-18卷积神经网络采用Adam优化器,batchsize=64,初始学习率为0.001;由于两个神经网络模型的输出函数均为Sigmoid激活函数,因此训练使用的损失函数使用二元交叉熵损失函数。训练时,当损失函数输出的损失值趋于稳定时,将学习率降低为0.000 1继续训练,当验证集准确率不再升高时保存训练好的模型参数。
3.2.1 评价指标
U-Net语义分割网络模型采用交并比IOU作为评价指标,ResNet-18分类网络模型采用精确率P、召回率R、F1值作为评价指标,指标计算公式分别为
(9)
(10)
(11)
(12)
式中:A和B分别为标签掩码图像与语义分割图像的面积;A∩B表示两者的交集面积;A∪B表示两者的并集面积;TP、FP和FN分别为分类结果的真阳数、假阳数和假阴数;P为正样本被正确归类数量与被归类为正样本数量的比值;R为正样本被正确归类的数量与实际正样本数量的比值;F1为P和R的综合评价指标。
3.2.2 试验结果
图6举例展示了白日阴天场景与黑夜场景两种光照下的外立面语义分割效果,图6(a)为白日阴天场景原图,图6(d)黑夜场景亮化后图像,从图6(b)、图6(c)与图6(e)、图6(f)为图6(a)与图6(d)对应的标签图像、分割图像,可以看出,语义分割的鲁棒性较高,可以有效提取外立面的掩码图像。最终评价指标分别为IOU=94.12%,由于这里只针对指定幕墙建筑进行训练,因此像素归类精度较高。
基于ResNet-18的幕墙开启状态分类模型评价指标如表1所示。可以看出,白天阴天场景和黑夜场景识别精度均达到了较高水平,黑夜亮化场景相比于白天阴天场景精度略低,而黑夜未亮化场景精度最差。开启窗错误识别结果示例如图7所示,错误的识别结果均由于开启窗开启范围过小而误识别成了关闭状态,黑夜场景下,虽然进行了亮化增强,但部分开启窗开启区域依然比较模糊,误识别情况也就更加突出。
该方法的运算时间如表2所示,方法中比较耗时的步骤包括:亮化增强、开启窗剪裁、U-Net语义分割与ResNet-18分类,其他步骤时间可忽略不计,上述4个步骤耗时1.01 s,表明该方法可以有效保证开启窗状态检测的实时性。
图6 基于U-Net的幕墙外立面分割结果Fig.6 Segmentation result of curtain wall facade based on U-Net
表1 分类模型评价结果Table 1 Evaluation results of the classification model
图7 开启状态误识别为关闭状态Fig.7 The open state is misrecognized as the closed state
表2 运算时间Table 2 Operation time
提出一种基于计算机视觉与深度学习技术的幕墙开启窗检测方法,用于大风天气来临前指导管控人员及时发现并关闭开启窗。得出如下结论。
(1)基于U-Net语义分割法提取的外立面掩码区域图像,有利于准确地对外立面图像进行畸变校正。
(2)基于ResNet-18的卷积神经网络可以对开启窗开闭状态进行准确判断。
(3)亮化增强法可以改善夜间开启窗状态识别准确率。
(4)下一步可通过超分辨率重建的方法进一步提高图像质量,进一步提升夜间识别精度。
(5)对于开启窗开启范围较小而导致的误识别问题,下一步需要增加小范围开启窗的训练数据量,使模型更多地学习这类样本并提高对这类样本的辨识度。