基于改进Faster R-CNN的二维图纸中建筑构件识别方法
2021-11-10赵云凡邓雪原
周 权, 赵云凡, 邓雪原,2
(1. 上海交通大学 船舶海洋与建筑工程学院, 上海 200240; 2. 上海市公共建筑和基础设施数字化运维重点实验室, 上海 200240)
自2010年以来,建筑业增加值占国内生产总值的比例稳定在7%左右,进入了缓慢发展阶段。2019年,我国建筑业房屋竣工面积约40.24亿m2,同比下降2.69%,连续三年负增长[1],间接反映了既有建筑的占比不断扩大。然而既有建筑的运维管理阶段能源消耗巨大。据统计,建筑业的原材料和能源需求占比超过40%,温室气体的排放量占1/3[2],而绝大部分的消耗来源于运维管理阶段。另外,我国的既有建筑普遍面临着资源浪费严重、环境负面影响大、工作生活环境不能满足需求等问题。在“十三五规划”期间,我国着力推行供给侧结构性改革,致力从过去简单的增量发展模式逐渐向存量更新与运营的模式转变[3]。因此,为了降低运维管理阶段的能源消耗,满足绿色环保和节能减排的需求,亟需找到有效的方式,通过提高运维管理的效率以解决既有建筑的当前难题。
目前绝大部分的既有建筑是基于纸质的二维图纸进行设计和建造的,产生的数据有限,仅适用于传统的运维管理方式。该方式的手段、理念、工具比较单一,必须依靠各种数据表单来进行管理,导致数据库与图纸之间的各种信息相互割裂[4],容易出现沟通滞后和“信息孤岛”现象。建筑信息模型(Building Information Model,BIM)[5]技术的出现为解决当前既有建筑所面临的问题提供了可行的方案。BIM作为建筑信息数字化产物,整合了各个阶段所需要的大量数据,便于管理与使用,并支持各方进行信息共享,可有效地提高建筑业的信息化程度[6]。
然而,既有建筑BIM的手工重建是一项费时费力且经济效益低的工作,主要原因在于数据采集需要付出很大的努力,并且在复杂的数据输入和建模过程中容易出现人为错误,在模型精确度上也难以保证。鉴于此,本文提出一种新的解决方案:基于改进的Faster R-CNN (Faster Region Convolutional Neural Network)目标检测算法实现二维图纸中建筑构件信息的自动提取,提高数据采集的效率,从而克服数据采集阶段耗时耗力的难题。
1 国内外研究现状
既有建筑的模型快速重建方法一直以来都是人工智能在土木工程应用的研究热点[7]。当前的研究工作主要聚焦于非接触式技术,如激光扫描[8]和摄影测量[9]。
激光扫描可以在很短时间内收集到数以百万计的点,用来描述建筑的形状和内部空间,最后利用数据建立三维场景模型[10]。这种技术具备数据获取速度快、数据量大、传输方便等优势[11]。而基于摄影测量的三维模型重建技术的核心是利用飞行器拍摄高分辨率图像,经过一定的处理后生成三维模型,具有数据采集速度快、纹理信息丰富、测量位置信息丰富等优点,并且可以随时进行测量[12]。然而,摄影测量和激光扫描均存在一些局限性。这两类技术在建模过程中往往需要耗费大量的时间、购买昂贵的设备以及培训熟练的工人,高成本是阻碍技术推广的主要原因[13]。其次,激光扫描生成的点云模型经常出现噪点多、数据丢失严重等弊端,并且处理噪点的过程繁琐而耗时[14]。最后,激光扫描只能获得表面的几何信息,无法得到建筑的拓扑信息和语义信息[7]。而摄影测量则受限于细节层次低,通常只能获取建筑外立面元素[15]。
目前,以建筑文档资料为研究对象的研究也越来越多,该方法能够更好地平衡成本与精度之间的关系,不仅能得到建筑元素的几何信息,还能提取一定的拓扑信息和语义信息[16]。例如,Yin等[17]综述了基于二维扫描图和CAD图纸生成三维模型的方法,总结了建模的一般步骤——图像解析和三维模型生成,提出各步骤所使用的算法,但未进行验证。Lu等[13]介绍了一种基于CAD图纸的半自动识别方法,先利用OCR(Optical Character Recognition)技术识别平面图中的特殊符号以确定结构构件的位置,再利用MATLAB开发的算法来实现构件信息的提取,最后通过案例验证其有效性。但该方法存在明显的局限性:需较多的人工干预,无法实现构件信息的自动化提取;识别准确度不高;Gimenez等[18]提出了基于霍夫变换和模式识别提取建筑构件(墙壁、开口和空间)信息的方法,在一定程度上减少了人工干预。此方法涵盖图像预处理、特征提取、模式识别和模型建立的全过程,最后还包含模型的验证阶段。然而,此方法的模式识别必须基于一定的假设条件,只能识别特定的线条,且识别的构件种类是有限的。此外,该文章只涉及几何信息的提取。可以看出,上述研究主要依靠简单算法来识别建筑元素,效率低且准确性不高。另外,该类识别算法自动化程度低,识别后的结果仍需要大量手工干预。
基于此,本研究从二维建筑平面图展开,针对二维图纸中小目标检测的难点问题,改进了Faster R-CNN目标检测算法,使其更适用于图纸中建筑构件的目标识别,从而在识别轴网、墙、门和窗等小目标构件时更具有先进性和鲁棒性。首先采用ResNet-101网络作为特征提取网络,避免因池化层过多而造成特征信息丢失严重;再通过改进锚框、改进非极大值抑制算法等方式降低模型的漏检率,提高识别的准确率;最后进行案例研究,通过多策略对比分析证明了改进方法的先进性。另外,在文本信息的识别方面,提出了OCR技术识别的一般步骤,也提高了文本信息识别的准确性。
2 研究方法
2.1 图像预处理
实际上,建筑平面图包含大量的混乱信息或建筑构件提取过程中的无关信息,这些信息会增加识别难度。图像预处理的目的是为了消除由扫描本身引起的噪声和清理冗杂数据并达到后续阶段所需的图像质量级别以及提高识别效率,如去除背景网格、标题和多余的注释等。图像二值化利用Python调用THRESH_BINARY全局阈值函数。
2.2 建筑构件目标识别算法结构
基于候选区域的双步骤框架目标检测方法的针对性更强、识别准确性更高[19]。该方法将目标检测分为两步,先确定候选区域以提取图片中可能存在的感兴趣区域(Region of Interest,RoI),将所有的RoI作为输入,使用卷积神经网络进行特征提取,再进行检测分类和边框回归修正。作为双步骤目标检测的代表,Faster R-CNN提出了可生成候选区域的区域建议网络(Region Proposal Network,RPN),并使Faster R-CNN和RPN共享基础卷积神经网络实现端到端的检测,在开源的Pascol VOC数据集上验证了其在速度和精度方面的先进性,并且可用于复杂图像的特征提取[20]。因此,本文选用Faster R-CNN进行建筑构件的目标检测,并使用ResNet-101代替传统的VGG-16进行特征提取,基于ResNet-101的Faster R-CNN的基本框架如图1所示。
2.2.1 ResNet-101网络
传统的Faster R-CNN配备VGG-16网络作为特征提取过程的共享卷积神经网络,在高像素、大目标检测领域已经表现出了优越性。然而,在面对低像素、小目标时,该网络的检测效果仍不理想[21]。VGG-16网络每经过一次卷积都需要进行一次池化,而池化层会将输入图像的尺寸压缩50%,这意味着特征图像素将会逐渐递减,导致在深层次特征图中小目标的信息内容很少,因此该网络不适用于小目标的检测项目。
一般情况下,网络越深,包含的信息和特征越丰厚。但实验表明,随着网络的加深,分类器的效果反而会越差,这是由梯度消失和梯度爆炸所引起的[22]。ResNet网络引入了残值块和“跳跃连接”的核心思想,所提供的思路是在所有的普通网络中每n层增加一个“跳跃连接”,构成m个残值块,ResNet则由这m个残值块构成。在小目标的检测过程中,ResNet能通过“跳跃连接”保留更多浅层网络的细节信息[23]。ResNet-101的残值块结构如图2所示。核心3×3卷积层先利用1×1卷积层降维以减少参数,再使用1×1卷积层以恢复维数,不仅保持了精度还减少了计算量[22]。
图2 ResNet-101的残值块结构
2.2.2 算法的改进及优化
(1)改进锚框(Anchors)
Anchors是定义在RPN网络按固定比例(宽度、大小)的预定义框。在遍历特征图的过程中,默认情况下为每个点都配备了9种Anchors作为初试的检测框。Anchors的初始框大小为(8,16,32),由于二维图纸中建筑构件均为小目标,在这种情况下容易引起小目标的信息丢失,影响识别的准确率。大尺寸的Anchors使用效率还造成了一定的浪费。因此,针对建筑构件的检测,可适当降低初始Anchors的大小。
(2)改进非极大值抑制(NMS)算法
在同一张建筑图中,建筑构件之间可能会存在较多重叠的情况,从而导致感兴趣区域之间可能存在很大部分相互重叠。因此,RPN网络最后的卷积特征层滑动生成的9种Anchor容易出现相互重叠的情况。采用非极大值抑制的目的是剔除冗余框,避免损失函数值的多重计算[24]。经典非极大值抑制算法的实现过程:在边框回归的过程中,计算所有RoI的置信度,并以降序的方式排列;取置信度最大的RoI,计算此RoI与其他所有边框的交并比(Intersection over Union,IoU);若大于既定阈值,则舍弃该边框;循环上述步骤,直至遍历所有RoI。这种不具备弹性的算法容易造成目标的漏检。另一方面,NMS((Non-Max Suppression)的阈值也不太容易确定,阈值太小会出现漏检,设置过高又容易增大误检[25]。针对上述问题,提出改进的NMS算法,在原始NMS的基础上引入线性惩罚机制,加入弹性系数K,降低IoU大于既定阈值的置信度,IoU越大则惩罚力度越大。计算公式为:
(1)
IoU(bi,bj)=Am/(Abi+Abj)
(2)
式中:si为当前RoI的置信得分;K为弹性系数,0 2.2.3 评价指标 (1)精确率(Precision)和召回率(Recall) 精确率是指某类被正确检测出来的建筑构件占所有被识别为该类建筑构件的比例。召回率反映的是某类被正确检测出来的建筑构件占该类被检测建筑构件的比例。 Precision=TP/(TP+FP) (3) Receall=TP/(TP+FN) (4) 式中:TP为正确检测出来的建筑构件数量;FP为背景被检测为建筑构件的数量;FN为建筑构件被识别为背景的数量。 (2)平均精准度(Average Precision,AP)和所有类别的平均精准度(mean AP,mAP) AP指Precision-Recall 曲线与x,y轴所围成的面积,反映的是单个类别的识别率。mAP指对所有类别AP求平均值,反映的是整个分类器平均精准度水平,通常来说mAP值越高,分类器则越好,用于目标检测的效果越佳。即 (5) (6) 式中:p(r)为Precision-Recall曲线方程,0≤r≤1,0≤p(r)≤1;N为验证集个数。 由于建筑图纸的特殊性,其包含了丰富的文本信息,包括标注、构件名称、空间属性以及标题等。这些文本信息对于构建完整的BIM来说是必要的,因此需探究文本识别的有效方法。 Python-tesseract是Python的OCR工具,能够识别并读取嵌入图像中的文本,是谷歌开发并开源的图像文字识别引擎,具有支持图像类型多、识别准确性高、识别速度快等优点[26]。本研究将中文字库载入到Tesseract中用于文本信息识别,识别的一般步骤见图3。 图3 OCR文本识别步骤 本研究的实验硬件条件:Intel i7-9700F的CPU、16G+16G的双通道内存以及RTX2080ti的GPU;软件条件:tensorflow 2.0架构下Ubuntu18.04的深度学习环境。本实验基于深度学习领域的迁移学习思想,利用改进的Faster R-CNN目标识别算法和OCR技术完成本次案例研究。本次案例选取公用建筑,包含不同的建筑种类,如小学、实验楼和办公楼等。 3.2.1 训练准备 根据上述公用建筑的特征,自行构建数据集512张,图像大小固定为1050×750,格式均为PNG。基于建筑图纸中常规几何形状的建筑构件,本实验的预定义构件种类包含轴网(axis)、墙(wall)、窗(window)、单开门(door_s)、双开门(door_d)、蹲便器(sanitary_t)、洗手盆(sanitaty_w)和小便池(sanitaty_m)共八类,预定义构件也是本次实验的识别对象。每一张图像经预处理后采用labelImg工具进行手工标注,标注得到相应的XML文件。自定义标注的规则:假设一面墙除了已经识别的门窗以外,则其它未识别的连续部分均是墙体。标注的规则与流程如图4所示。 图4 labelImg标注规则及流程 此外,为了降低因数据集过少而引起过度拟合的风险,采用OpenCV的imgaug图像数据增强库进行离线增强,在原始基础上扩大5倍,函数参数设置见表1。本次实验按照5∶1的比例划分为训练集和测试集。 表1 数据增强的函数参数设置 3.2.2 训练参数设置 首先,初试化经ImageNet数据集预训练的 ResNet-101网络权重参数。其次,设置RPN网络。将Anchors初始框大小设置为(8,16,32),长宽比例∈{1∶2,1∶1,2∶1};IoU阈值取0.7;重叠分类阈值设置为0.5,输出的RoI数量取2000个,并筛选256个RoI进行反向传播;网络训练采用随机梯度优化方法,总迭代次数设置为50000次,初始学习率设置为0.001,在第35000次迭代后将学习率设置为0.0001。最后,设置动量优化器的优化值为0.9。 3.2.3 训练执行与模型测试 Faster R-CNN采用交替训练的方式,分别对Faster R-CNN网络和RPN网络训练,保存模型。训练结束后,调用Faster R-CNN测试模块,在预先划分好的测试集中对模型进行测试,得到各构件种类的AP值与所有构件的mAP值。 3.3.1 Faster R-CNN识别部分 为了更好地证明本研究方法对检测结果的准确性,本节探究不同的实验策略对实验结果的影响。首先研究ResNet-101网络对于小目标检测效果的影响,对比了基于VGG-16检测模型的实验结果。考虑比较的公平性,采用控制变量法,除了网络选取的不同,数据集、训练步骤及参数设置均保持一致,50000次迭代下的实验结果见表格2。基于表2的训练结果,两种网络的识别效果图如图5所示。 图5 两种网络的效果图/mm 表2 50000次迭代下不同特征提取网络的检测效果比较(局部构件) % 由表2可知,与VGG-16网络相比,ResNet-101网络的mAP提升了1.6%,且各类建筑构件的检测效果均有一定的提升。另外,通过两种网络的效果图对比可知,与ResNet-101相比,VGG-16中存在目标丢失的情况,且santary_w的准确率较低。这证明了ResNet-101网络在小目标检测中更具有优越性。 其次,基于ResNet-101网络,通过不同的算法改进策略进一步比较检测效果。根据锚框和NMS的参数设置不同,训练模型分成A,B,C,D四个模型,其中D模型采用Faster R-CNN的原始参数。50000次迭代下的实验记录如表3所示。 表3 50000次迭代下不同改进策略组合的检测效果比较 由表3可见,A模型的mAP最高,即锚框大小设计为(4,8,16)和K取1.0组合的检测效果最佳。与采用(8,16,32)锚框的B模型相比,A模型的mAP提升了3.7%,且各类构件的精确率均有一定提升,这证实了合适的锚框大小能够提升模型的检测效果。C模型下调了K值,增大了惩罚力度,导致mAP有轻微下降,说明惩罚力度会影响到模型的精准度,惩罚力度过大反而会降低精准度。最后,B模型的mAP较原始Faster R-CNN的D模型提升了2.9%,这证明了改进的NMS算法对目标检测的精准度也有一定提升。 综上所述,作为本研究方法的代表,A模型基于ResNet-101网络并通过改进锚框和NMS算法,在建筑构件的检测上表现最为优越,从而充分证明了本研究方法在建筑构件上的先进性。图6展示了A模型的目标检测效果图, 表4列举了部分目标识别结果。 表4 目标图像的部分识别结果 图6 A模型的目标检测结果示例/mm 3.3.2 OCR识别部分 上述目标图像执行检测后,需进行下一步OCR文本识别。先对目标图像预处理,如反差色、统一字体、剔除干扰信息等,再将中文字库载入Tesseract,同时参数设置如下:lang设置为“chi_sim”,config赋值为“—psm6”,output类型取“string”。部分文本识别结果见表5。 表5 目标图像的OCR识别结果 本文提出了基于二维图纸的建筑构件识别框架,利用改进的Faster R-CNN目标检测算法自动提取建筑构件信息,并利用OCR技术提取文本信息。在Faster R-CNN算法方面,针对二维图纸中建筑构件目标相对较小的特征,先利用Resnet-101网络代替传统的VGG-16网络,同时通过调整Anchors、优化NMS算法等方式改进Faster R-CNN,使得改进后的Faster R-CNN更适用于建筑构件的识别。也通过案例研究和结果分析,验证了基于本研究方法的模型在小目标检测上具有先进性,最佳的mAP达93.8%。在OCR文本识别方面,利用开源的Tesseract进行建筑图纸的文本识别,也具有很好的效果。从应用价值的角度,本研究方法在建筑构件的目标识别上检测效果较好,能够实现构件信息的自动提取,可为后续BIM的重生成提供数据支持。另外,本研究方法克服了激光扫描和摄影测量的局限性,在经济方面具有可行性。综上,本文所提出的研究方法为既有建筑的BIM重建开拓了新的思路,在运维管理方面上将具有广泛的应用前景。 然而,本文的研究还处于初步阶段,当前工作展望如下: (1)本文实验只针对八类预定义构件类型进行识别研究,未覆盖到所有的建筑构件类型,后续将进一步增加预定义构件类型的数量,以扩大识别的构件范围; (2)由于构件类型和构件坐标由改进的Faster R-CNN获取,而构件名称和尺寸信息由OCR得到,需将两类结果进行匹配,因此需进一步研究信息匹配算法; (3)目前只聚焦于二维平面图,因此笔者下一步将继续研究对立面图的识别。2.3 文本信息目标识别算法结构
3 案例验证与分析
3.1 案例设置
3.2 实验过程
3.3 实验结果分析
4 结论与展望