APP下载

基于深度学习的三维点云自动生成BIM模型方法

2021-07-07何文景熊吴越

土木工程与管理学报 2021年3期
关键词:原始数据墙体构件

何文景,杨 健,熊吴越,c

(上海交通大学 a. 船舶海洋与建筑工程学院; b. 海洋工程国家重点实验室;c. 上海市公共建筑和基础设施数字化运维重点实验室, 上海 200240)

近年来,我国政府大力推进智慧城市规划建设,国家层面推出十多个相关政策文件[1],如住建部《2015—2020建筑信息化发展纲要》、国务院《国家新型城镇化规划(2014—2020)》等。在国家战略和政策推动下,建设虚拟服务现实,数据驱动治理的数字孪生城市将成为智慧城市的重要趋势。数字孪生城市可在一定程度上对城市的人、事物进行前瞻性预判,其前提是重塑高精度、多耦合的建筑信息模型(BIM,Building Information Modeling)[2]。

然而,在BIM的初始数字化建模过程中,极少既有建筑具有完整准确的信息资料。在既有建筑生成BIM模型研究领域,现阶段的方法集中在将既有建筑物三维点云数据经过预处理,通过先验知识(knowledge)和相应算法(如霍夫变换、RANSAC(Random Sample Consensus)等)提取点云特征[3],再经过一定人机交互处理后生成BIM模型,其中涉及大量手工作业,耗时且主观易出错[4],此外,基于先验知识的三维重建方法泛化性能较差,且传统算法提取的点云特征无法通过端到端优化求得全局最优解[5]。

从三维点云到BIM模型生成过程中,点云数据的分割和定位是其中最为关键的一步,而自动实现这一步通常很困难。深究根本,其难度在于BIM 模型由各类型构件组成,而点云是一个整体,在自动创建 BIM 模型过程中,需同步进行构件识别、定位与建模[6]。随着深度学习理论的发展,深度神经网络已被不同行业广泛采用,并在计算机视觉任务中取得了良好表现。本文在深度学习与既有建筑BIM模型生成相结合方面进行探索,结合训练点云神经网络所需要的输入数据,提出一套针对常规建筑构件的可运用于3D目标检测任务的点云数据集(SYNBIM)及相应的创建方法,通过类比本文提出的SYNBIM数据集和ScanNet[7]点云数据集的数据存储格式,分析了点云神经网络框架在测试阶段的输入和输出数据,证明训练后的神经网络可实现“输入未知点云,输出BIM模型参数”。

1 技术路线

陈海涛等[8]提到“人工智能算法是解决三维点云重塑BIM模型最理想的方法,但目前点云处理理论和训练数据资源尚不成熟”,本文基于此两点提出的技术路线如图1所示。在数据准备阶段,选用2017年普林斯顿大学计算机视觉与机器人研究小组发布的SUNCG数据集[9]作为原始数据集,这是一种人工合成的带有密集体积标注的大型大规模3D场景虚拟数据集,但原始数据集对土木工程领域的常规构件如墙、门、窗等的3D边界框标注不够成熟。本文为了实现深度学习3D目标检测任务,选取了“墙”“门”“窗”“楼板”“天花板”五类建筑构件作为研究对象,借助open3d三维语义库单独处理每一类构件并在处理过程中提出相应假设,最终生成实例级三维边界框作为监督式学习的标记信息。然后,结合相机位姿估计方法,通过生成多个室内观测点并放置立体相机拍摄的方法得到多张深度图和二维图片,再将这些带有深度信息的图片合成为点云数据,生成的点云数据即可作为神经网络的输入。在点云深度学习方面,结合点云神经网络框架Votenet的输入和输出数据,类比SYNBIM数据集和ScanNet数据集的数据存储结构,使用训练好的Votenet模型测试ScanNet点云场景,其3D目标检测结果即为BIM模型。针对五类常规建筑构件,神经网络输出的数据基础完善,通过相关几何运算可获得构件的参数信息,理论上再通过Revit二次开发编程可创建相应的BIM模型。

图1 基于深度学习的三维点云自动生成BIM模型技术路线

2 数据准备阶段

2.1 原始数据集获取

原始数据集[9]提供45622套包含多层建筑的3D虚拟场景,其组织结构如图2所示。每个3D场景被保存在一个house.json文件中。根据json文件内容,选择分层处理方式生成每个场景的目标3D边界框,同时对五种不同对象采用分开处理方式。借助open3d这一支持3D数据处理的开源库,利用其可以自定义操作函数的优势,读取并操作原始数据集。

图2 原始数据集概况

2.2 创建3D边界框——墙

墙体在多层多房间室内场景研究领域的表现形式非常复杂。为了防止3D目标检测出现模型边界框的标定要求,需要一套范式来定义墙体对象的表达,因此本文在定义墙体对象时提出如下假设:(1)最短墙体假设:当一面长墙和一面短墙在同一层空间产生交叉时,长墙在交叉处被拆分为两面墙;(2)一面墙唯一对应一个3D边界框。通过编写程序直接将原始数据中墙体的几何信息提取出来的边界框如图3a所示,其中不同墙体用不同颜色的边界框标记,但根据以上假设存在以下几个问题:首先,多面长墙在遇到短墙时没有被打断;其次,多处出现同一面墙被多个边界框重复标定,框重叠现象严重;最后,不同边界框之间没有高度差,可能隐藏着重复标定的墙体。

图3 墙体边界框生成

通过编程调用open3d库函数并自定义相关函数读取和操作原始数据,生成如图3b所示边界框集合,单层建筑墙体经过处理后符合上述假定。墙体边界框数据如表1所示,其中单行数据代表一个边界框信息,七个参数分别表示整体坐标系下框的三个中心点坐标、框的长、宽、高以及沿高度方向偏转角,以上即生成了墙体的标定参数,其它四种构件经过处理后与墙体边界框数据结构相同。

表1 部分墙体ground truth数据样式 m

2.3 创建3D边界框——门和窗

在处理原始数据过程中,门和窗遇到表2所示问题,通过排查发现某些建筑的部分门、窗处于半开状态,由最小包围框理论,直接提取半开状态的门、窗数据得到的边界框厚度超过墙体厚度,如图4a所示。

表2 门、窗初始边界框问题及解决方法

图4 门、窗3D边界框处理过程示意

通过编写程序读取门、窗和其所在墙体数据并分别置于相同局部坐标系下、检测出不合理门、窗的边界框信息。修改错误后,所有门、窗的边界框厚度正常,并用不同颜色标记。图4b展示了墙、门耦合状态下经过处理后的边界框集合。

2.4 创建3D边界框——楼板和天花板

本文在编写程序创建板类边界框时定义以下规则:(1)板对象不能涵盖两个及以上房间;(2)对于多层建筑,两楼板边界框或者两天花板边界框间不能重叠,但楼板和天花板两种框之间允许重叠;(3)楼板、天花板边界框至少有三条边的边缘部分和墙体边缘接触。基于以上规则处理后的楼板和天花板构件如图5所示。因为板类构件厚度较小,这里采用mesh模型进行展示。

图5 楼板、天花板创建过程示意

2.5 创建3D边界框——整栋建筑

对于单层建筑,通过以上方法创建每个目标实例的3D边界框,为深度学习3D目标检测训练任务提供标记信息;对于多层建筑,本文在编程读取和操作原始数据过程中,先将每层的信息单独分离出来,再顺次处理并得到每层目标实例的3D边界框,最后将处理后的多层数据组合在一起,完成处理后的多层3D边界框,如图6所示。

图6 多层结构3D边界框示意

2.6 建筑数据集——创建三维点云

现阶段实际运用中,基于三维激光点云的数字化采集,通过激光扫描仪对建筑物室内外进行三维扫描,从而获取建筑物点云数据的方法比较常见[10]。但是,激光雷达存在价格昂贵、镜面黑洞、寿命低等问题,而通过立体视觉相机生成深度图像并合成点云的做法才是未来的发展方向[6]。深度图像也叫距离图像,是指将从图像采集器到场景中各点的距离值作为像素值的图像。本文立足长远,选择在SUNCG数据集中每栋建筑室内包含的虚拟观测点[11]处放置立体视觉相机并生成相应深度图像,得到的深度图像为16 bit的png格式文件,经过相关注册算法和配准算法可生成三维点云,其原理如图7所示。

图7 深度图像生成点云过程示意

立体视觉相机需要从不同观测点对物体进行拍摄,得到的不同站点深度图信息有各自的独立坐标系,需要统一坐标系后进行数据融合,其中涉及的基本公式为:

式中:(X,Y,Z)为点云配准后坐标;(x,y,z)为点云原始坐标;Δx,Δy,Δz为平移参数;α,β,γ为旋转参数。通过创建边界框标记信息和点云数据,得到训练点云神经网络需要的数据集,共45622套大规模3D场景数据,数据生成过程所用硬件信息和相关计算所用时间如表3所示。

表3 数据集生成过程与部分结果呈现(Intel@Corei9-9900U CPU;GeForce 1080Ti/GPU)

图8 votenet深度学习框架

3 点云神经网络

目前应用深度学习将三维点云数据输入神经网络仍然是一个开放性问题[12],采用的方式主要有三种:(1)将点云数据投影到二维平面,此种方式不直接处理三维点云数据,而是先将点云投影到某些特定视角再处理,如MUCNN[13];(2)将点云数据划分到有空间依赖关系的voxel,此种方式通过分割三维空间,引入空间依赖关系到点云数据中,再使用3D卷积等方式来进行处理,但3D卷积的运算复杂度较高,如PointCNN[14];(3)直接处理原始点云,此种方法一般为集合了多步骤的3D目标检测算法,为了应对点云数据中各个目标的视角不变性和得到准确的三维框回归,算法需要进行多次坐标转换,如Votenet[15]。

产生以上三种输入方式的原因在于:(1)点云数据是一个集合,对数据的顺序不敏感,处理点云数据的模型需要对数据的不同排列保持不变性;(2)点云数据所代表的目标对某些刚体转换应该具有不变性,如旋转和平移。根据点云特性设计的神经网络框架Votenet如图8[15]所示。该网络不依赖任何RGB信息,只依靠单纯的点云几何信息,整个网络框架分为两个部分:第一部分采用点云特征提取网络处理原始点云数据并生成种子点和生长点;第二部分通过训练提取出的生长点簇来实现分类和定位的目的。其能直接输入点云数据并在3D目标检测任务下输出目标3D边界框,在真实扫描数据集ScanNet的基准挑战中取得了良好成绩,其中ScanNet数据集和本文创建的SYNBIM数据集的某些关键参数对比如表4所示。

表4 数据集属性对比

由于ScanNet数据集更加成熟,通用性好,本文基于ScanNet数据集实验,验证了训练后的Votenet目标检测器在输入未知三维点云场景(图9a)后,可在一定精度范围内生成目标边界框及其类别,其可视化结果如图9b,9c所示。神经网络输出的3D边界框数据结果样式如表1所示,表格中的数据为全局坐标系下的边界框信息,从中可以提取出创建BIM模型所需要的参数信息。

图9 点云神经网络votenet测试ScanNet3D点云场景结果示意

4 参数化建模

从数据连贯性角度分析,由于BIM构件参数化建模只需提取模型参数便可实现模型的创建。因此,针对本文选取构件类别,整理创建BIM模型所需参数如表5所示。

表5 目标构件几何参数

针对这五种建筑构件,神经网络输出的数据基础完善,经过相应的算法运算获得构件的参数信息,再通过Revit二次开发可创建相应的BIM模型。

5 结论与展望

本文基于3D目标检测技术,在深度学习与既有建筑BIM模型生成相结合方面进行探索,整合出一套可行的基于深度学习的三维点云自动生成BIM模型技术路线,探讨了如下重要问题:由虚拟BIM模型生成目标类别的标记信息;由虚拟BIM模型生成三维点云模型;实测分析点云神经网络的数据输入和输出,证明其输出的数据基础完善,经过简单的参数建模可生成BIM模型。本文提出的基于深度学习的三维点云生成BIM模型的实现方法,统一了传统方法中点云数据预处理、构件识别、分割、定位与建模等步骤,通过深度学习反向传播机制可以实现针对整个过程的全局优化,其核心过程是三维点云数据集的生成和3D目标检测算法的实现。

但是,现阶段仍存在如下问题:(1)输入数据只利用了点云的几何信息,预期生成的BIM几何模型精度较低,同时缺少颜色、材质等信息;(2)现阶段3D目标检测算法大多针对单层建筑,对于多层建筑鲜有提及,本文提出的点云数据集满足多层训练要求,但尚未展开研究;(3)通常情况下,通过合成数据库来训练算法,当算法用于真实数据时效果欠佳,因为真实点云数据有较多噪音,很难检测到一个对象的全部特征。

笔者认为,从深度学习角度三维点云生成BIM模型发展方向,主要在以下几个方面:利用点云颜色信息和图片信息等的多数据融合算法,生成的BIM模型可达到更高精度要求;多层、多房间建筑的信息模型重建;创建基于室内建筑领域的真实扫描数据集;相关评价标准的制定等。本文在三维点云自动生成BIM模型这一极具挑战性的研究领域提出一种基于深度学习的技术路线,为后续该领域的研究提供参考。

猜你喜欢

原始数据墙体构件
钢筋混凝土构件裂缝控制
农村保温墙体的热湿性能分析
古建筑墙体加固施工工艺及质量控制探究
古建筑青砖墙体修复施工技术研究
受特定变化趋势限制的传感器数据处理方法研究
论航空情报原始数据提交与应用
基于构件的软件工程技术与理论方法探讨
对物理实验测量仪器读数的思考
牡丹江边墙墙体特征
基于构件的软件开发实践