我们使用基于深度学习的分割和检测网络来进行建筑元素的识别,关键点检测与聚类用来做比例尺识别,基于微分渲染的迭代优化来进行矢量化。这是第一个从分割点阵图进行矢量化的户型识别方法,与已有方法比较,我们最终的计算结果具有更高的准确率和泛化性。
实现户型图的准确识别是非常有意义的,首先,户型图的准确识别可以显著降低用户在线手工标注的工作量,提升效率与体验;其次,相比于手工标注的户型库构建方法,使用微分渲染的户型识别方法节约成本90%以上,使得离线构建大规模户型库成为可能。大规模户型库的构建,实现了用户数据资产的积累,为用户在线看房,在线设计和在线装修提供了数据支持。
目前,基于微分渲染的户型图识别算法已经用于躺平设计家设计师户型在线导入识别,D端(设计师端)户型库的构建和手淘C端(用户端)标准户型库构建。躺平设计家D端户型库规模达到500W,手淘C端标准户型库标杆城市杭州户型覆盖率达到70%+。基于微分渲染的户型识别算法被 CVPR2021高分录取。
背景
户型图通常都是使用特殊的画图工具(例如 AutoCAD,HomeStyler等)生成的,用于帮助人们在买房或者装修过程中快速识别房屋结构。设计师在进行户型图制作过程中操作对象都是矢量化的素材。为了便于传阅和保存,矢量化的素材最终会转化生成点阵图,即我们平常看到的.jpg和.png 格式的图片,上述操作,我们通常称之为光栅化。
设计师在装修使用户型图的时候,需要将光栅化的户型图重新进行矢量化,然后设计。这一步矢量化的过程涉及大量的交互操作,费时费力,设计师需要描绘墙体、门窗结构,确定房间的类型和尺寸等。为了解决这个问题,有一些工作开始研究通过自动化方法来进行户型图矢量化的技术。
自动进行户型图矢量化的方法,总体分为两大类,一类是使用分割模型做户型元素识别,一类是使用检测模型做户型连接点(junction point)检测,然后整数规划方法恢复拓扑连接关系。 基于分割模型进行户型识别的优势在于能够获得户型元素的逐像素结果,精度比较高,但是无法恢复户型的矢量化结构。基于检测模型的方法能够重建户型的矢量化结构,但是泛化性能较差,一个连接点的误检测导致全图的重建失败,此外检测方法依赖于连接点的正交假设,无法处理斜墙的情况。
在户型图中,除了房间、墙、门、窗等户型元素之外,还包括比例尺、房间名称、装饰布局等元素(如图1 所示),这些元素对于户型图的准确重建也至关重要,已有的方法中都没有关注这些元素的识别。
图1) 户型点阵图(上)与矢量图(下)
总体来说,已有方法忽略了户型图中丰富的多模态信息,仅仅关注了最基础的墙门窗等结构。在墙门窗的矢量化转换过程中,有些方法无法处理正交元素,其余方法无法完成矢量化转换过程。我们希望找到一种能够准确识别户型各种元素信息(包括墙门窗等结构、房间类型、房间尺寸、房装饰布局元素等),并能够转换为矢量化表示的户型识别方法,解决上述问题。
方法
图2)集成了识别模块和重建模块的户型识别系统框架
我们的系统框架如图2所示,给定一张输入户型图,我们首先通过检测方法得到户型区域, 对于检测得到的户型区域我们会通过分割模型进行逐元素的分割,通过文本检测和符号检测来进一步得到准确的房间类型信息。比例尺模块会计算得到比例尺线段的端点和数字。重建模块会综合上述检测分割得到的元素来进行基于微分渲染的矢量化优化。最终,综合比例尺模块信息得到一个准确的3D重建结果。下面将详细介绍每一个模块使用的具体技术方法。
检测
一般情况下,一张户型图有效区域面积只占输入图像的50%,大部分空间可能被宣传文案占据。为了提取到准确的户型信息,我们使用检测模型来对户型区域进行检测。我们采用了一种被广泛使用的轻量级检测模型——YOLOv4作为我们的基础网络。检测得到的区域,在保持横纵比的情况下放缩到512 * 512分辨率,用于后续结构元素的提取。文本信息能够提供房间类型的额外信息。由于在不同户型图中,文本信息基本是一致的(例如,客餐厅、卧室、厨房等等标识),所以我们没有采用惯用的OCR技术,而是使用了一个检测技术用于检测不同的房间的类型。装饰符号检测与本文检测类似,其能够提供关于房间类型的额外信息,例如马桶与洗手台标识能够代表当前房间是卫生间。我们仍然使用了YOLOv4,与以往不同的是,我们使用了Mosaic增广技术,目的是让网络能够关注于装饰符号的每一个部分。
结构元素提取
结构元素提取是一个图像分割的过程。我们使用DeepLav3+作为基础网络,输入图片为512 *512分辨率的图片,输出的是一个512 * 512 * 15的特征。15维分别代表背景、墙、门、窗、门洞、客餐厅、卧室、厨房、卫生间、书房、阳台、其他房间和门、窗、门洞的端点热图。区别于经典的图像分割算法,我们对损失函数进行了特别的设计。共计包含四个损失函数,分别是交叉熵损失,近邻场损失,端点回归损失和多任务损失。
比例尺计算
已有方法并没有关注比例尺计算,但是比例尺对户型的三维重建至关重要,比例尺的微小误差都会导致户型套内面积的巨大差异。我们系统提出了一种比例尺识别方法,分为四个模块,分别是线段检测,数字识别,线段与数字的匹配与比例尺计算。
图3) 比例尺计算框架
线段检测是通过检测线段的端点来得到的。通常情况下,比例尺分布在户型图周围,所以我们将端点分为四类,分别是上下左右。损失函数的设计与结构元素提取中的回归损失一致,我们使用了一种变形的全卷积网络结构,使用Resnet50作为基础模块。数字识别模块我们没有使用传统OCR,而是直接使用了检测模型来检测数字区域,数字区域分为三类,分别是正常数字区域,顺时针90度数字区域,逆时针90度旋转区域。检测得到数字区域之后,我们使用了一个数字识别模块来识别每一个具体数字,并使用一个数字质量回归模块进行质量校验,最终得到准确的比例尺数字。数字与线段匹配,我们将其形式化为一个二部图匹配的问题,通过KM算法类进行求解。匹配之后,存在比较多的数字与线段匹配的对,每一个匹配对能够计算得到一个比例尺结果。我们通过K-means 方法来选择质量最高的那一类的比例尺作为最终结果。
矢量化
在结构元素提取的模块中,户型元素可以被分为两大类,一类是房间边界元素,包括墙、门、窗、门洞等;一类是房间类型元素,包括客餐厅、卫生间等等。矢量化的核心想法是从每个房间的类别元素中得到房间轮廓(房间内线墙)信息,然后从房间轮廓和房间边界元素得到房间中线墙信息。整体的流程框架如下图所示:
图4)矢量化流程框架
- 房间轮廓优化
在我们见到的大部分户型中,由于建筑学和美学的原因,墙体都是水平或者垂直的。我们假设每一个房间的都可以用一个多边形来进行表示。我们首先使用Douglas-Peucker算法来得到一个初始的房间多边形数据,然后通过优化多边形的顶点坐标来得到一个准确的轮廓表示。我们使用房间轮廓顶点优化和房间轮廓顶点缩减两个步骤来迭代进行。
房间顶点坐标优化
我们通过优化如下目标函数来优化顶点坐标:
房间轮廓顶点缩减
当如下两个条件满足的时候,我们将缩减多边形的顶点。
- 中线优化
图5 ) 内线画墙(左)与中线画墙(右
表示通常情况下,有两种方法来进行户型表示,一种方式是内线画墙,沿着房间边缘来进行绘制,在房间轮廓优化部分求解即是房间内线;另一种方法是中线画墙,每一条线代表的是一堵墙,有厚度信息。两种方法表示的户型可以进行互相转换。下面我们用一种类似的方法来进行中线画墙方法的求解。我们使用墙连接点坐标优化和墙连接点数量缩减两个步骤来迭代进行。
墙连接点坐标优化
我们通过优化如下目标来进行墙连接点坐标优化:
墙连接点数量缩减
实验
定量评测
表1)与R2V和DFPR方法的对比定量评测
我们将我们的分割识别方法与已有的方法 Raster-to-Vector[1], Deep Floor Plan Recognition[2]进行了比较,我们简写为R2V和DFPR。对于R2V方法,由于其隐含曼哈顿假设,所以我们在标签生成的过程中,删除掉了斜墙的数据,然后使用启发式方法进行了连接点类型的确认。为了公平起见,我们对R2V和DFPR方法都使用了检测模块。最终的结果展示在表1中,从表中可以看出我们的方法几乎在所有类型,所有指标上优于已有的方法。
表2)矢量化结果的定量评测
表3)比例尺结果的消融实验
表4)装饰符号检测的平均精确率
表5)文本检测的平均精确率
表3展示的是比例尺的识别结果评测,评测在两个维度上进行的,分别是阳性率和平均误差。正例代表的是与标注数据在某个误差范围下(2%,5%和10%)。所有样本的平均误差是4.6mm。Kmeans模块和数字数量回归模块带来了25%的提升。表4和表5展示的是装饰符号检测和文本检测的平均准确率。
定性评测
图6)户型识别与重建结果
图7)更多类型的户型识别重建结果
图6展示的是户型识别与重建结果,从左到右依次是原始户型图,图像识别结果,矢量化重建结果与最终的3D重建结果。第二列识别结果中不同颜色代表的是不同的户型元素。从第二行中,可以看到当前方法支持斜墙的重建。为了评测我们算法的泛化性,我们直接用开源数据集(rent3d[3]和 cubicasa5k[4])图片在未训练的情况下进行测试,仍然获得了高质量的重建结果。
图8) 在rent3d(前三行)和cubicasa5k(后两行)上的户型识别与重建结果
讨论与展望
在本文的方法中,我们假设房间是依靠门、窗、墙、门洞等元素来进行分割的,因此对于开放厨房类的元素无法进行准确的识别。此外,由于我们在比例尺检测模块中只分类了三种类别,无法检测斜墙上的比例尺元素。我们在矢量化模块中,我们假设房屋是由多边形构成的,因此对于曲线墙无法重建出曲线结果。
对于户型图识别中的结构元素提取,我们将其形式化为了一个语义分割问题。在我们实际业务使用中发现,线上户型图天然呈现一个长尾分布。很多地产开发商为了营销效果,会自己定义不同房间的铺贴纹理,甚至同一开发商同一时期在不同地域仍然有不同的纹理风格,而此种风格的户型图数量又非常少。在已有数据集训练的语义分割模型迁移到此类图片上的效果将大打折扣。对于此类开放集问题,当前尚无系统性方法进行解决,工程实践上可以用增量学习来得到一个阶段性可用方案。
致谢
感谢友闻、芯扬和乐田三位老师的指导。感谢躺平设计家、iHome兄弟团队的合作与支持。
Reference
- Liu, Chen, et al. "Raster-to-vector: Revisiting floorplan transformation." Proceedings of the IEEE International Conference on Computer Vision. 2017.
- Zeng, Zhiliang, et al. "Deep floor plan recognition using a multi-task network with room-boundary-guided attention." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019.
- Liu, Chenxi, et al. "Rent3d: Floor-plan priors for monocular layout estimation." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.
- Kalervo, Ahti, et al. "Cubicasa5k: A dataset and an improved multi-task model for floorplan image analysis." Scandinavian Conference on Image Analysis. Springer, Cham, 2019.
论文链接
论文正文:
https://openaccess.thecvf.com/content/CVPR2021/papers/Lv_Residential_Floor_Plan_Recognition_and_Reconstruction_CVPR_2021_paper.pdf附件材料:
https://openaccess.thecvf.com/content/CVPR2021/supplemental/Lv_Residential_Floor_Plan_CVPR_2021_supplemental.pdf