Learn2Fold: Structured Origami Generation with World Model Planning¶
会议: ECCV 2026
论文: ECCV 官方页
领域: LLM Agent
关键词: 折纸生成, 程序归纳, 世界模型, 模型预测控制, 约束感知生成
一句话总结¶
把折纸折叠序列生成建模成折痕图(crease pattern, CP)上的条件程序归纳:LLM 依据文本目标提出结构化折叠动作,学到的图结构世界模型在执行前用短程 rollout 预测残差状态与逐边违规概率,再由确定性 Level-0 约束内核做硬核验,用 MPC 前瞻搜索选出可执行序列,在 25 类折纸基准上把步级 F1 从最强基线的 0.266 提到 0.739、类别成功率(macro)从 0.675 提到 0.891。
研究背景与动机¶
生成式 AI 这几年在图像、视频、3D 资产上的合成能力有目共睹,但这些成功大多停留在静态或感知层面的表示上——输出的东西"看起来对"就行,物理上能不能真的执行、执行时会不会违反约束,要么被忽略,要么只是很弱地约束一下。把生成模型从"视觉上说得通"推进到"物理上可执行的过程",仍然是个开放问题,而在需要长程推理 + 严格几何/拓扑约束的任务上尤其尖锐。布料折叠这类可变形物体操作看起来接近,其实占了大便宜:布料是柔顺的、有冗余自由度,局部折歪了靠平滑和形变还能救回来,学习型方法因此容错很高。折纸完全不是这个 regime。折纸由严格的几何公理与拓扑约束支配,一张纸的折叠序列里错一条折痕,不只是留下一个局部瑕疵,而可能直接破坏面拓扑,让后续所有折叠在数学上不可行——离散的拓扑变更与连续的几何运动必须长程精确配合,几乎没有出错余地。
已有的两条技术路线恰好各缺一半。优化式方法(TreeMaker、Origamizer 这类圆填充 / 塞折算法)把生成写成带约束的优化问题,能数学保证某个目标网格可以从单张纸折出来,产出仿真就绪的、物理上有依据的折痕图;但它们要求输入是精确的 3D 网格,面对一张图或一句自然语言这种稀疏输入就无从下手,而且对拓扑误差极其敏感,CP 图里一点小违规就让整个优化不可行。另一侧是生成式基座模型,包括 LLM 与 VLM:它们在大规模多模态数据(折纸视频、图片、文本教程)上训练后,能给出描述性的教程或高层的折叠指导,但因为优化目标是近似的视觉合理性而不是精确的物理可行性,常常"幻觉"出看起来连贯、实则违反折叠约束的几何,给不出物理可执行的折纸过程。
于是核心矛盾很清楚:计算折纸的物理严谨、仿真就绪的表示,和 LLM 强大的语义先验,能不能同时要?具体说,能不能用语言模型的语义能力从稀疏文本描述里重建出可执行的折纸过程,同时保留约束层面的硬保证?本文的核心 idea 是把"提议"与"验证"解耦:LLM 只在折痕图状态空间里负责提出候选折叠动作(符号层,不碰物理),物理可行性交给一个学到的图结构世界模型当可微代理模拟器,在真正执行之前就在"想象"中 rollout 并剪掉通向无效状态的分支,最后再用符号模拟器做精确的约束核验——形成 LLM 提议、世界模型前瞻、硬核验兜底的三段式 propose-verify 回路。
方法详解¶
整体框架¶
输入是高层语义目标 \(g\)(自然语言文本)和一张折痕图:平面图 \(G=(V,E)\),顶点是纸面上的点、边是折痕。输出是一个可执行的折叠程序——一串结构化折叠动作,每一步指明要操作的图元素(哪条边/哪个面)和连续几何参数(二面角等)。整体由四个环节串成:先把原始 CP 数据规范化成置换不变的状态表示,保证结构相同的折纸映射到同一索引空间;再让语言模型在统一的 token 空间里自回归地提出候选动作;然后用图结构世界模型对每个候选做短程 rollout,预测这次折叠会怎样改变状态、以及会破坏哪些边;最后在 MPC 回路里先用 Level-0 确定性约束内核过滤掉无效候选,再按"提案似然 + 目标进度 + 约束满足"的融合分数挑出这一步真正执行的动作,若过滤后一个候选都不剩(或最高分低于阈值),就用世界模型预测的违规掩码构造负约束、在原约束集上重新采样。整个推理过程因此不是一次解码到底,而是一个带硬过滤的搜索回路。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
A["文本目标 + 折痕图"] --> B["规范化折痕图状态表示"]
B --> C["语言模型的结构化动作生成"]
C --> D["图结构世界模型"]
D --> E
subgraph E["图引导的 MPC 规划与回环重采样"]
direction TB
E1["候选采样 K 个动作"]
E2["Level-0 硬核验过滤"]
E3["世界模型前瞻打分与选动作"]
E1 --> E2 --> E3
E3 -->|无有效候选或得分过低<br/>按违规掩码加负约束| E1
end
E3 --> F["可执行折叠序列"]
关键设计¶
1. 规范化折痕图状态表示:让结构相同的折纸落到同一索引空间
折纸实例被写成 \(O_t = (G, s_t)\),一半是静态拓扑、一半是动态状态。静态的 CP 是平面图,顶点是纸面上的二维点(归一化到 \([0,1]^2\)),每条边携带初始折痕类型 \(z_j^0 \in \{\text{M}, \text{V}, \text{U}\}\),分别是山折、谷折和未定。问题在于原始 CP 数据的顶点编号是任意的,同一个结构换个编号就是另一组索引,模型会去拟合实例特定的 ID 而不是折叠模式。作者用一个确定性的规范化映射 \(\Phi: G \rightarrow G^*\) 解决:先按坐标的字典序重排顶点索引,再按排序后的端点索引重排边;为了再消掉朝向偏差,训练时先在顶点坐标上施加二面体对称(旋转与反射)做数据增广,然后才做规范化。这样结构相同的折痕图一定落进同一个索引空间。
动态状态是一个状态向量 \(s_t = (\alpha_t, \rho_t, z_t, \psi_t, b_t, t)\):\(\alpha_t \in [-\pi, \pi]^{|E|}\) 是每条边的有符号二面角(折叠到什么角度,符号区分山/谷方向),\(\rho_t \in [0,1]^{|E|}\) 是折叠进度比例,\(z_t\) 是当前的折痕类型,\(\psi_t\) 是整体框架角度,\(b_t\) 是山/谷翻转标志,\(t\) 是步计数。把"折到几分了"和"往哪个方向折"分开记录,是后面世界模型能对单条边做残差预测的前提。
2. 语言模型的结构化动作生成:把混合离散-连续动作压进一个 token 空间
折叠动作空间天生是混合的:既要选离散的图元素(折哪条边、动哪个面),又要给连续的几何参数(折多少度)。让 LLM 直接吐出几何数字往往不稳。作者的解法是把两种模态统一到一个词表 \(\Sigma = \Sigma_{\text{ops}} \cup \Sigma_{\text{graph}} \cup \Sigma_{\text{geo}}\):连续几何参数量化成离散 bin 进 \(\Sigma_{\text{geo}}\),规范化图上的索引映射成语义 token 进 \(\Sigma_{\text{graph}}\),操作原语进 \(\Sigma_{\text{ops}}\)。于是控制问题被翻译成自回归序列建模,模型能在同一条序列里捕捉"拓扑意图"与"几何参数"的联合依赖——先说要做什么,接着说做到什么程度。
策略 \(\pi_\theta(a_t \mid C_t)\) 以上下文 \(C_t = (g; G^*, s_t)\) 为条件,也就是语义目标 + 规范化图结构 + 当前动态状态。因为图已经被规范化,策略学到的是"兔耳折"这类结构无关的折叠 motif,而不是死记某个实例的顶点编号。训练用专家轨迹做最大似然估计,即 teacher forcing 下对每条动作序列的逐 token 负对数似然求和:\(\mathcal{L}_{\text{policy}}(\theta) = \mathbb{E}_{(G, a^*) \sim \mathcal{D}}\left[-\sum_t \sum_k \log \pi_\theta(a_{t,k} \mid C_t, a_{t,<k})\right]\)(原文公式(1)在缓存中提取损坏,此处按可读部分整理,⚠️ 以原文为准)。这一步监督预训练的作用是给模型灌进"合法折叠操作的文法",实现上是一个轻量 decoder-only transformer,按固定的 JSON schema 输出结构化动作,用 LoRA 适配。
3. 图结构世界模型:在图上做稀疏残差动力学,替代昂贵的网格仿真
策略给出的动作只是"看起来该这么折",并不保证物理可行;而每一步都调网格级仿真器做前瞻,代价又高到无法接受。作者因此学一个可微的代理模拟器 \(\mathcal{M}_\phi\),直接作用在图状态 \(s_t\) 上——这是它与像素级世界模型最根本的区别:像素世界模型没有显式的几何约束,学到的动力学也无从对应到"哪几条折痕坏了"。它的输出是三个量:稀疏残差状态更新 \(\Delta\hat{s}_t\)、逐边的 locality mask \(\hat{m}_t \in [0,1]^{|E|}\)、以及逐边的约束违规概率 \(\hat{c}_{t+1} \in [0,1]^{|E|}\),状态更新只允许发生在掩码圈定的边上:
其中 \(\mathrm{expand}(\cdot)\) 把逐边的掩码广播到所有状态通道。这个设计有两个讲究。一是稀疏:一次折叠在物理上只影响局部的一组边,让模型显式预测"影响哪些边"比让它稠密地改整个状态更符合数据的真实结构,也更容易学。二是把"可行不可行"变成一个可归因的逐边概率而不是一个二值标签——\(\hat{c}\) 是硬违规掩码 \(m\) 的软版本,后面规划器正是靠它知道"为什么不行、问题出在哪几条边上"。世界模型的训练数据来自 Level-0 确定性约束引擎生成的大规模转移(约 76,000 条,由专家示范加约束引导的扰动合成),关键在于扰动是贴着可行边界做的,让模型同时见过可行与不可行的结果;如果只喂可行样本,它学到的只会是"一切正常"。
4. 图引导的 MPC 规划与回环重采样:硬核验保底、软打分择优
推理时在 CP 图上做带约束的前瞻搜索。每一步先从策略分布里 nucleus 采样出 K 个候选动作(实现里 LM 每步提 \(N = 8\) 个)。这些候选不能直接信,先过 Level-0:一个确定性的约束内核返回这条动作是否有效 \(v_t \in \{0,1\}\)、无效的原因 \(r_t\)、以及受影响的边掩码 \(m_t \in \{0,1\}^{|E|}\),无效候选直接丢弃。剩下的合法候选交给世界模型 rollout,按一个融合三项的分数排序:
三项分别是按动作 token 数归一化后的提案对数似然(不归一化的话长动作会被系统性压低)、目标进度项(用预测的下一步状态衡量离目标还差多少),以及约束满足项——用最大逐边违规概率的倒数取对数,\(\epsilon > 0\) 只是防止数值爆炸;\(\lambda_{\text{goal}}\)、\(\lambda_{\text{cst}}\) 平衡两头(原文公式(6)缓存提取损坏,\(U_{\text{goal}}\) 的具体形式原文未给出定义,此处按可读部分整理,⚠️ 以原文为准)。
真正让这套流程区别于"失败就重来"的是失败处理。当合法候选集为空,或者最高分低于阈值 \(\tau\) 时,系统不是整步回滚,而是从世界模型预测的违规概率里挑出 \(\hat{c}\) 最高的 top-M 条边,把它们构造为负约束注入上下文,然后在更新后的约束集下重新采样候选。这一步把失败从二值信号变成了因果归因:模型不仅知道"这步不行",还知道"是因为这几条边违规",于是下一轮采样会主动避开这片区域。这也正是它相对 BrickGPT 那种反应式回滚的优势——回滚是执行后才反馈、且只有成败两种结果,序列一长,穷举式回溯的代价就不可承受;这里的负约束是可复用的局部信息,因此在 OOD 折痕图上也能高效恢复。
一个完整示例¶
以"折一只鹤"的某一步为例。当前状态是规范化的 CP 图与状态向量,语义目标 \(g\) 是"折出鹤的头部"。LM 在这一步提出 \(N = 8\) 个候选动作(分别对应不同的目标边与折叠角度组合),候选先全部送进 Level-0:其中若干条因为会让相邻面发生自交或破坏平坦可折性被判无效并连同原因一起丢弃,假设只剩 3 条合法。这 3 条再分别进世界模型 rollout,得到各自的残差状态 \(\hat{s}_{t+1}\) 与逐边违规概率 \(\hat{c}_{t+1}\):某一条虽然提案似然最高,但预测出有两条边违规概率接近 1,它的约束项会被压得很低;另一条似然略低但状态更接近目标、违规概率也在低位,于是被选中并真正执行、写进折叠程序。如果这一步 8 个候选全部被 Level-0 判无效,或者最优分数低于 \(\tau\),规划器就取违规概率最高的 top-M 条边当负约束,回到采样环节重新提一批候选——同一位置上重复这个"采样→核验→打分→(必要时)加负约束再采样"的循环,直到选出可执行的动作,再进入下一步。
损失函数 / 训练策略¶
训练分两摊。世界模型用 Level-0 模拟器合成的大规模折叠转移做监督学习:约 76,000 条转移来自专家示范加约束引导的扰动,训练 50 个 epoch,单卡 NVIDIA RTX Pro 6000 上约 30 小时(原文正文没有写出世界模型的监督损失具体形式,推测是对残差状态、掩码与违规概率做回归 / 分类监督,⚠️ 以原文为准)。语言模型侧是条件程序归纳的最大似然训练,用大约 \(10^4\) 条专家折叠步骤加上模拟器验证过的扰动(缓存提取为 "104",据上下文推断疑为 \(10^4\),⚠️ 以原文为准),同一硬件上挂 LoRA 适配、6 小时内收敛,输出受固定 JSON schema 约束。推理时是 MPC 回路:LM 每步提 \(N = 8\) 个候选,模拟器过滤无效项,世界模型对剩余候选做短程 rollout 打分后选出最终动作;所有实验固定随机种子。
实验关键数据¶
指标先讲清楚。步级用 Precision / Recall / F1,衡量在统一动作 schema 下预测结构化折叠动作的正确性与覆盖度。轨迹级用两个:Category Success Rate(Cat-SR)定义为某个类别内"成功完成目标折纸"的折叠序列占比,再对类别做 macro 平均以缓解类别不平衡(判定依赖模拟器的约束核验,论文未详述判定协议,⚠️ 以原文为准);Edge-IoU 衡量预测动作是否作用在正确的折痕集合上,即预测的受影响边集合与模拟器给出的 ground truth 之间的交并比——注意这个 ground truth 也来自模拟器,与验证器同源。
数据与基线:因为没有折纸过程生成的标准 benchmark,作者自建了 25 个类别、按难度分三档的留出集——Simple(10 类,如纸飞机、心、杯子)、Intermediate(10 类,如船、花)、Complex(5 类,如昆虫、鹤、龙,涉及高频折叠与严格的圆填充约束)。测试集共 3,840 条文本 prompt,从中选 1,150 例做验证,每条 prompt 对每个方法跑两次独立实验,即每方法 7,680 条结果。基线包括:BrickGPT(在本文提出的 OrigamiCode 数据集上微调,靠物理感知回滚过滤不稳定步骤)、GPT-5.1 与 GPT-5.2(prompted,给 in-context 示例输出结构化折叠程序),以及 Gemini(prompted)。
主实验¶
| 方法 | Precisionµ ↑ | Recallµ ↑ | F1µ ↑ | Edge-IoU ↑ | Cat-SR_macro ↑ |
|---|---|---|---|---|---|
| Gemini (prompted) | 0.2874 | 0.4213 | 0.3420 | 0.1126 | 0.4942 |
| GPT-5.1 (prompted) | 0.2625 | 0.2996 | 0.2663 | 0.0937 | 0.6753 |
| GPT-5.2 (prompted) | 0.1243 | 0.3575 | 0.1648 | 0.1322 | 0.1600 |
| BrickGPT (finetuned) | 0.3969 | 0.2250 | 0.2461 | 0.0505 | 0.5455 |
| Learn2Fold (Ours) | 0.7661 | 0.7113 | 0.7394 | 0.5820 | 0.8912 |
消融实验¶
in-distribution(IID)留出设定:
| 配置 | Step Valid ↑ | Traj SR ↑ | Goal Dist ↓ |
|---|---|---|---|
| LM | 70.8% ± 45.5% | 22.2% ± 45.5% | 0.796 ± 0.194 |
| LM+Level0Sim | 49.3% ± 7.2% | 23.7% ± 0.0% | 0.515 ± 0.130 |
| LM+WM | 54.2% ± 49.8% | 25.0% ± 43.3% | 0.759 ± 0.214 |
| LM+WM+Level0Sim (Ours) | 64.2% ± 41.8% | 33.3% ± 47.1% | 0.855 ± 0.196 |
out-of-distribution(OOD)折痕图留出设定:
| 配置 | Step Valid ↑ | Traj SR ↑ | Goal Dist ↓ |
|---|---|---|---|
| LM | 47.6% ± 29.2% | 20.7% ± 55.5% | 0.633 ± 0.192 |
| LM+Level0Sim | 36.5% ± 18.0% | 23.3% ± 38.3% | 0.256 ± 0.600 |
| LM+WM | 32.3% ± 28.7% | 17.8% ± 51.7% | 0.560 ± 0.248 |
| LM+WM+Level0Sim (Ours) | 41.2% ± 32.3% | 27.7% ± 50.1% | 0.487 ± 0.353 |
关键发现¶
- 步级合法 ≠ 折得完。只用 LM 时步级有效率在 IID 高达 70.8%,但轨迹成功率只有 22.2%;长程误差累积才是真正的瓶颈,这也解释了为什么主实验里 LLM 基线的 F1 与 Cat-SR 两个指标会脱节(GPT-5.2 的 recall 有 0.358,precision 却只有 0.124)。
- 世界模型换的是全局进度,不是局部安全。LM → LM+WM 后 IID 轨迹成功率 22.2% → 25.0%、goal distance 0.796 → 0.759,OOD 上 0.633 → 0.560,但步级有效率反而下降——短程前瞻倾向于选那些局部有风险、长程更划算的动作。
- 三者互补,缺一不可。加上 Level-0 硬核验后,全系统拿到两个设定下最高的轨迹成功率(IID 33.3%、OOD 27.7%),同时把被世界模型拉低的步级有效率又恢复回来。作者据此论证 LLM 提议、世界模型前瞻、符号核验承担的是不同角色。
- 数值有冲突,需要谨慎引用。IID 下全系统的 Goal Dist 反而是最高的 0.855(该指标标注为越小越好),与正文"进一步降低最终目标距离"的表述对不上;OOD 下全系统的 0.487 也高于 LM+Level0Sim 的 0.256。另外所有消融项的标准差都极大(±45.5%、±55.5% 量级),说明验证样本量小、单点结论的稳健性有限(⚠️ 以原文为准)。
- 基线各有偏科。BrickGPT 靠回滚拿到比 LLM 基线更高的 precision(0.397),但 recall 只有 0.225,说明它的试错策略只能产出粗糙、不完整的动作、覆盖不到完整序列;LLM 基线则在语义层面合理、几何层面失配,定性分析里通常几步之内就开始崩,而 BrickGPT 前 3-4 步还稳、序列一长就失去长期一致性。
亮点与洞察¶
- 把"失败"变成可归因的约束,而不是重试信号。世界模型输出逐边违规概率,规划器据此构造负约束再采样——失败信息从二值变成"哪几条边不行",可以直接复用。这是全篇最值得迁移的设计:任何"生成 + 验证"的任务都可以问一句"我的验证器能不能告诉我哪里错了、能不能把'哪里错了'写回生成条件"。
- 状态级世界模型 > 像素级世界模型(在硬约束域里)。直接在图状态上做稀疏残差更新,天然带上了"一次动作只影响局部"的归纳偏置,预测的掩码还能充当可解释的中间量;换成像素或潜空间动力学,这份结构就没了。
- 规范化是把"实例编号"与"结构模式"解耦的通用手段。字典序重编号 + 二面体对称增广的组合,成本极低但让策略学的是 motif 而不是 ID,可以照搬到装配、电路、分子合成等任何图结构程序生成任务上。
- 贴着边界造负样本。世界模型的价值在于区分可行与不可行,如果训练数据只有成功案例,它就是个恒真判别器;本文刻意做 near-boundary 扰动,让可行和不可行的样本都出现在数据里——这是"学一个 feasibility 判别器"类工作的通用经验。
局限与展望¶
- 评测是自建的,且规模偏小。没有标准 benchmark,25 类、1,150 例验证、每条 prompt 两次采样,消融的方差大到 ±50% 量级,主结论的统计强度有限;Cat-SR 的判定协议(谁来判、判到哪一步算成功)论文没有写细。
- 所谓"物理有效"只到几何/拓扑层面。全文验证都在仿真与符号层面完成,没有把生成的折叠序列交给真实折纸(机器人或人)执行对照;满足平坦可折性与无自交,不等于一张真实的纸真的折得出来。
- 评测器与验证器同源,存在循环论证风险。Edge-IoU 的 ground truth 由模拟器给出,而规划时的 Level-0 核验用的是同一套约束内核,等于用同一把尺子同时定义"对"和"判对"。
- 前瞻视野长度没有交代。世界模型是在短程 rollout 上训练的,rollout 多长、误差如何随 rollout 长度累积,论文没有报告,而这直接决定它能否处理 Complex 档那种几十步的序列。
- 强依赖 Level-0 的正确性与覆盖率。硬核验是整条流水线的保底,如果约束内核漏判某一类违规,世界模型与语义提议都补不回来。
- 可改进方向:把 Level-0 换成独立的物理模拟器或真机反馈来打破同源问题;报告 rollout 长度与累积误差曲线;在更大规模、有标准划分的 benchmark 上重做评测;把失败原因 \(r_t\) 也显式喂给语言模型(目前只用了违规掩码)。
相关工作与启发¶
- vs BrickGPT:两者都是"自回归提议 + 物理感知"。区别在失败处理机制:BrickGPT 靠反应式回滚,先执行再回退,只有成功/失败两种信号,序列一长回溯代价指数上升;本文用学到的世界模型做执行前的短程前瞻,并用违规掩码做因果归因,把失败变成可复用的局部约束。代价是本文多了一个需要训练、且可能预测错的世界模型。
- vs TreeMaker / Origamizer:优化式路线用圆填充、塞折算法数学保证某个网格可从单张纸折出,产出仿真就绪的 CP,但要求精确 3D 网格输入、是确定性的、对拓扑误差极敏感。本文把生成当序贯决策,从稀疏文本出发,允许中间出错后恢复,但失去了优化式方法的数学保证——"合法"退化成"通过 Level-0 核验"。
- vs Dreamer / Genie / AVID 等世界模型:那些在像素或潜空间建模动力学,用于视觉域的控制或生成,不直接强制硬离散几何约束,也不产出可执行的结构化程序。本文把世界模型搬到 CP 图状态上,预测的是逐边几何量与违规概率,服务的是符号程序生成。
- vs LLM/VLM 直接生成折纸教程:这类方法能给出描述性强、语义合理的折叠指导(GPT-5.1 的 Cat-SR 0.675 并不低),但动作层面精度很差(F1 0.266),因为缺少显式的几何状态跟踪与可行性校验。本文的价值主张正是"语义归语义、几何归几何"。
评分¶
- 新颖性: ⭐⭐⭐⭐ 把折纸生成形式化为"LLM 提议 + 图结构世界模型前瞻 + 符号硬核验"的 neuro-symbolic 规划回路,状态级世界模型服务于约束感知的符号程序生成,这个组合此前少见。
- 实验充分度: ⭐⭐⭐ 主结果与 IID/OOD 消融齐全,但 benchmark 自建、验证样本量小、方差极大,缺少世界模型 rollout 长度的分析与真机/真实折纸对照。
- 写作质量: ⭐⭐⭐⭐ 框架与动机叙述清楚,propose-verify 的主线贯穿全文;但若干关键定义(\(U_{\text{goal}}\)、世界模型损失、Cat-SR 判定协议)缺失,消融表里 Goal Dist 的数值方向与正文表述存在冲突。
- 价值: ⭐⭐⭐⭐ 提供了一个约束感知长程规划的可复用范式(可归因失败 + 状态级前瞻 + 硬核验兜底),思路可迁移到装配、操作等结构化生成任务,折纸本身也是一个干净的 testbed。