AutoPartGen:Meta AI 开源的自回归 3D 零件生成

为什么会有这个项目

大多数 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 生成社区的有用贡献。

仓库:https://github.com/facebookresearch/autopartgen

论文:https://arxiv.org/abs/2507.13346

模型权重:https://huggingface.co/facebook/autopartgen

相关文章

IKEA 3D 模型下载脚本:宜家应该自己造的工具

为什么会有这个项目 宜家在其产品目录中投入了大量精力制作 3D 模型。在官网上,许多商品都有可交互的 3D 查看器,你可以在三个维度中旋转家具、放大检查细节,感受物品在你空间中的样子。这些模型 ...

PixiJS:47k star 的 2D WebGL 引擎,为什么能成为游戏和可视化首选

痛点切入 你需要在浏览器里做高性能 2D 渲染——可能是游戏、数据可视化、交互式动画、或是某个需要"好看"的 Web 项目。 你打开 Canvas 2D API,性能问题立刻出现。几千个精灵 ...

Colima:29k star 的 Docker Desktop 替代品,macOS 容器运行时该选它

痛点切入 你在 Mac 上用 Docker Desktop,每次开机它都偷偷吃掉 2-3GB 内存,风扇呼呼转。你打开活动监视器看了一眼,Docker Desktop 占了 15% CPU,你 ...

skills.sh:Vercel 正在给 Agent 技能建一个 npm 式的开放生态

痛点切入 你现在打开任何一个 coding agent——Claude Code、Cursor、Codex、OpenCode——都能找到各自的 skill 系统。前端设计 skill、SEO ...

Manim 全面对比:3b1b 原版 vs 社区版,87k+39k star 的两个数学动画引擎怎么选

痛点切入 你看过 3Blue1Brown 的视频——那些丝滑的数学可视化动画,傅里叶变换在屏幕上旋转,线性代数的矩阵变换实时作用于几何图形。你想做类似的东西,但打开 PowerPoint 做不 ...

Turso:用 Rust 重写 SQLite,为 AI Agent 时代准备的嵌入式数据库

痛点切入 你需要给每个 AI Agent 配一个独立数据库。不是共享一个 Postgres 实例然后靠行级权限隔离——那样每个 Agent 启动时都要等连接池分配、等冷启动、等 schema ...