Reading view

There are new articles available, click to refresh the page.

读论文: Segment Anything

这是 Meta 最近发布的一篇挺火的论文,标题就是 Segment Anything,也可以称之为 Segment Anything Model,简称 SAM。这个模型的野心很大,试图建立起一个“大一统”的分割模型,可以对任意类别的元素完成像素级分割;

为了达成这个任务,作者建立了一个极为庞大的数据集,包含了 1100 万个样本上的 10 亿个 Mask。这个数据集的名字叫做 SA-1B。作者还引入了一个 promptable segmentation 的概念,即我们可以通过输入文本来控制被 Segment 标记出来的像素集合的类别,如上图 (a) 所示。

参考大语言模型中在近期取得突飞猛进的进展,如果在图像领域也构造出足够强大的通用模型成为一个新的热点。本文的目标就是为图像分割任务训练一个基础的通用模型。另一个重点是将图像分割筒 Prompt 工程集合起来。

读论文:一种音频事件识别方法

本文的标题是 Adaptive Multi-scale Detection of Acoustic Events。这是清华大学电子系何亮老师团队在 2019 年的工作。

声音事件检测(AED或SED)的目标是预测给定音频段中目标事件的时间位置。这项任务在安全监测、声学预警和其他场景中起着重要作用。然而,数据不足和声学事件来源的多样性使AED任务成为一个艰巨的问题,特别是对于普遍采用数据驱动方法的情况。本文从分析声学事件的时频域特性入手,表明不同的声学事件具有不同的时频尺度特征。受到这个分析的启发,我们提出了一种自适应多尺度检测(AdaMD)方法。通过利用沙漏神经网络 (hourglass neural network) 和门控循环单元(gated recurrent unit, GRU)模块,我们的AdaMD在不同的时间和频率分辨率下产生多个预测。随后采用自适应训练算法,将多尺度预测相结合以增强整体能力。在2017年声学场景和事件的检测和分类(DCASE 2017)任务2、DCASE 2016任务3和DCASE 2017任务3上的实验结果表明,AdaMD在事件错误率(ER)和F1分数的指标上优于已发表的最先进竞争对手。我们收集的工厂机械数据集上的验证实验也证明了AdaMD的抗噪能力,提供了实际应用的证明。

1 Introduction

AED 问题的主要挑战:

  1. 数据极度不均衡;
  2. 事件具有多样化的特征;
  3. 时运频域尺度不一:这句话说的是不同的时间具有不同的时域长度,以定长音频输入为基础的检测模型的有效性存在问题;

AdaMD 的网络架构如上图所示。此网络由一个 CNN 网络和一个 RNN 网络组成。其中,CNN 部分的网络架构被称为 Hourglass,这种网络架构在计算机视觉领域被广泛应用于关键点检测,其优势在于其可以在多种时频分辨率的条件下进行特征提取。在 RNN 部分,作者采用了 Gate Recurrent Unit (GRU) 模块来处理 CNN 模型输出的每个通道,从而处理时域信息。GRU 的输出会经过一个上采样流程的处理,使得各个通道的输出具有相同的尺寸。

2 声音事件检测任务的类别

  1. 多事件检测:同一时间段内有多个事件发生,检测模块除了检测是否有事件发生,还需要给出事件的类别。
  2. 弱监督事件监测:理想情况下,标注数据应该包含事件的类别和起止时间。但是这样标注工作会比较多,如何在只标注的类别的情况下,让模型学习出事件的起止时间是一个挑战,目前这个问题巨解决的还不是很好;
  3. 异常事件检测:如何检测我们不知道的异常事件?

读论文:CADTransformer

这次要读的文章是 CADTransformer: Panoptic Symbol Spotting Transformer for CAD Drawings

这篇论文介绍了一个名为CADTransformer的新框架,用于自动化CAD图纸中的全景符号识别任务。该任务需要识别和解析可数对象实例(如窗户、门、桌子等)和不可数的物品(如墙壁、栏杆等),并在CAD图纸中进行标记。该任务的主要难点在于图纸中符号的高度不规则的排序和方向。现有方法基于卷积神经网络(CNNs)和/或图神经网络(GNNs)来回归实例边界框并将预测结果转换为符号。相比之下,CADTransformer直接从CAD图形原始集合中进行标记,通过一对预测头同时优化线条级别的语义和实例符号识别。此外,该框架还通过几个可插拔的修改增强了主干网络,包括邻域感知自注意力、分层特征聚合和图形实体位置编码等。此外,该论文还提出了一种新的数据增强方法,称为随机层(Random Layer),通过CAD图纸的分层分离和重组来进行数据增强。最终,CADTransformer在最新发布的FloorPlanCAD数据集上,将先前的最先进水平从0.595提高到0.685,展示了该模型可以识别具有不规则形状和任意方向的符号。

1 Introduction

1.1 关于 CNN 网络的准确性问题

在 CAD 文件中对图元要素分类的任务在本文中被称为 Symbol Spotting。这类任务在建筑行业和其他工业领域都要广泛的应用前景。Symbol Spotting 任务分类的目标是具有几何特征或更多异质特征的图元要素,不同的是,传统的基于计算机视觉,尤其是基于 CNN 网络的图像分割任务,其分割的目标元素是同质化的像素。由于存在遮挡、非均匀聚集、制图风格差异等原因,Symbol Spotting 任务具有较大的难度。

传统的 Symbol Spotting 采用的是一种名为 Query-by-example,望文生义地来看,这些方法需要提前指定特定的符号构成,然后以匹配的方式寻找图面中与之类似的元素。这种方法显然无法适应现实中复杂多变的画图方式。近年来也涌现了一些基于机器学习的方法,他们提出使用 CNN 方法来解决 Symbol Spotting 问题。但是将 CAD 矢量数据本身转化成位图天然就引入了精度损失,这使得这些方法存在先天性不足。

以建筑行业为例,建筑 CAD 图纸具有“高对比度”(或者说“高灵敏度:)的特点,在一个 100 米乘 100 米的平面空间内,在围观层面上要求达到 1 毫米的精度。为了保持这个精度,我们必须将其转化成 10 万像素乘 10 万像素的位图,这个尺寸的图像处理起来代价过于高昂。而如果减少像素数量,则无法保持 1 毫米的精度。

这篇论文的团队在之前的发表的论文中提出了 FloorPlanCAD 数据集。基于这个数据集可以训练能够进行 Panoptic Segmentation Task 的模型。这类任务是综合了实例分割和语义分割的复合任务。在 CAD Symbol Spotting 场景,这意味着需要同时得到图元级别的类型归属和具有语音含义的每个建筑构件的识别。

本文的作者通过引入图卷积神经网络 (GCN) 来解决 Symbol Spotting 问题。GCN 网络可以给出每个图元的语义信息,同时还有一个 CNN 网络来给出“可数”构件的实例分割结果。

1.2 Transformer 的作用

基于 Transformer,可以在不预先定义图连接结构的情况下,基于注意力机制推断到 tokens 之间的全局关系 (Transformers reason global relationships across tokens without pre-defined graph connectivity, by instead learning with self-attention)。这使得 Transformer 可以在 panoptic symbol spotting 任务中替代 GCN 的作用。但是标准的 Transformer 在这类任务上的使用仍然存在一些挑战:

  1. Tokenization and position encoding of graph symbols:前者是编码的问题,后者则是典型的 ViT 引入的问题。典型的 ViT,即 Visual Transformer 会将每个图像划分成 或者 个 Patch,即 token,同时基于这个二维网格分布可以将这些 token 的顺序线性化,并组合在一起。不过在 CAD 数据中,图元数据的排列是无序的,且坐标数值属于连续的实数空间,并非离散化,这和栅格化的图像有根本性的不同。
  2. Inmense set of primitives in certain scenes. ViT 的全局注意力机制的复杂度相比于 token 的数量是四次方的,如果是处理 CAD 数据,由于图元的数量非常庞大,这个数量级的复杂度是无法处理的。
  3. Training data limitations. ViT 架构能够提供更多灵活性的同时,其对数据的需求量也更大了。

作者提出的 CADTransformer 旨在成为一个通用的框架,可以被轻易地和现有的 ViT 骨干网络整合起来。

CADTransformer 是作为一个完整的 ViT 处理 Pipe 的一部分被插入到图像处理流程中。

2 Methodology

2.1 Overview

一般意义上的 Panoptic symbol spotting 任务可以表述为 ,其中 表示一个基础图元。 分别是此图元的语义标签与实例索引。对于输入的 CAD 矢量图纸,我们首先将其拆解成基础图元要素(弧线、多段线等),并将图纸转换成栅格化后的位图。图元的嵌入的获取方式是将每个图元投影到一个预训练的 CNN 网络输出的二维特征图上。基于这个这样获取的嵌入,使用一个标注你的 Vision Transformer 以及作者提出的可插拔的附加网络,模型可学习到不同的 Token 之间的关系。Transformer 层后面跟着的是 Two-Branch heads 结构,我们可以通过这个结构来优化图元级预测的精度。本文提出的模型的整体结构如下图所示

具体而言,图元 Embeding 获取的方式是将图纸的栅格化图像输入 HRNetV2-W48 这个预训练网络。此网络是一个多级多分辨率的网络,我们取不同分辨率的分支,拼成一个 的张量。对于每个几何图元,我们将其中心点投影到这个张量的第二、三个维度张成的平面上,去第一个维度的特征值构成特征向量。这样最终得到所有 token 的 Embedding 就是 ,其中 是图元的数量, 是 Embedding 的维度。

2.2 Two-Branch heads

如前文所述,Two-Branch heads 提出的目的是优化预测精度。TBH 层以 Transformer 骨干网络输出的几何 Embedding 为输入。

2.2.1 语义分割

对于聚合后的 Transformer 特征输出 ,施加一个 MLP 层,可以生成一个语义分数 。损失函数使用交叉熵

2.2.2 实例分割

CAD 图纸场景中的实例分割结果无法简单地用 BoundingBox 来表示。作者提出了一个新的方法,不是在像素图像中预测 2D BoundingBox,而是针对每个图形实体预测一个偏移向量,以便将实例实体聚集在一个公共的实例中心周围。为了更好地将实例相关的图元聚类在一起,作者使用一系列的 MLP 来编码图元的 Embedding,进而产生 个偏移向量 。针对这个偏移量的训练使用 损失函数。

其中 是一个指示变量组成的向量,只有可数构件的图元参与这个计算。在经过这个 Offset 量处理之后,可以用聚类算法对偏移后的图元中心点进行聚类。

2.3 Improve Transformer Backbone Design for Better Spotting

ViT 骨干网络以上述编码层的输出,即 Tokenization Module 的输出作为输入,执行自注意力机制,并生成送往 Two-Branch Head 网络的特征表示。

2.3.1 Self-Attension with Neighbor Awareness

典型的 ViT 的架构由多个 Transformer 层组成,每层包含一个 self-attention 模块和一个前馈网络(Feed-Forward Network) 。自注意力机制的计算方式为:

其中 分别是 query, key 和 value 矩阵, 表示样本数量和隐藏层维度。

然而,图纸中图元的数量非常多,因此全局注意力复杂度太高。为了解决这个问题,作者提出以下改进方法。

2.3.2 Self-attention with k Neighbors

让注意力机制的计算只在图元最邻近的 k 个邻居之间进行计算,这样可以限制复杂度随着图纸规模增长的速度。这里的临近关系通过计算起始点和终止点的距离来实现。

其中 表示图元 的起始点和终止点, 是目标图元, 表示其他图元。增加注意力机制计算中考虑的临近的图元数量可以增加感知的范围。作者提出的 Transformer 主干网络划分成了若干个阶段,每经过一个阶段会提提高 的值。

2.3.3 Multi-resolution Feature Fusion

我们将不同阶段得到的特征输出整合起来,令

2.3.4 Graphic Entity Position Encoding

由于图元数据天然来自于二维欧式空间,因此可以的比较容易的定义位置编码:

2.4 Random Layer Augmentation

本章节介绍的是一种数据增强策略。这个策略很简单,就是利用 CAD 图纸的图层结构信息,将图层划分为是哪个类别,分别是 Thing layer, Stuff layer 和 Background Layer。我们让这些层内随机挑选出的若干层组成新的图纸。

读论文: 基于图卷积网络实现的三维室内场景构建

这次阅读的论文是 SceneHGN: Hierarchical Graph Networks for 3D Indoor Scene Generation with Fine-Grained Geometry,这是今年(2023)年发表在 IEEE Transactions on Pattern Analysis and Machine Intelligence 期刊上的文章,作者来自中科院。

作者在这篇文章里面提出 SceneHGH 网络来解决三维室内场景生成的问题。这个模型统筹考虑了房间的空间立体关系与每个待放置物体的形态细节。因此这个模型可以以细致的结合细节生成房间布局。为了让学习过程更加可控,作者引入了功能区 (Function Regions) 这一中间概念来串联起房间与待放置实体。为了确保模型的合理性(Plausibility),作者使用的基于图的表示形式同时包含了链接不同层级的父子节点的垂直边与连接同级别子节点的水平边。

作者使用的生成网络是一个基于可变自动编码器 (variational autoencoder, VAE) 条件式递归神经网络 (conditional recursive neural network, RvNN)。在给定放假你的边界条件的情况下,此网络可以生成具有良好几何表达形式的房间排布。

1 Introduction

在此章节中的行业背景我们暂且不表,主要关注其场景构建与假设条件。

现有的针对三维室内场景的排布工作往往是部分的,例如大部分工作着眼于生成家具的排布,但是并未包含家具的几何结构细节,或者只能从有限的现有家具几何形状中有选择性地布置。但是家具布局和家具的几何形态二者在排布问题上是存在关联的,将这二者拆解成独立的两个步骤可能导致形成一些次优结构。本文提出的架构是一个端到端的架构,可以将布局与几何结构统筹起来考虑。

当然,这种统筹方法会存在很多挑战。一个房间内的各个要素构成了一个天然的垂直层级结构:房间内包含多个家具对象,每个家具对象也可以由多个灵活子组件构成。房间内的对象数量可能很多(3D FRONT 数据集中的一个房间最多可以包含 188 个对象),这使得学习会比较困难。考虑到在大型房间中,部分对象之间内部会存在一定的关联(例如若干个椅子围绕着一个桌子摆放),作者引入了 Function Regions 的概念,如用餐区,沙发区等。功能区概念作为一个中间层在房间与具体的对象之间,作为一个衔接桥梁。

在生成一个室内场景时,房间的形状会预先给定,作者将房间形状拆解为单元格,这个单元格的编码被视为是房间生成过程的一个输入条件。为了确保模型的合理性,需要利用对象之间的丰富关系信息。这些关系包括垂直关系:功能区必须位于房间边界内,对象必须要在功能区内部;以及水平关系:对象的对称性,邻接关系,对象内的组件之间的对称性等。因此,作者提出的分层图网络是一个基于 VAE 的 RvNN 网络,此网络具有 4 层,分别是房间、功能区、对象以及对象组件。在图中,作者精心设计了节点之间的边来体现约束关系。训练如此大的网络也是富有挑战性的,作者提出了一种多阶段训练策略来保证续联的稳定性和有效性。

作者结合了多个开源数据集,包括 3D-FRONT,PartNet 等。

2 Related Works

暂略

3 Overview

3.1 分层图表示

作者提出将三维室内场景表示为一个分层树结构,分为房间、功能区、对象以及对象组件四个层次。

室内场景中的三维对象由多个组件组成,作者将对象组织为其组件的 n-ary 分层树结构,此结构中包含了各个组件的几何表示及其连接关系。每个对象的编码会包含其组件的结构信息,及其布局信息。

功能区划分的示例

在整个场景结构树中,作者同时编码了不同层级之间的对象的丰富关系。除了天然了父子垂直关系之外,同一层的节点之间也有水平关系(可以是多对多关系,这种关系表示为图中的 hyper-edge constraints)。

3.2 分层图网络

作者提出的网络架构包括一个房屋布局编码器(room layout encoder),一个场景层次结构编码器(scene hierachy encoder)以及一个场景层次结构解码器(scene heirachy decoder)。其中房间布局编码器以房间边界的分解梯度表示(deformation gradients of the floor boundary)作为输入条件,并提取处一个向量。此向量被用于解码器的输入条件。场景分层编码器完成了从房间级别逐级向下到功能区级别,对象级别并最终到对象组件几何级别,逐层地、递归地将房间多层体系映射到的通用隐藏空间(类似神经网络的隐藏层?)中(这句话很难翻译,原文是 The scene hierarchy encoder maps the indoor scene hierarchies from the room level to the functional region level, the object level, and finally down to the object part geometry level into a common space hierarchically and recursively),解码器的作用正好相反。

在编码过程中,家具级别的对象首先用一个预训练的 DSG-Net 编码、然后结合对象的特征及其在区域中的位置信息,功能域级别的特征被提取出来。最终,房间级别的特征政和路所有区域级别的信息。解码操作的过程为编码的逆操作。在编解码器的训练过程中,若干图消息传递操作被用来提取对象之间的关联与约束关系。下图展示了在场景生成过程中不同要对象之间的二元关系以及多对象之间的关系(hyper-edge)。

4 分层图表示(Hierarchical Graph Representation)

4.1 分层节点拆解

考虑一个三维室内场景,作者提出如下的分层结构,共分为四层,分别是房间层级、功能区域层级、家具层级以及对象组件几何层级。其中对象层级与对象组件几何层级在 PartNet 中有已经引入,而功能区层级为本文的创新点。每个层级的节点定义如下:

区域:根据家具对象的功能作用,功能区将整个室内场景的对象划分成若干个组,这样可以提高一致性,并更有利于学习过程。不同类型的房间通常有多重不同类型的功能区域。显式地构建这些区域的语义概念不仅为场景生产结果提供了许多有意义的语义标签,同时有利于更好地组织每个房间中的大量对象。另外,由于 RvNNs 模型的能力限制(capacity limit),作者也无法将同一个房间内的大量节点直接作为单一房间对象的子节点。

在实现过程中,作者使用 DBSCAN 空间聚类方法将每个场景划分成若干个更小的功能区域。DBSCAN 算法是一种基于密度的无参数聚类算法,分蔟的数量是自适应的,不需要预先指定。通过 DBSCAN 算法啊,所有的对象可以根据其空间临近性质进行分组,这种空间临近的性质,通常与其功能性相关。每个功能区的功能定义由其中面积最大的对象决定。对于一些的显然不合理的划分,作者会提出算法进行人为修正。

总结来看,对一个三维场景 ,有 ,其中 表示第 个分蔟(功能区域), 意味着功能区域之间的水平连接。

对象:在我们将室内空间划分为多个功能区域之后,每个功能区域内会包含多个家具对象。每个对象的形状 由一个 Mesh 几何对象描述,描述信息还包括其语义类别,以及空间位置信息。我们给出正式定义: ,其中 表示功能区中的第 个对象, 表示对象之间的水平关系。

对象组件:作者是会用 PartNet 形状分层结构来讲每个三维几何形状划分成具有与含义的组件树,将其组织为一个 n-ary 分层树结构,改结构的不同层表示了不同精细度的拆解结构。具体而言,每个对象 被拆解为若干个部分 ,这些部分由分层结构 组织起来,不同的部分之间存在二元或者 n-ary 关系 。每个组成部分 具有一个预定义的语义标签和一个 Mesh 形式的几何表示 。组件之间的关系集合遵循了 StructNet 中的做法。

4.2 Edge Relationships

在一个场景分层结构中,我们考虑两类节点关系,分别是:

  1. 父子节点之间的垂直关系;
  2. 同级别节点直接的水平关系;

相比于之前的工作,本文在二元关系的基础上引入多元关系。这种超关系(hyper edge)可以让我们生成的室内场景更加真实合理。

一个非常类似的工作是 GRAINS。在这个工作中,作者用三个关系来描述对象和墙体之间的关系,分别是 supporting, surrounding 以及 co-occurence。不同于 GEAINS,我们在这里采用了更加精确的关系描述,包括二元关系: adjancency (),translational symmetry (), reflective symmetry (), rotational symmetry (), 以及多元关系 parallel collinearity . n-fold rotational symmetry ()。

4.2.1 垂直关系

垂直关系描述了父子节点知己的关系,包括:

  • 房间跟节点与功能区域之间的关系;
  • 每个功能区域包含多个家具对象;
  • 每个家具对象由多个组件组成;

此外,我们还额外引入了两个垂直关系:直接将房间跟节点和对象层连接起来:

  • : 一个对象的倾转 bbox 需要与房间的边界对齐 (the oriented bounding box of an object may have to align with the room boundary in some scenes.);
  • :每个生成的对象需要位于房间边界内部;

这种跨层垂直边可以提高生成结果的合理性。

4.2.2 二元水平关系

水平关系发生在同级别的对象之间,用来描述具有同一个父节点的兄弟节点之间丰富关系与约束。基于形状生成领域的已有工作启发,我们定义了四种二元关系:adjancency (),translational symmetry (), reflective symmetry (), rotational symmetry ()。对于邻接关系,我们定义两个组件邻接,如果他们的最小间距低于 ,其中 为两个组件的外接圆的平均半径。对于对称关系,作者遵循一个已有工作来定义 。这些二元边于训练输入时在对象层级自动完成。注意两个节点之间可能存在多个二元关系。、

4.2.3 N-ary hyper-edges

二元关系还不足以充分描述复杂对象布局。例如在下图右侧,除了考虑的对象之间两两关系,最好能够考虑四把椅子环绕桌子布置的的多元关系。又如下图中右图,两个床头柜和床的方向线之间应该保持平行。

本文中我们引入两种多元关系:

  1. n 重旋转对称
  2. 平行关系:

多元关系发生一个功能区内的对象层层级。如果我们在任意两个对象之间构建二元关系(用以替代多元关系描述),这会形成一个致密网络,这对训练过程不利。

N 重旋转对称;考虑 个对象 ,如果满足下面的关系则称他们构成 N 重旋转对称关系:

其中 表示两个对象之间的 Chamfer 距离 表示旋转矩阵。 为旋转中心点, 为旋转角度。 为一个常量阈值。

平行共线性 考虑 个对象 ,如果他们满足下面的套件则称他们满足平行共线关系:

  • 所有对象的二维倾转 bbox 的主轴方向彼此平行(在二维面内);
  • 满足下列等式:

其中 为任意向量,而 为任意非负实数, 的倾转 bbox 的中心点 为以常量阈值。

5 分层图网络

如前文所属,本文中采用的网络是基于 VAE 的 RvNN 网络。SceneHGN 网络采用场景分层树 (从房间层级到对象组件层级) 作为输入,房间的边界 作为额外的输入条件。 需要通过一个编码器 映射到特征向量的 也经过一个编码器 映射到一个隐藏向量 。然后这两个向量被拼接起来,送入解码器 来重建 。为了训练 VAE 生成模型,我们使用 KL 散度增加了一个正则量,将所有场景的隐藏层空间映射到一个标注你的高斯分布。

由于我们是从 DSG-Net 中获取对象组件层级,因此编码器 $Enc_{PG} 和解码器 遵循了 DSG-Net。 利用组件的几何信息 ,其中 为对象 的每个组件的 deformation gradients 表示形式, 为其中心点,以及结构信息 ,将其映射到一个隐藏的特征空间 。解码器的作用阈值相反,它将特征向量映射回来

5.1 Room Boundary Layout VAE

FloorNet 的结构如下图所示。任意一个闭合的房间轮廓可以使用一个 deformed 2D unit square boundary 来表示。在本文中,一个单元方形边界由 596 个顶点和 596 个边组成。

Floor VAE。为了显示方便,图中的房间轮廓包含了 8 个点和 8 个边

为了高效地、精确地编码房间边界,尤其是变现处管教,我们使用了 2D non-rigid registration 技术,而非顶点坐标体系来表示一个 2D mesh。然后我们在这个 registered 2D mesh 上计算 ACAP deformation graidents。对于每个定点,我们最终得到 6 维特征 以及三维特征 (分别表示了缩放、剪切以及旋转)。

这段话有点东西啊,得找相关文献看看。

然后 矩阵被送入 FloorNet 编码器。FloorNet 的关键组件是一个图卷积网络。我们将整个 registered floor boundary 视为一个环装图,并在此基础上进行卷积操作来提取 2D mesh 的特征。在两轮卷积操作后,特征会通过一个 MLP 并输出一个隐藏层向量。我们执行两轮迭代,来将信息传递的给临近顶点,从而学习到邻接边的夹角(前面提到的着重学习拐角信息)。解码器的结构与编码器的相反。

5.2 Scene Hierachy Encoder

这个编码器包含两个部分,分别是一个递归编码器 ,实现从组件层到对象层的编码,以及 实现从对象层到整个房间层的编码。作者完全遵循了 DSG-Net 的结构来实现 ,本章节剩下的部分主要着介绍 这个编码器。

每个对象节点存储了三类信息,分别是:其结构和几何信息 ,这个信息通过 编码器提取;放置参数 $ 以及语义分类标签 。放置参数 包括了中心位置 ,缩放系数 ,以方向参数 (以 z 轴为旋转轴。对象特征编码器 将上述信息编码为特征向量

其中 是一个全连接网络,而 表示串联操作符。

对于非对象的节点 ,使用一个递归编码器 来提取其所有子节点的特征,并沿着节点之间的关系边来传递消息。对于表示多元关系的边,我们首先只将关系的类型的集成到对应节点的特征中,这个过程使用了一个 MLP 。这个 MLP 由两个全连接层和一个 Leaky ReLu 激活函数组成。然后我们在子图中执行两个消息传递操作来讲所有子节点的特征集中起来,这个过程通过一个以 Leaky ReLu 为激活函数的全连接层实现。最终得到的特征向量

其中 表示 的子节点。 为对象的语义标签, 为多元关系边的语义标签。

整个 不断重复直到得到根节点的特征。最终根节点的特征同一个全连接层映射到特征向量所处的隐藏空间。我们用 KL 散度加入一个正则量,使得的特征向量符合高斯分布。

5.3 Scene Hierachy Decoder

解码器以编码器输出的特征向量为输入,以空间边界特征为条件(condition),以递归的方式还原整个场景层级结构,解码器同样包含两个部分,分别是的递归式解码器 ,负责从对象特征描述中还原组件的几何结构,以及递归式解码器 ,负责接受根节点特征 以及条件输入 。对于对象解码, 解码器遵循了 DSG-Net 的设计,本章节主要介绍 .

如前文描述, 以房间节点未输入,并推断出其子节点,即功能区的特征,并递归式地解析处对象层级的特征信息。对于每一个解码步骤,我们假设每个父节点最多只有 10 个子节点,并且通过一个二分类网络(通过一个以 Sigmoid 为激活函数的 MLP 来实现)来预测节点存在的概率。同时我们也会预测出子节点的语义类型。对于对象节点,我们训练一个 MLP 来预测放置参数、分类语义标签以及对象特征,特征数据会被输入 来获取组件形态。放置参数估计网络由两个全连接网络,一个 Leaky ReLu 激活函数和一个 skip-link 组成。网络通过三个不同的全连接层来估计 , 。接下来我们通过节点的几何数据与特征来预测已有节点之间的关系。这些关系类型会与真值比较从而在训练阶段指导模型的超参数优化。

对于二元关系边的预测,我们对于任意两两节点组合,结合其特征判断每种边的存在概率。对于多元关系,我们通过注意力机制来预测一个 mask, 来表示哪些节点共享了一个多元边属性。利用节点之间的边连接关系,我们执行两轮消息传递过程来更新节点特征。最终得到的节点特征为:,其中 表示每个父节点 的子节点。综上,我们有

其中 ,其中 是子图中节点的数量, 是 hyper-edge 类型的数量。对于每一行,它预测了不同类型的 hyper-edge 出现的概率,最终推断的多元关系类型以 argmax 的操作给出。根据我们的定义,每个对象应该最多只有一个 hyper-edge。

5.4 Training and Losses

5.4.1 训练策略

根据之前的描述可以看出我么内购我们构架你的模型是一个由多个独立网络组成复杂体系,这个体系要想一次性训练到位是比较困难的。因此我们将训练分成两个阶段。首先我们训练从对象到组件级别的递归网络,然后训练整个网络。对于空间边界 VAE,我们在骨干网络之外单独对其进行训练。

5.4.2 损失函数

总损失函数如下:

其中 是整个数据集中的场景分布。重建损失 包括 eaf loss,sematic loss, edges/node existence loss, geometry loss, placement loss 以及部分 edge losses. 这里除了 placement loss, room-object edges 以及本文提出的 hyper-edge loss 之外,其他的损失定义都参照了 StructureNet。对于结构性损失,StructNet 中使用这一损失来确保生成的结构对象的合理性与真实性。不过在本文中,我们只对对象内的层级结构施加这一损失,而非整个场景层级。正则项 只在使得隐藏空间更加平滑,并有利于下游网络(生成与插值网络)的运作。在本文中我们设置常量 ,这是一个经验数值。

下面我们给出 Placement losses 和 edge losses:

Placement Parameter Reconstrucion Loss: 对于中心点和缩放系数我们采用 L2 Loss 来计算其损失。对于朝向角度来说,我么你发现在真实室内场景中,大多数情况下家具的朝向角度来自有限的几个值,一般是 ,因此我们选择用离散的值来预测家具的大致朝向,并生成一个残差偏移量来得拟合真值。因此 ,其中 为是一个估计向量,每个元素表示家具朝向指定方向的概率, 为预测出来的残差偏移量, 为真值。

Room-object Bindary Edge Loss:这个损失的主要目的是将预测出来的对象与房间的边界墙体之间对齐。在输入的室内场景数据中,房间边界和墙体基本对齐的。因此我们也鼓励对象的倾转 bbox 同水平面上的两个轴对齐。这一限制值对具有相关属性(即有 room-objects 边)的对象起作用。我们增加一个损失梁来估计对象的 box 和放假你的 box 沿着房间边界方向的距离,,其中 是所有预测出来的对象的集合。

为 Chamfer 距离。 为一个单元立方体的六个面的单位长度法向量, 为一个变换矩阵,将法向量旋转到的与对象的朝向 对齐。

Hyper-edge Loss:这个损失项的加入鼓励对象之间保留多元关系。本文引入了两种多元你关系。

对于满足 n 重旋转对称关系的 对象,我们可以定义损失函数:

其中 为所有对象的中心, 表示以竖直方向为轴以 为中心点,以 为角度的选转矩阵。注意由于在解码器作用之后对象之间不再保持旋转顺序,因此我们这里要尝试所有的顺序组合得到 Chamfer 距离的最小值。

对于共线平行关系(collinearly parallel hyper-edges),我们定义两个损失函数,第一个是:

这是对方向一致性的评估。第二个损失函数是:

其中 的倾转 bbox 的中点, 是所有相关对象的中点组成的点集的中点, 所有相关对象的平均相对位置。 表示将向量长度单元化。在计算 时,我们将对象中点的在水平面上的横纵坐标按照升序排序,从而避免相反向量被抵消。最终的损失函数是:

6 Experiments and applications

6.1 Scene Generation

前文训练的是一个面向室内场景的通用编解码系统,其隐藏层的特征向量,可以用于大量后续应用。三维场景生成就是一个典型的应用。这里提出的网络架构可以用于自由场景生成,但是在显示中,大部分的生成任务都有额外的限制条件输入(例如房间轮廓)。

论文的后续内容是结果对比和展示,不再整理。

❌