|
户型图标准化重建在贝壳的实践
户型图标准化重建在贝壳的实践
李雨龙
壳算子
壳算子 贝壳找房数据智能中心策略算法部技术公众号 10篇内容
2021年03月24日 11:26
1. 动机通常"户型"以栅格图像( Raster )这种非标准形式存在于我们的日常生活中, 因此基于原始户型图像去理解户型, 通常是最直观的解读方式.比如在"户型图片"找"户型"任务中, 可以通过提取"栅格图"的图像特征再检索相似户型图. 而事实上户型图的样式繁多, 例如 CAD 图, 手绘图, 新房图等. 同一种户型可能有成百上千的样式, 且样式之间更是千差万别. 如果只通过图像浅层的语义去匹配, 最终也只能得到一张颜色, 形状差不多的户型图, 而不是我想要的户型. 因为, 户型图的本质是由点, 线, 面表达的带语义的矢量信息.因此要真正地理解户型,且基于户型特征进行精准找房, 就必须得将这些各式各样的栅格户型图片标准化重建之后提取高级语义特征, 比如一个户型的墙体, 门, 窗的长度, 位置, 空间布局等等.基于重建后的高级语义特征, 得到贝壳标准户型, 才能更准确而深刻地帮助用户理解户型对"住"的影响(户型解读), 甚至帮助用户找到他们想要的户型(户型找房).贝壳作为行业内的技术先行者,一直持续不断地探索着户型图重建技术,在3D的场景中,如视团队实现了基于点云的重建技术,以及最新的单目重建,成功落地到许多场景,成为行业标杆.在2D的场景中,FrameX团队主导的户型标准化重建也同样大放异彩.2020年, 贝壳在 C 端和 B 端首发了"扫一扫"功能, 基于户型图标准化重建技术, 实现了类似于"拍立淘"的户型检索工具, 面向对户型有精细化需求的用户, 提供了一条与众不同的找房路径.2021 年, 该技术也成功赋能新房场景. 在新房内容中, 户型作为位列用户 Top 1 关注的信息, 长久以来需要依赖极大的人力将开发商的 CAD 户型图转换成贝壳标准矢量图, 效率和准确率都不尽如人意. 这也成为了新房户型内容最大的瓶颈: 解读内容基本都是基于人工的三言两语的描述, 标准和质量也参差不齐. 在应用了标准化重建技术之后, 整个新房户型图的绘制效率提升了 5 倍以上. 由于有了高质量的户型矢量数据, 新房户型可以无缝接入 FrameX 的 AI 户型解读, 给用户带来了丰富而专业的标准化解读报告.2. 定义2.1 栅格图和矢量图栅格图( Raster )即我们常见的图片, 比如我们拍的相片. 矢量图则是一种由点线面等基本元素构成的结构化数据, 在户型矢量( Vecter )图中, 它一般是一个 Json 文件, 内部描述了户型墙角(点), 墙体(线), 门窗(线), 分间(面)的空间坐标关系.2.2 "标准化"和"矢量化"矢量化是将栅格图片解析出由点线面组成的结构化数据, 而标准化则是在这基础之上, 变成一种符合贝壳户型数据标准的矢量. 本文仅讨论栅格户型图矢量化(以下称 R2V), 因此以下户型图标准化即矢量化.栅格图标准化就是把一张栅格的户型图(例如手绘户型图), 变成一张贝壳标准图, 有了标准图之后, 结合 FrameX 的户型解读和关系来提取特征, 我们就可以帮助用户找到他们想要的户型.3. 相关工作建筑的平面设计图(以下简称"户型")在设计, 理解, 重建室内空间中扮演着非常重要的地位, 它的绘制方式可以非常便捷的表达出场景的几何和语义信息. 例如,可以快速的找到分间的范围, 门的位置, 或者物体的摆放.一般专业设计师在绘制户型图时候是用 AutoCAD [7], SketchUp [8]等矢量工具, 但给客户展示时候会打印出来成为一张栅格图(一般意义上的图片), 这样就丢失了结构化的几何和语义信息, 同时这张图也失去了人为后处理的可能性, 比如建模, 改造等等. 就像给你一段文字的截图而不是文字本身, 如果你想编辑可能需要通过 OCR 识别, 这里户型标准化做得恰恰是类似 OCR 的工作.目前学术界和工业界都有许多关于户型图矢量化的探索, 他们在方法上主要分为:3.1 基于端到端的元素识别这种方法是将户型图中的元素通过图像的方法识别出来, 比如识别一张户型图中的具有显著特征的墙和门窗等等. 他的优势是速度快, 但瓶颈在于识别/分割的准确性, 因为户型图的类别是一个开放的类别, 所以该方法早期基于传统 CV 的工作普遍鲁棒性较差. 后来随着深度学习的发展, 这类方法在鲁棒性上有一定提高, 但效果依然那么不理想. 代表工作: Deep Floor Plan Net(DFPN) [4].3.2 基于 DNN + 优化这类工作主要代表是 Furukawa 教授的 Raster-to-Vector( R2V) [3] 以及后续 FloorSP [9] 等工作. 它相对于上面方法最大区别是: 在识别之后加入了复杂的优化模块.复杂的先验知识和约束大大提升了模型的鲁棒性和准确性, 在结果上得到了质的飞跃. 但这也导致最终优化求解时间指数级增长, 有的复杂户型的优化甚至能长达 10 秒以上.另一方面, 在 R2V 的工作中, 为了简化问题, 作者提出曼哈顿假设, 换言之, 一个户型只能有水平和垂直的线, 无法处理非直墙(斜墙/弧墙). 不过, 通过观察贝壳户型分布, 90% 以上的户型是符合曼哈顿假设. 这样虽然缺失了一部分识别召回, 但由于线只可能存在于两种位置, 所以最终的优化变量是少量可枚举的, 这样可以过滤大部分 False Positive 的线, 最终实现识别鲁棒性的提升.基于这些现有工作, 在实现户型标准化中, 我们面临的主要挑战是:种类繁多的户型图.对于开放的户型种类库有很强的鲁棒性.如何优化模型识别时间.因为最终需要落地, 所以对算法的执行效率有非常高的要求.通过实验, 第一种方法在鲁棒性层面无法达到预期(Accuracy: End2End@0.87 v.s R2V@0.94), 于是最终我们的模型是基于 R2V 的建模思路. 并且加入了一些trick优化我们的模型. 我们的贡献主要是:使用 Focal Loss 以及定制化的数据增广, 提高 DNN 推理准确率.使用 Entropy-based 的剪枝策略, 提高优化效率.4. 建模R2V 的建模采用 Bottom-up 的模式, 即由点及线, 再由线及面. 总共有三部分: DNN 模块, 整数优化( IP )模块, 矢量标准化模块. 首先, DNN 模块将输入的户型图片用图像分割的方法得到墙角点/墙体/门窗/分间的概率热力. 这些元素都是下一步整数优化的基础变量. 接着, 利用这些点结合户型的几何和语义约束, 我们可以得到关于点到线, 以及线与线带约束的优化模型, 这个模型要求优化变量需要符合户型的先验, 例如窗必须在墙上, 一个基本元素只能被使用一次等等. 最终, 优化模型会得到一个带语义的点, 线, 面关系, 再通过计算几何做后处理就可以得到标准矢量. 由于篇幅限制, 这里仅介绍主要的前两个模块:4.1 DNN模块DNN模块的骨干网络基于经典的语义分割网络 DRN [5] , 目标是学习和预测输入户型带语义的点, 线, 面的像素级分割.其中最重要学习目标就是"点", 它指墙角/附件的角点, 其实就是两个线的链接方式. 在曼哈顿假设下, 我们假设所有的线都是横平竖直, 因此这里在 R2V 中, 作者枚举了所有可能的 13 种角点类型. 不同的点分布在不同的预测通道, 最终加上附件和门窗我们共有 21 类点.除此之外还有线和面语义的热力, 这些语义热力是用来判断不同的点之间可能存在的连接关系和语义类型. 比如两个点之间存在一条窗的热力线, 那么最终这两点很可能连成一个窗. 而面则是表示不同类型的分间, 比如上图紫色代表客厅, 橙色代表卧室.由于 R2V 是一篇比较经典的工作, 所以在网络的 Loss 上并没有对于诸如点这样的小目标进行特殊优化, 所以我们直观的想法是使用 Focal Loss [6] , 最终我们在准确率上绝对提升了 1.13%, 召回率绝对提升了 2.7%.4.2 IP 模块整数优化 IP 模块 ( Integer Programing ) 是 R2V 方法最核心的部分, 也是区别于传统的图像识别方法更强大的地方.基于 DNN 的分割结果, 通常可以得到足够的候选基础元素(i.e. 点, 墙, 开口, 附件等等), 而整数优化则可以利用许多几何或者语义的约束, 在这些候选元素中发现正确的(能被选中的)子集. 以下是整数优化模型:变量定义:变量分为三部分: Junction, Primitive, Semantics, 他们的大写首字母表示该类型下的指示函数(Indicator Functions), J 代表连接角点, P 代表由角点链接而成的线, S 代表由线结合语义热力产生的语义.约束条件:One-hot encoding constraints独热约束, 它的目的是约束最终语义变量和基础变量之间保持一致. 因为我们知道语义是基础元素和语义热力结合而成的, 因此语义变量的存在必须要求基础元素的存在.Connectivity constraint连接性约束, 它的目的是约束不同类型角点所链接的线和它的类型需要一致. 比如一个 L 型角点, 那么只能且必须有两条线连接. 同理, T 型需要有三条线.Mutual exclusion constraints互斥约束, 它约束了两个过于近的元素不能同时被选中.Loop constraints递归约束, 约束了一个方向的分间属于同一个类型.Opening constraints开口约束, 约束了门窗必须存在于墙上.最终, 目标方程如下:终极优化目标是基于众多的约束, 能用到的元素越多越好.基于原始 R2V 模型, 求解时间远远超出产品落地可以接受的上限( > 10 S). 因此这里我们从优化变量的数量入手, 提出了基于熵的剪枝策略:它的主要思想是, 同一个点可能存在一些模棱两可的预测概率, 这其实也符合常识, 因为有些点人也很难确定到底是什么类型, 例如上图最顶部的点, 我们很难确定它是一个倒 T 还是一个 L 型.对于模型来说也是一样, 所以为了保证召回需要将这样的点增广出两种类型, 即同时是T和L, 这样在优化时, 可以通过计算全局最优筛选它合理的类型. 但这样会导致优化时间的增长. 通过观察我们发现, 其实大部分的点其实并不需要增广, 因为他对于模型来说是非常确定的, 所以需要有一个策略来更加"合理"地增广, 因此自然而然, 这里使用了熵作为同一个点的不确定性指标. 最终基于这个策略 trick, 我们实现了召回和速度的平衡, 在准确率绝对提升 0.9%, 召回率提升 3.2%.5. 讨论对于预测点, 线, 面, 最直观的建模方式莫过于 End2end, 即预测一张 heatmap , 通过预测所有角点的热力, 然后再预测一张所有线的热力图, 接着直接将点与点之间的按照线的热力大小连接就完成了所有工作. 但 R2V 为什么却要费劲周折将所有的角点分成 21 个类型分布在 21 个通道里预测呢 下面我们从栅格户型图矢量化面临主要的挑战性问题的角度, 定性的分析不同建模方式的差异:1. 非直线重建.非直线(非曼哈顿假设)重建, R2V 和直观建模都没有解决. 直观建模虽然可能可以勉强解决, 但需要很多 trick, 比如需要将多边形区域拟合成一个多段折线. 在图像分割后处理的领域, 虽然也有很多现有工作表现也不错, 但在户型图的场景, 分割区域往往模棱两可(比如一个户型只有框线, 其他信息都没有, 因此分间类型分割结果几乎是不可能.), 因此最终得到的多段线也会问题多多.2. 近邻点干扰处理.对于近邻点干扰, 如果采用直观建模方式, 所有角点会被预测在一张 heatmap 上, 因此相邻的热力区域如果太近热力区会被连在一起, 这种方式造成的一个后果是很难用热力区分割近邻的角点. 另外, 对于标注点的 GT 也很难处理, 因为太近一定会有交集, 这更加恶化了这个问题. 当然也可以减少标注 GT 区域的像素, 但对于学习器来说, 学习过程比较困难.而 R2V 因为将不同角点按照语义分布到 21 个通道, 相邻两个角点大概率(因为不是一类)被重建到不同通道, 因为 R2V 采用 BCE Loss, 所以每个点的 GT 和预测都分布于不同 Channel 的 heatmap , 因此可以提取各自的热力点中心, 因此相对于直观建模, 会缓和近邻点干扰.3. 鲁棒性鲁棒性上, 直观建模需要直接从一个点出发找所有最近可以连接的点, 所谓“可连接”可以理解为两个角点中间有线的热力, 并且大于一定阈值, 而这种方式最大的问题是求解的鲁棒性不高, 因为两个点能不能连, 全靠中间线的热力阈值, 而线的预测一旦不好, 那么最终一损俱损.而 R2V 除了利用线热力之外, 还考虑了其他的分间类型, 门窗等等信息作为连线的 side info, 最终可以得到全局最优, 相当于把更多的先验知识, 融合到优化模型中, 理论上算法得到了更多信息, 所以结果大概率比直观建模好.4. 求解最优组合效率.在求解最优组合的效率上, 其实两者都是采用了一定剪枝的策略, 前者用相连点之间线的热力, 而后者则即考虑线热力, 也考虑角点类型, 比如 L 对应上面一定连一个朝下的边. 因此, 求解最优组合效率 R2V 具有一定优势.7. 总结与未来工作本文中, 我们介绍户型图标准化重建( R2V )在贝壳的实践, 详细说明了建模方式, 优化 trick 以及对比了其直观建模的优势. 虽然目前 R2V 能比较好的解决重建的需求, 但问题依然存在: 曼哈顿假设及求解效率低. 因为本质上, R2V 所做的事依然是基于深度学习的后处理, 区别是这种后处理把网络所没有学习到的知识用一个复杂度特别高的优化模型表达出来, 如何将这种知识通过网络学习得到, 依然具有挑战性.目前 FrameX 团队也在探索领域的前沿, 尝试用端到端方式解决整数优化建模的瓶颈, 并且新的方法同时也表现出对于非曼哈顿假设的优异性能,如下图所示。非曼(有斜墙)户型的重建近来, 基于图卷积的网络已经表现出非常好的关系标准能力, 我们也看到一些前沿的工作通过 Message Passing 的方式建模这类任务, 但户型图标准化重建的挑战依然存在, 同时也非常值得继续深入探索.最后, 户型图标准化重建( R2V )是踏出了 2D 户型标准化的第一步, 而它本身作为 FrameX 的一种底层能力, 对于"住"这个领域还有更多更大的价值等待挖掘.Ref.坚持房住不炒:放弃房价上涨幻想 踏踏实实做实业Chen Liu, Jiajun Wu, Pushmeet Kohli, and Yasutaka Furukawa. Raster-to-Vector: Revisiting floorplan transformation. In IEEE International Conference on Computer Vision (ICCV), 2017.Zhiliang Zeng, Deep Floor Plan Recognition Using a Multi-Task Network with Room-Boundary-Guided Attention. In IEEE International Conference on Computer Vision (ICCV), 2019.Yu, V. Koltun, and T. Funkhouser. Dilated residual net-works. In CVPR, 2017.Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár. Focal Loss for Dense Object Detection In ICCV 2017.Autocad. http://www.autodesk.com/products/autocad/overview.Sketchup. https://www.sketchup.com.Jiacheng Chen, Chen Liu, Jiaye Wu, Yasutaka Furukawa. Floor-SP: Inverse CAD for Floorplans by Sequential Room-wise Shortest Path. In ICCV, 2019.
预览时标签不可点
修改于2021年03月24日关闭更多小程序广告搜索「undefined」网络结果
修改于2021年03月24日
|
|