跳转至

Generating 3D House Wireframes with Semantics

会议: ECCV 2024
arXiv: 2407.12267
代码:
领域: 图像生成 / 3D 生成
关键词: 3D 线框生成, 自回归模型, 语义分组, 残差量化, Transformer

一句话总结

提出基于自回归模型的 3D 房屋线框生成方法,采用统一的线段(wire)表示替代传统的顶点-边分离建模,通过语义感知的 BFS 序列排列和两阶段 coarse-to-fine Transformer 解码器生成语义丰富的线框结构,可自动分割为墙壁、屋顶、房间等语义组件。

研究背景与动机

问题引入

3D 线框是计算机视觉和图形学中的重要数据结构,通过点和线的组合提供物体形状的简洁抽象,尤其适合表示多面体(如建筑、家具、机械零件)。然而自动生成 3D 线框仍是一个复杂而艰难的过程,需要将物体几何精确抽象为线段序列。

现有方法的不足

线框重建方法(从图像/点云):只能从输入数据重建,不具备生成新线框的能力

PolyGen / SolidGen 等自回归方法:将不同类型的图元(顶点、边、面)作为独立序列分别建模 - 顶点生成的错误会传播到后续的边和面生成(错误累积) - 基于坐标排序的序列缺乏图元间的高级语义关联

MeshGPT:学习三角面片的量化嵌入生成网格,但同样忽略了语义关系

2D 平面图生成方法(HouseGAN、HouseDiffusion 等):仅生成 2D 布局,转为 3D 需要额外后处理

核心洞察

统一的线段表示 + 语义序列排列:将线框视为图结构(线段为节点,连接关系为边),通过 BFS 遍历将同一语义组件(如外墙、屋顶、房间)的线段聚集在一起生成,既减少了图元间的错误传播,又赋予了生成结果天然的语义可分割性。

方法详解

整体框架

两阶段框架:

  1. 阶段一:学习几何词表(量化线段嵌入)

    • 图卷积编码器 \(E_G\):捕获每条线段的局部拓扑特征
    • 注意力信息交换器 \(E_A\):跨断开子图进行全局信息交换
    • 残差无查表量化(Residual LFQ):将线段特征量化为几何 codebook 中的离散 token
  2. 阶段二:自回归线框生成

    • Coarse Transformer:预测线段级别的嵌入序列
    • Fine Transformer:将每个线段嵌入细化为顶点级别嵌入
    • 解码为 3D 坐标构建最终线框

关键设计

1. 线段特征表示与编码

每条线段 \(l_i \in \mathbb{R}^{n_{\text{in}}}\) 的特征包括:端点坐标、线段长度、方向、与相邻线段的夹角、中点坐标。所有特征量化到 \([0, 128)\) 整数并嵌入为 196 维向量。

图卷积编码器 \(E_G\):使用 SAGEConv 层将线段(作为图节点)投影到 384 维隐空间,捕获局部几何特征。由于线框可能包含断开子图,仅靠图卷积不足以交换全局信息。

注意力信息交换器 \(E_A\):Local Multi-Head Attention (LMH Attention) 层,允许跨断开子图的全局信息交换,使特征既具备拓扑信息又上下文丰富。

2. 残差无查表量化(Residual LFQ)

将线段特征分配到端点后,使用 Residual Quantization (RQ) 以深度 \(D=2\) 量化每个顶点特征,每条线段由 \(2 \times D = 4\) 个嵌入表示。Codebook 大小 8192,每个嵌入维度为 \(\log_2 8192 = 13\)

关键优势:LFQ 将特征视为单维变量的笛卡尔积进行量化,无需传统的 codebook 查找步骤,显著降低计算复杂度。使用交叉熵损失 + commitment loss + 熵惩罚训练。

3. 语义感知序列构建

关键创新:不同于 PolyGen/MeshGPT 基于坐标排序,本文基于语义关系排列线段序列: - 先按 z-y-x 层级排序线框节点 - 将线框视为图结构(线段=节点,交点=边) - 对每个断开子图进行 BFS 遍历,确保同一物体组件(墙壁/屋顶/房间)的线段连续生成

4. Coarse-to-Fine Transformer 解码

  • Coarse Transformer:将顶点 code 序列 \(C_v\)(长度 \(2 \cdot D \cdot N\))重塑并合并为线段 code 序列 \(C_l\)(长度 \(N\)),自回归预测线段嵌入
  • Fine Transformer:基于每个预测的线段嵌入,沿深度维度预测顶点嵌入
  • 12+2 层 decoder-only 架构,学习三种编码:离散位置编码、顶点位置编码、量化层级编码

损失函数

  • 阶段一:3D 坐标的交叉熵损失 + commitment loss + 熵惩罚(提升 codebook 利用率)
  • 阶段二:codebook 索引的交叉熵损失

实验关键数据

主实验

数据集:从 RPLAN 提取房屋布局 + straight skeleton 构建屋顶 → ~78,000 个 3D 线框(选取 <400 线段的子集训练)。

无条件线框生成(3D 房屋数据集)

模型 COV(CD)↑ COV(EMD)↑ MMD(CD)↓ MMD(EMD)↓ 1-NN(CD) 1-NN(EMD) 2L-CVP↑ 3L-CVP↑ KLD↓
PolyGen 38.67 47.95 8.67 6.43 74.43 67.65 81.47 75.80 12.75
MeshGPT 54.78 54.29 9.13 6.27 64.61 61.70 80.91 70.77 8.98
Ours 56.15 58.64 8.11 5.75 55.21 51.35 99.53 99.26 0.73

用户研究(60 人,24 组对比)

对比 PolyGen MeshGPT Ours Ground Truth
Ours 评分 0.84 0.75 -0.13
选择率 92% 87%

ABC 数据集泛化测试

模型 COV↑ MMD↓ 1-NN↓
PolyGen 39.94 25.53 75.87
MeshGPT 42.38 24.62 67.65
Ours 44.10 22.12 62.96

消融实验

设计选择消融(3D 房屋数据集,CD-based)

配置 COV↑ MMD↓ 1-NN 2L-CVP↑ 3L-CVP↑
w/o Encoder LMH Attention 49.07 10.98 68.72 64.97 59.20
w/o Residual LFQ 50.02 9.24 69.87 69.17 63.47
w/o Coarse-to-Fine 52.56 9.08 66.20 73.97 68.77
w/o Semantic Order 51.33 9.07 67.27 72.42 67.69
完整模型 56.15 8.11 55.21 99.53 99.26

关键发现

  1. 结构有效性指标差异巨大:完整模型的 2L-CVP/3L-CVP 高达 99.53%/99.26%,而去除任何组件后骤降至 60-75%,说明每个设计对保持线框连通性至关重要
  2. LMH Attention 影响最大:去除后 COV 从 56.15→49.07,且出现交叉线段,因为失去了跨断开子图的空间关系编码
  3. 语义排序 vs 坐标排序:使用语义 BFS 排序比 z-y-x 坐标排序在 COV (+4.82) 和结构有效性 (+27pp) 上均有显著提升
  4. KLD 差距显著:完整模型 KLD=0.73,MeshGPT 8.98,PolyGen 12.75,说明生成线框的连通分量分布最接近真实数据
  5. 新颖性分析:生成的 4096 个线框覆盖了训练集的相似样本,同时在 CD 增大时展现结构差异,证明模型能生成新颖线框

亮点与洞察

  • 统一线段表示避免了顶点→边→面的级联错误传播,这是优于 PolyGen/MeshGPT 的根本原因
  • 语义 BFS 排序是极其巧妙的设计——利用图结构的拓扑连通性隐式编码语义信息,无需额外的语义标签
  • 生成结果天然可分割为墙壁/屋顶/房间等组件,直接可用于下游 CAD 应用
  • 支持条件生成(文本通过交叉注意力引入)和线框补全(部分线框的多种可能补全)
  • Residual LFQ 消除 codebook 查找开销,使大词表训练变得可行

局限性

  • 仅限于房屋等多面体结构,曲面物体不适用于线框表示
  • 训练集限制为 <400 线段的线框,更复杂建筑需要扩展上下文窗口
  • 文本条件生成的效果未深入定量评估
  • 地面真值的构建依赖 straight skeleton 算法,引入了特定风格偏置
  • 训练资源需求不低:8× RTX 3090,编码器-解码器约 2 天 + Transformer 约 5 天

评分

  • 新颖性: ⭐⭐⭐⭐⭐ — 首个语义感知的 3D 线框生成方法,统一线段表示+BFS 语义排序非常新颖
  • 实验充分度: ⭐⭐⭐⭐ — 定量/定性/用户研究/消融/新颖性分析全面覆盖
  • 写作质量: ⭐⭐⭐⭐ — 方法阐述清晰,图示直观易懂
  • 价值: ⭐⭐⭐⭐ — 为 3D 线框生成开辟了新方向,结构有效性指标碾压式领先

相关论文