图片转3D:开源模型探索

这篇文章与其说是发布公告,不如说是一份实地报告:开源照片转3D领域目前是什么样子,哪些模型真正适合我遇到的限制,以及管道在哪些方面仍然不足。

图片转3D:开源模型探索
梯形图转SCL | AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

几周前,我着手回答一个狭隘的问题:如今的开源图像转3D模型,如果指向一张照片而不是干净的产品渲染图,到底有多好?这个问题变成了 Dioramic —— 一个开源应用,上传照片,通过 GPU 托管的 3D 管道运行,然后返回一个带纹理的网格,你可以在浏览器中旋转并下载。

这篇文章与其说是发布公告,不如说是一份实地报告:开源照片转3D领域目前是什么样子,哪些模型真正适合我遇到的限制,以及管道在哪些方面仍然不足。

  • 在线演示: https://dioramic.vercel.app/
  • 源代码: https://github.com/Hitesh-s0lanki/3d-opensource-playground

1、起始限制:单个物体,单张照片

大多数有趣的开源重建模型——TripoSR、InstantMesh、Hunyuan3D——都是在一件事上训练的:一个以空白背景为中心的物体,从一个或多个角度观察。给它一张整个卧室的照片,正如项目自己的模型说明所说,"你会得到垃圾"。这些模型没有房间的概念;它们围绕你给它们的任何东西旋转,就好像它是一个单一的居中物体,这对椅子来说没问题,但对放在四面墙内的椅子就没用了。

因此,这个项目今天发布的管道刻意缩小到实际有效的范围:一张物体的照片,大致居中,自动移除背景。结果以 .glb 格式返回——一个大约4万个多边形、4-5 MB的带纹理网格,或者如果你跳过绘制过程,最多150万个无纹理多边形。

2、实际运行的是什么

生成模型是腾讯的 Hunyuan3D-2.1,托管在租用的 GPU(Modal)上,而不是本地运行——它需要两个从源代码编译的 CUDA 扩展和足够的显存,以至于"在我的笔记本电脑上运行"从来不是目标。一次运行会经历:

  1. 背景移除 —— rembg / u2net 在网格模型看到之前将物体从背景中剥离。
  2. 形状生成 —— Hunyuan3D-Shape 生成原始几何体。
  3. 纹理绘制 —— Hunyuan3D-Paint 将纹理烘焙到该几何体上。

一次生成大约需要4-5分钟。因为这太长了,无法保持 HTTP 请求打开,应用程序不会尝试:上传照片会生成 Modal 作业并立即返回,前端轮询会在完成的网格到达时拾取它。在生成过程中关闭标签页不会丢失任何内容——没有内存状态可以丢失。

3、为什么开源对这个特定项目很重要

我可以调用托管的照片转3D API 并更快地发布一个更薄的包装器。我没有这样做的原因:使用 API,你会得到一个网格,但看不到为什么某个特定照片会产生不好的结果。使用开源模型,每个阶段——检测、背景移除、形状、纹理——都是你可以读取、交换或检测的文件。

这种透明度最终以具体的方式变得重要。这个项目实际上实现了两个管道,只有一个在线上:

  • 单个物体(托管应用今天所做的):照片 → Hunyuan3D-2.1 → 带纹理的网格。简单直接,适合 Modal 容器。
  • 整个房间:使用 GroundingDINO 检测每个物体,使用 TripoSR 分别重建每个物体,从相机模型和已知家具尺寸估计它们在房间中的位置,然后在 Blender 中组装场景。这部分已实现并有效,但它将 Blender 作为子进程驱动,尚未打包到容器中——所以在在线应用中,"整个房间"在 UI 中可见但被禁用。

构建房间管道是迫使更难教训的原因,因为房间的单张照片根本没有深度信息。两个假设填补了这个空白:家具大致有已知的真实世界尺寸(一张双人床大约 2.0 × 1.6 米),以及物体在框架中的表观高度——而不是其边界框的底部——一旦你假设焦距,就能给你距离。假设的视场角错误,整个房间的规模就会漂移;项目自己的说明描述了一个示例卧室在一个视场角假设下为 9×10 米,在另一个假设下大小正确。

4、模型领域的惊喜

在调查可用内容时,有几件事脱颖而出(详情见 docs/models.md):

  • 许可证变化比质量变化更大。 TripoSR(MIT)是物体重建器中最弱的,但它是唯一适合 4 GB 显卡的。InstantMesh 和 MIDI-3D 都是 Apache-2.0,明显更好,但需要大约 10-30 GB 的显存。一个有前途的整个场景项目将几个子模型捆绑在不同的许可证下——在任何商业使用之前都值得检查。
  • 一致性,而不是分辨率,是真正的失败模式 对于任何生成物体多个视图并从中重建的内容。3D 感知的多视图模型(Zero123++)保持视图彼此一致;通用图像模型(SDXL、FLUX)没有这样的约束,会产生安静不一致的视图,这就是为什么存在一个完整的子领域(Carve3D、MVDiff)来纠正它。
  • 检索可能在设计工具中胜过重建。 生成的家具网格凹凸不平且难以编辑。将检测到的物体与 CAD 库匹配,而不是重建它,会给你一些干净、正确缩放且可替换的东西——重建给你布局,检索给你质量。

原文链接: What I Learned Exploring Open-Source Photo-to-3D Models (And the App I Built Along the Way)

汇智网翻译整理,转载请标明出处