论文:Connecting the Dots: Floorplan Reconstruction Using Two-Level Queries
论文地址:https://arxiv.org/pdf/2211.15658
code:https://github.com/ywyue/RoomFormer or https://github.com/woodfrog/poly-diffuse
参考:https://blog.csdn.net/qq_50199113/article/details/131500487
目标:结构化2d平面重建任务,一般为点、线、面,论文中全部用的poly面(有序顶点的可变长度序列)表示。
常用方法:
- 自上而下,基于分割提取掩码,再通过策略优化得到多边形平面图。非端到端训练的方式使得结果优劣很大程度上取决于优化方式的好坏。
- 自下而上,基于神经网络提取角点,然后寻找角点之间的边缘(即墙段),最后将它们组装成平面布置图。其效果取决于初始角点查询方式的优劣,局部数据缺失严重影响重建。即无法从未检测到的角中恢复边缘。
本文贡献:提出RoomFormer,基于Transformer架构端到端训练poly矢量,通过两级查询实现室内平面图的预测。详细的说,利用Transformers的序列预测功能,直接输出每个房间的有序、变长的顶点序列。①基于CNN对房间密度图进行特征提取;②Transformer+位置编码输出多个有序的角点序列。③通过简单地按预测顺序连接恢复平面布置图。
模型评估数据集:Structured3D和SceneCAD
平面图建模方法:核心思想将平面图重建作为多边形预测问题,每个多边形代表一个房间,且被建模为一个有序顶点序列。而边则由顶点的顺序隐式编码,因此不需要额外的边预测步骤。即输出为一组任意长度的序列,序列中每一项代表一个闭合多边形。多边形由任意数量的顶点序列表示,每个顶点被建模为由cn和pn组合成的向量,pn代表其2D位置,而cn={0,1}则表示该点是否为有效顶点。一旦模型预测了有序的角点序列,就连接所有有效的角点,以获得所有房间的多边形表示。
模型框架:
模型架构如上图,a基于resnet提取多尺度图像特征,b基于deformable attention编码图像特征,c由6层堆叠(每一层由一个自注意力模块(SA),一个多尺度可变形交叉注意力模块(MS-DCA)和一个FFN组成)每个解码器层接收来自编码器的增强图像特征和来自前一层的一组多边形查询信息。多边形查询信息首先在SA模块中彼此交互,然后再MS-DCA模块中查询密度图中的不同区域,最后由一个共享CNN来预测每个查询位置作为角点的有效性,过程中使用两级查询,即一级用于查询多边形,另一级则用于顶点,多边形集被表示为一个M*N*2的矩阵,M是多边形最大数量,N是每个多边形顶点最大数量。d在训练过程中,多边形匹配模块在预测多边形和真实多边形之间的差距,从而实现端到端监督。
下面重点拆解下decoder结构:
- detr decoder的输入一般为query的 embedding(tgt)和 pos embedding,以及encoder输出的memory及其pos embedding。(这里忽略mask)
- deformable detr decoder的输入一般为query的 embedding(tgt)和 pos embedding,以及encoder输出的memory(src)及reference points。
- roomformer的decoder结构本质上和deformable detr ecoder一致,其将reference points视为两级查询的polygon queries,微小的区别在于query的pos embedding是由随机初始化的tensor加上reference points经过MLP的结果。
decoder这样设计的好处:
- decoder对所有角点计算自注意力,不仅允许单个房间的角落之间的交互,还允许不同房间的角落间的交互,从而实现全局推理。
- 在多尺度可变形注意力模块中,直接使用多边形查询作为参考点,使网络能够使用显式空间先验来汇集多边形顶点周围多尺度特征图中的特征。
- 房间和角落的数量是通过将每个查询分类为有效或无效来实现。
输出层结构:
- 分类:Transformer解码器最后一层输出为一个M*N*C的矩阵,通过对角特征求平均来聚合每个房间的特征,获得聚合后大小为M*C的特征矩阵。最后,将矩阵输入到一个线性投影层中,用softmax函数求每个房间的标签概率。M通常大于场景中房间的实际数量,因此会使用额外的空类标签来表示无效房间。
- 坐标:reference points。
目标检测过程中匹配+loss:
- roomformer本质上是deformabel detr,目标检测过程中匈牙利匹配是必不可少的。与目标检测匹配一致,包括坐标和类别。区别在于坐标目标检测通常是bbox,而本文是poly。坐标匹配度计算方法也有区别,首先将GTpoly改为顺时针,然后以每个坐标点为起点计算最小误差当做匹配误差。
- loss过程和匹配过程相似。