AutoPartGen:Meta AI 开源的自回归 3D 零件生成
- Smars
- Open Source , AI Research
- 30 Jun, 2026
为什么会有这个项目
大多数 3D 生成模型把物体当成一整块来处理。你给它一个文字提示或一张图片,出来的是一个单一的网格——一整坨没有语义区分的几何体,不知道哪部分是椅腿、哪部分是椅面。对于动画、绑定或场景组装这类下游任务来说,这条路基本走不通。你得到了一个看起来像那么回事的模型,但没法对它进行有意义的操作。
另一条路——手动 3D 零件分割——是件苦差事。有经验的艺术家勉强会做,大多数人直接绕道。你需要深厚的领域知识才知道零件边界应该画在哪里,而且这个过程完全无法规模化。
Meta AI 和 Oxford VGG(Visual Geometry Group)的 AutoPartGen 走了另一条路。它不生成单一网格,而是按自回归序列逐个生成零件。给它一张图、一个网格或一组 2D 掩码,它输出一个分解后的 3D 物体,每个零件都是独立可用的网格。模型自主决定一个物体应该有多少零件、边界在哪里。
这是一篇 NeurIPS 2025 论文,附带代码、权重和可运行的 pipeline。重新实现版本基于 TripoSG 组件,以非商业研究许可证公开发布。
它到底做了什么
AutoPartGen 建立在 3DShape2VecSet 之上——一种将体素网格压缩为紧凑潜向量的 3D 潜表示。关键发现是这个潜空间具有很强的组合性质:物体的零件可以表示为潜向量的加性组合,这使它天然适合基于零件的生成任务。
整个 pipeline 的工作流程:
输入条件化。 模型接受三种输入,可以单独使用也可以组合使用:
- 物体图像(提取 DINOv2 特征作为条件)
- 索引式 2D 掩码,每个区域对应一个目标零件
- 现有 3D 网格(重建的、扫描的或生成的)
自回归零件生成。 AutoPartGen 不是同时预测所有零件,而是一次预测一个。每一步,DiT(Diffusion Transformer)在之前已生成的零件、整体物体形状和输入模态的条件下,预测下一个零件的潜表示。过程持续到模型输出序列结束标记——即它自主判断所有零件都已生成完毕。
潜表示到网格转换。 每个预测的潜向量通过 Shape VAE 解码回几何体,然后用 DiffDMC(更快,需要 CUDA 扩展)或 marching cubes 回退方案提取等值面。零件经过简化、清除浮点噪点,可选平滑后导出。
组装。 各个零件网格可以无需额外优化直接组合成一个连贯的整体。每个零件是一个独立的 GLB 文件,同时也导出一个合并后的网格。
典型物体在单 GPU 上运行不到一分钟。
谁会用到它
AutoPartGen 针对的是 3D 内容 pipeline 中的一个具体缺口——从”生成一个网格”到”让这个网格可以用于动画、绑定或场景组装”之间的空白。
-
3D 内容创作者: 自动零件分解意味着你可以拿一个生成的或扫描的物体,立刻得到每个逻辑组件的独立网格。不需要手动分离。
-
动画和绑定工作流: 绑定一个整体网格很痛苦。绑定已经对应语义组件(腿、手臂、躯干)的独立零件则快得多。AutoPartGen 自动提供这种分解。
-
游戏开发: 零件级控制的场景组装允许程序化变体——换掉椅子腿、改变桌面、从不同物体组合零件。零件粒度使这成为可能,无需手动网格编辑。
-
机器人和仿真: 仿真环境需要有合理铰接点的物体。AutoPartGen 的零件分解天然映射到关节位置和刚体段。
-
研究: 自回归方式的 3D 零件生成本身就是研究贡献。代码库为任何从事组合 3D 生成的人提供了干净的参考实现。
什么时候不该用它
投入时间之前值得了解几个注意事项:
-
仅限非商业用途。 FAIR 非商业研究许可证意味着你不能在生产环境或商业产品中使用。学术和研究是预期范围。如果需要商业级 3D 零件生成,这不是你要找的工具。
-
是重新实现,不是原始版本。 发布的代码是基于 TripoSG 组件的重新实现。作者指出它可能不如论文中报告的原始系统。结果会与论文的定量评估有差异。
-
单 GPU,中等显存。 2048 latent 检查点是默认发布路径。可选的 4096 latent 检查点改进了细节但需要更多显存且运行更慢。两者都需要支持 CUDA 的 GPU。
-
输入质量很重要。 模型严重依赖输入图像的质量。光线差、严重遮挡或不常见的角度会产生更差的分解结果。背景移除(RMBG-1.4)有帮助但它本身也是非商业的。
-
零件语义是学习得到的,不是指定的。 你不能告诉模型”给我恰好 5 个零件,名字叫 xxx”。模型基于训练数据自行决定零件数量和边界。索引掩码提供了一些控制,但底层生成仍然是概率性的。
-
早期项目。 GitHub 上 14 个 star,3 次提交。论文质量没问题但代码库还很新。预期会有粗糙的边缘、有限的文档和潜在的破坏性变更。
快速上手
前置条件:Python 3.10,CUDA 12.1,一块有足够显存的 GPU(默认模型在消费级显卡上就能跑)。
第一步——环境搭建:
conda create -n autopartgen python=3.10 pip -y
conda activate autopartgen
pip install torch==2.5.1 torchvision==0.20.1 --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt
pip install -e .
第二步——从 Hugging Face 下载权重:
hf download facebook/autopartgen \
autopartgen_dit.pth autopartgen_vae.pth \
--local-dir checkpoints
第三步——对图片运行推理:
python inference.py \
--image examples/image/apple_character/image.png \
--output_path outputs/apple_character
输出:一个目录,包含 mesh_000.glb、mesh_001.glb 等(各个零件)以及 mesh_combined.glb(组装后的整体)。
架构细节
三个组件承担了主要工作:
3DShape2VecSet VAE。 在体素网格和潜向量之间转换。潜空间具有组合性质,使零件级生成变得自然——你可以通过相加潜向量来组合零件,解码器从这些向量的和中产生连贯的几何体。
DiT backbone。 一个 Diffusion Transformer,预测下一个零件的潜表示。它在之前已生成的零件(防止重叠)、整体物体形状(保持连贯性)和输入特征(图像用 DINOv2,网格用顶点特征)的条件下工作。两个检查点:2048 latent token(默认,更快)和 4096 latent token(微调过,细节更好)。
自回归循环。 生成循环预测一个零件、检查是否发出了结束标记,如果没有就继续。这意味着模型学会了判断一个物体”够了”的时候——椅子得到 4 条腿加一个座面,汽车得到轮子加车身,不需要显式指令。
默认的引导设置因模式而异:纯图像生成与网格条件化或掩码条件化生成使用不同的 CFG 值。配置文件中记录了这些数值。
社区和活跃度
由 Meta AI 和 Oxford VGG 的研究人员撰写,2025 年 7 月发布。仓库有 14 个 star 和 1 个 fork——无论如何衡量都是早期阶段。
仓库历史有 3 次提交。代码库干净但精简。依赖在 pyproject.toml 和 requirements.txt 中声明清楚。Hugging Face 模型页面组织规范,有文档说明。
FAIR 非商业研究许可证的措辞很明确:仅限研究用途。这不是商业产品,不应该被当作商业产品对待。fork 用于内部研究是允许的,操作也很直接。
致谢部分揭示了重要的上游依赖:TripoSG 提供 VAE 和 DiT 结构,HunyuanDiT 提供 transformer 块,DINOv2 提供图像特征,DiffDMC 提供表面提取,TRELLIS 提供后处理。这既是研究集成也是原创贡献。
结论
AutoPartGen 解决了 3D 内容 pipeline 中的一个真实问题:从单一物体得到分解的、零件级的表示,无需人工干预。自回归方法——逐个生成零件直到模型判断完成——很优雅,产生的结果是其他方法难以匹配的。
实际约束是那个非商业许可证。对于从事 3D 生成、组合场景合成或零件级操作的研究人员来说,这是一个有价值的参考实现,而且附带了发布的权重。对于想在产品中使用的人来说,许可证让这成为不可能。
无论是否打算使用,这篇论文都值得一读。发现 3DShape2VecSet 潜空间具有适合零件生成的组合性质,这本身就是对 3D 生成社区的有用贡献。