跳转至

Unified Vector Floorplan Generation via Markup Representation

会议: CVPR 2026
arXiv: 2604.04859
代码: https://mapooon.github.io/FMLPage
领域: 图像生成
关键词: 户型图生成、标记语言、自回归序列模型、约束解码、向量化表示

一句话总结

本文提出 Floorplan Markup Language (FML) 标记语言,将房间、门等户型元素编码为结构化 token 序列,用一个 LLaMA 风格的 Transformer 模型(FMLM)统一解决无条件/边界条件/图条件/补全等多种户型图生成任务,FID 指标比 HouseDiffusion 低 80%+。

研究背景与动机

  1. 领域现状:户型图自动生成是建筑设计和房地产行业的核心需求。现有方法按条件类型分治——边界条件用 Graph2Plan,邻接图条件用 HouseGAN++/HouseDiffusion,但每种任务需要专用模型。
  2. 现有痛点:(1) 不同生成任务用不同架构,无法统一;(2) 基于扩散模型的方法(GSDiff)生成的是栅格图,后处理转换为矢量格式会引入误差;(3) GAN 方法容易模式崩溃且生成多样性受限。
  3. 核心矛盾:户型图本质是结构化的矢量数据(房间多边形+门的位置+连接关系),但现有方法要么在像素空间工作(丢失结构信息),要么需要针对性的图神经网络。
  4. 本文目标:设计一种统一表示,将所有户型图生成任务转化为同一种序列预测问题。
  5. 切入角度:受 NLP 中标记语言(HTML/XML)的启发——用语法规则定义的 token 序列天然适合表示结构化信息,且可以直接用自回归 Transformer 建模。
  6. 核心 idea:定义 FML 语法将户型图编码为"标签+坐标+索引+类型"的 token 序列,用约束解码保证生成结果的语法合法性。

方法详解

整体框架

这篇论文要解决的核心难题是:户型图本质上是结构化的矢量数据(房间多边形、门的位置、房间之间的连接),但现有方法要么针对每种条件单独造一个架构,要么在像素空间里画完再后处理转矢量、白白丢掉结构信息。作者的做法是把户型图当成一段"标记文档"来写——像 HTML 用标签描述网页那样,定义一套 Floorplan Markup Language(FML)语法把整张户型图压成一条线性 token 序列。这样无论是无条件生成、给定边界、给定邻接图还是补全,都变成同一个问题:让一个自回归 Transformer 续写这条序列。

整条流水线是:可选的输入条件(边界点序列 / 邻接图 / 部分户型)先被编码成 FML 的条件段,拼到序列开头;FMLM 模型从这里出发逐 token 续写出房间和门;续写过程中用约束解码挡掉所有不合语法的 token;最后把生成好的 FML 解析回矢量户型图。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["输入条件(可选)<br/>边界点序列 / 邻接图 / 部分户型"] --> B["Floorplan Markup Language<br/>编码成 FML 条件段"]
    B --> C["FMLM 自回归续写<br/>逐 token 生成房间与门"]
    C -->|每步候选 token| D["约束解码<br/>mask 掉违反语法的 token"]
    D -->|只保留合法 token| C
    C --> E["完整 FML 序列"]
    E --> F["解析回矢量户型图"]

关键设计

1. Floorplan Markup Language:把户型图写成一段可解析的标记序列

针对"不同任务各用一套架构、栅格方法还得后处理转矢量"的痛点,FML 用一套语法把一张图的所有元素摊平成四类 token:标签(如 <room><door>)、坐标、房间索引、房间类型。坐标用 1D 编码 \(z = x + y \times W\)\(W=256\))把二维网格点压成一个整数,避开了直接预测二维坐标时词表又大又稀疏的问题。整条序列遵循固定文法 <sequence> → <condition> → <floorplan> → rooms → doors → front_door → </sequence>,于是一张户型图读起来就像 <room> 类型 索引 顶点坐标… <door> 两个端点 所属房间… 这样一段有头有尾的文档,标签 token 本身就给模型提供了"现在该写什么"的结构监督。一个看似不起眼但很关键的细节是房间的排列顺序:作者让房间按索引降序排列,消融显示这一改动把 FID 从升序的 94.57 拉到 25.50,因为降序让大房间(通常索引大)先落子、给后续小房间提供更稳定的空间参照。

2. FMLM:用一个统一输出头让模型自己决定下一个该写哪类 token

序列定义好之后,建模就交给一个 LLaMA-3 风格的 Transformer——24 层、512 维隐藏状态、32 个注意力头。四类 token 的嵌入方式按性质区分:坐标 token 用正弦位置编码加一个可学习投影(保留数值的连续性),标签、索引、类型这类离散符号则各用一张可学习嵌入表。关键在输出端只挂一个统一的线性头 \(W \in \mathbb{R}^{(C_{tag}+C_{coord}+C_{index}+C_{type}) \times C}\),把四类 token 的词表拼在一起一次性预测。这样模型不需要外部状态机来切换"现在该出标签还是该出坐标",而是从数据里自己学会在 <room> 之后该接坐标、坐标写够了该收尾——解码逻辑因此始终是同一套自回归续写。

3. 约束解码:推理时直接 mask 掉违反语法的 token,零开销保证 100% 合法

自回归模型续写时完全可能写出语法非法的序列,比如给一扇门写了 3 个顶点、或让房间多边形和已落子的房间重叠。约束解码把 FML 的硬性规则编码进解码步骤:门必须恰好 2 个顶点、房间多边形不能与已有房间重叠、门必须落在某个房间的边界上——凡是会破坏这些规则的候选 token,在 softmax 之后直接把概率 mask 成零。它的好处是几乎不增加计算(只是逐步过滤候选),却把"输出一定能解析成合法户型图"从概率事件变成了确定性保证;相比 HouseDiffusion 那类先生成再后处理修正的做法,这种"边生成边约束"更可靠,也不会在事后修补时引入新误差。

损失函数 / 训练策略

训练目标是在 FML 序列的非结构标签 token 上做标准交叉熵。一个重要的训练技巧是房间排列增强:每次随机打乱房间的书写顺序,逼模型学到对房间排列的等变性,而不是死记某种固定的房间出现次序。消融显示这一项的分量很重——去掉排列增强后 FID 从 14.17 涨到 24.36(+72%)。

实验关键数据

主实验

任务 方法 FID↓ GED↓ IoU↑
无条件 GSDiff 15.02 - -
无条件 FMLM 7.22 - -
边界条件 Graph2Plan 34.20 - 95.87%
边界条件 FMLM 6.51 - 97.86%
图条件(ALL) HouseGAN++ 48.44 2.57 -
图条件(ALL) HouseDiffusion 29.31 1.55 -
图条件(ALL) FMLM 3.41 1.21 -
边界+图(ALL) Graph2Plan 22.87 3.43 92.96%
边界+图(ALL) FMLM 14.17 1.24 97.59%

消融实验

配置 FID↓ GED↓ IoU↑ 说明
Full + 排列增强 14.17 1.24 97.59% 完整模型
w/o 排列增强 24.36 2.35 95.82% FID 涨 72%
升序索引 94.57 - - FID 极差
降序索引 25.50 - - 降序远优于升序

关键发现

  • 房间排列增强是性能的关键——去掉后 FID 从 14.17 涨到 24.36(+72%),说明模型需要学习排列等变性才能有效泛化
  • FMLM 在所有条件设定下都大幅超越 GAN 和扩散模型方法
  • 约束解码保证了 100% 语法合法的生成结果,而 HouseDiffusion 等方法的后处理步骤无法保证这一点
  • 8 房间场景性能略有下降(FID 从 3.41 升至 4.64),因为训练样本较少

亮点与洞察

  • 标记语言表示的精妙:通过定义语法规则将结构化生成问题优雅转化为序列预测,这种思路可迁移到其他结构化生成任务(如电路版图、分子结构)
  • 约束解码的零开销保证:在推理时通过 mask 非法 token 实现硬约束,不增加计算成本但消除了所有非法输出——这比后处理修正更可靠
  • 统一多任务:同一个模型同时处理无条件/边界/图/补全四种任务,消除了之前"每个任务一个模型"的冗余

局限与展望

  • 仅支持单层户型图,多层建筑需要扩展 FML 语法
  • 8 房间以上场景训练数据不足,效果下降
  • 坐标量化到 256×256 网格可能丢失精度,更高分辨率会增加词表大小
  • 与 LLM 结合(用自然语言描述需求→生成户型)是有前景的方向

相关工作与启发

  • vs HouseDiffusion: 扩散方法在连续空间建模,需要后处理矢量化,而 FMLM 直接在离散 token 空间生成矢量结果,更精确
  • vs Graph2Plan: 需要 GNN 编码邻接图为条件,架构复杂。FMLM 将邻接关系直接序列化为 FML 条件段,不需要额外编码器
  • vs GSDiff: 栅格化扩散方法 FID 15.02,FMLM 7.22,差距主要来自矢量表示的结构先验

评分

  • 新颖性: ⭐⭐⭐⭐ 标记语言表示是新颖的视角,但自回归生成本身不算新
  • 实验充分度: ⭐⭐⭐⭐⭐ 四种条件设定全面对比+消融+多房间数量分析
  • 写作质量: ⭐⭐⭐⭐ 清晰流畅,FML 语法定义严谨
  • 价值: ⭐⭐⭐⭐ 对建筑设计领域有直接应用价值,标记语言思路有可迁移性