[论文解读] ShapeCoder: Discovering Abstractions for Visual Programs from Unstructured Primitives
ShapeCoder 是一种新颖的系统,通过形状到程序的识别网络与带条件重写的 e-graph,从基于原始图元的非结构化形状数据集中发现高层抽象函数和紧凑的视觉程序。该系统在无需标注程序、层级零件标签或程序顺序约束的情况下,实现了复杂 3D 形状数据集上更优的压缩率与抽象质量。
Programs are an increasingly popular representation for visual data, exposing compact, interpretable structure that supports manipulation. Visual programs are usually written in domain-specific languages (DSLs). Finding "good" programs, that only expose meaningful degrees of freedom, requires access to a DSL with a "good" library of functions, both of which are typically authored by domain experts. We present ShapeCoder, the first system capable of taking a dataset of shapes, represented with unstructured primitives, and jointly discovering (i) useful abstraction functions and (ii) programs that use these abstractions to explain the input shapes. The discovered abstractions capture common patterns (both structural and parametric) across the dataset, so that programs rewritten with these abstractions are more compact, and expose fewer degrees of freedom. ShapeCoder improves upon previous abstraction discovery methods, finding better abstractions, for more complex inputs, under less stringent input assumptions. This is principally made possible by two methodological advancements: (a) a shape to program recognition network that learns to solve sub-problems and (b) the use of e-graphs, augmented with a conditional rewrite scheme, to determine when abstractions with complex parametric expressions can be applied, in a tractable manner. We evaluate ShapeCoder on multiple datasets of 3D shapes, where primitive decompositions are either parsed from manual annotations or produced by an unsupervised cuboid abstraction method. In all domains, ShapeCoder discovers a library of abstractions that capture high-level relationships, remove extraneous degrees of freedom, and achieve better dataset compression compared with alternative approaches. Finally, we investigate how programs rewritten to use discovered abstractions prove useful for downstream tasks.
研究动机与目标
- 为从形状的原始、非结构化图元分解中发现有意义且可重用的视觉程序抽象函数提供解决方案。
- 克服先前抽象发现方法的局限性,这些方法依赖于强输入假设,如精心整理的示例序列、层级标注或预定义的程序排序。
- 通过学习捕捉形状数据集中结构与参数模式的抽象,提升程序的紧凑性与可解释性。
- 通过统一的端到端学习框架,实现对发现抽象的有效下游应用,如形状编辑、生成与分析。
提出的方法
- 采用受 DreamCoder 启发的迭代式 dream-wake-proposal-integration 循环,实现视觉程序的渐进式库学习。
- 使用自底向上的形状到程序识别网络,通过组合操作解决子问题并拼接解决方案,即使在复杂或非结构化输入下也能实现推理。
- 利用增强条件重写规则的 e-graph,以可 tractable 的方式高效探索并应用具有复杂参数表达式的抽象。
- 引入条件重写机制,避免不必要的节点扩展,减少 e-graph 的膨胀,使在计算约束下能够探索更丰富的程序结构。
- 直接在原始图元集合上运行,无需真实程序、零件层次结构或基于课程的训练数据。
- 使用基于压缩的目标,引导发现最小化程序长度同时保持形状保真度的抽象。
实验结果
研究问题
- RQ1系统能否直接从形状的非结构化图元分解中发现有意义且可重用的视觉程序抽象函数,而无需标注程序或零件层次?
- RQ2如何通过条件重写增强 e-graph,以高效探索视觉程序合成中复杂的参数化抽象?
- RQ3在完整程序不可直接观测的情况下,基于自底向上训练的神经识别网络在多大程度上能从图元输入中推断出完整的视觉程序?
- RQ4ShapeCoder 的抽象发现方法在程序压缩率、泛化能力以及对噪声图元输入的鲁棒性方面,与最先进方法相比表现如何?
主要发现
- ShapeCoder 发现的抽象库在压缩率上显著优于基线方法,即使在无额外监督的复杂 3D 形状数据集上亦然。
- 该系统能成功泛化到训练过程中未见的形状,生成使用发现抽象的紧凑且可解释的程序。
- ShapeCoder 在具有高结构与参数复杂度的数据集上,发现抽象的能力优于先前方法,尤其在放宽输入假设时表现更优。
- 即使图元分解存在噪声或由无监督的长方体抽象方法生成,该方法仍保持有效性,展现出对输入质量的鲁棒性。
- e-graph 中使用条件重写可防止指数级膨胀,使探索比以往方法更丰富的程序结构成为可能。
- 尽管 e-graph 存在饱和限制,ShapeCoder 仍能发现高层级、语义上合理的抽象,有效抑制视觉程序中的虚假自由度。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。