WithAI.Design

5 min read

年度最强图片到3D的AI生成技术

年度最强图片到3D的AI生成技术

前言

3D 一直是 AI 技术待攻克的领域,图片到 3D 模型生成,开源的和闭源的技术都有。但之前的结果都是差强人意,主要是模型的精度和贴图精度都不够高。最近,微软终于出手了,开源了 3D 模型生成技术-TRELLIS,可能大家都已经了解过了,今天我后知后觉得也整理一下,看过的朋友权当回顾一下。

项目简介

技术总结就是 :

一种新颖且通用的高质量 3D 资产生成方法。其核心在于一个名为 结构化潜在表示 (Structured LATent representation, SLAT) 的统一表示,它可以解码成多种不同的输出格式,包括神经辐射场 (Radiance Fields) 、3D 高斯 (3D Gaussians) 和网格 (meshes) 。

大白话就是 (可能不太准🥱):

我们用乐高来类比:

1. 编码过程 (Encoding): 从乐高模型到“乐高密码”

  • DINOv2(像一个非常细心的观察员) : 想象一下,这个观察员会从各个角度仔细观察你的乐高模型 (多视角),并拍下很多照片。他特别擅长识别不同乐高积木的种类和颜色,就像他能看穿积木的本质 (特征提取)。
  • 体素化(像把模型拆分成小方块) : 想象一下,我们把复杂的乐高模型拆分成一个个更小的、统一规格的小立方体 (体素)。这样,复杂的模型就变成了一个由小方块组成的 3D 网格,更容易分析。
  • 多视角平均(像把多张照片合成一张) : 观察员从不同角度拍了很多照片,我们需要把这些照片的信息综合起来,得到一个对每个小方块最全面的描述。就像把多张照片重叠起来,看得更清楚。
  • 稀疏变分自编码器 (VAE)(像一个聪明的密码学家) : 这位密码学家很厉害,他能把这些关于小方块的信息 (颜色、位置、种类) 压缩成一个简短的、只有他自己能懂的“乐高密码” (潜变量)。
    • 稀疏性: 这意味着这个密码非常高效,它只记录最重要的信息,就像用最少的词语描述一个乐高积木。
    • 变分: 这意味着这个密码学家还有一些“创造力”,他可以根据这个密码稍微做一些改动,创造出一些相似但不完全一样的乐高模型。
    • 自编码器: 这意味着这位密码学家既能创造密码 (编码),也能解读密码 (解码),把密码还原成原来的乐高信息。

2. 解码过程 (Decoding): 从“乐高密码”到乐高模型

  • 结构生成 (像搭骨架的建筑师) : 这位建筑师会根据你的文字描述或图片,先用一些关键的“乐高密码”搭出一个大致的框架,就像你先用一些核心积木拼出一个房子的地基和主要结构。这个框架虽然简单,但已经确定了模型的大致形状和布局。
  • 结构化潜变量生成 (像精细装修的室内设计师) : 这位室内设计师会根据用户更详细的描述,在“乐高密码”上添加更多细节。比如,用户说“我想要一个红色的屋顶”,设计师就会把代表红色屋顶的“密码”加到框架的对应位置。这就像在房子里装修房间,添加家具和装饰品,让整个模型更加丰富和具体。
  • 潜变量解码 (像拥有超能力的建造者) : 最后,这位拥有超能力的建造者根据最终的、详细的“乐高密码”(包含了骨架和所有细节),就能“嗖”的一下变出一个完整的 3D 乐高模型。更厉害的是,通过稍微调整“乐高密码”,他还能创造出多个类似的、但细节略有不同的模型供你选择!

这个过程就像一个团队合作:

  • 细心观察员 (DINOv2) 负责观察和分析乐高模型。
  • 拆解专家 (体素化) 把模型拆解成小方块。
  • 信息整合员 (多视角平均) 整合所有信息。
  • 聪明的密码学家 (VAE) 创造和解读 “乐高密码”。
  • 建筑师 (结构生成) 搭建初始框架。
  • 室内设计师 (结构化潜变量生成) 添加细节。
  • 超能力建造者 (潜变量解码) 最终生成 3D 模型。

通过这样的比喻,它巧妙地结合了“观察”、“拆解”、“编码”、“解码”、“搭建框架”和“添加细节”等多个步骤,最终实现了从现实物体或文字/图片描述到 3D 模型的转换。

这样是不是好懂一些?

如果难懂就不要懂了,作为设计师,知道其效果一流就可以了😂。

FE9ZF0HSv2ShbecV=3ZIpnWsLrZh99x0BBue1rblq3HzS1487841717646.gif

我看看看官方的效果:

01.gif

随便找几个官方案例看看:

02.gif 02.gif 02.gif

无论从模型的准确性、精细度、贴图的还原程度,都绝对是开源模型的 NO 1 了🐂🍺

如何使用?

官方抱脸地址

Huggingface 在线体验地址 https://huggingface.co/spaces/JeffreyXiang/TRELLIS,需要等候排队,页面加载也好慢🥱。

自部署

官方也详细提供了安装指引,有技术和有硬件的伙伴(显存需要 16 G 以上)可以动手试试。

📦 安装

先决条件

  • 系统: 目前代码仅在 Linux 系统上进行了测试。对于 Windows 系统的设置,您可以参考 #3 (尚未完全测试)。
  • 硬件: 需要至少具有 16 GB 显存的 NVIDIA GPU。代码已在 NVIDIA A 100 和 A 6000 GPU 上进行了验证。
  • 软件:
    • 编译某些子模块需要 CUDA Toolkit。代码已在 CUDA 11.8 和 12.2 版本上进行了测试。
    • 建议使用 Conda 管理依赖项。
    • 需要 Python 3.8 或更高版本

安装步骤

  1. 克隆仓库:

    git clone --recurse-submodules https://github.com/microsoft/TRELLIS.git
    cd TRELLIS
    
  2. 安装依赖项:

    在运行以下命令之前,需要注意以下几点:

    • 添加 --new-env 标志将创建一个名为 trellis 的新 conda 环境。如果您想使用现有的 conda 环境,请删除此标志。
    • 默认情况下,trellis 环境将使用 PyTorch 2.4.0 和 CUDA 11.8。如果您想使用不同版本的 CUDA (例如,如果您安装了 CUDA Toolkit 12.2 并且不想为子模块编译安装另一个 11.8 版本),您可以删除 --new-env 标志并手动安装所需的依赖项。请参考 PyTorch 获取安装命令。
    • 如果您安装了多个 CUDA Toolkit 版本,在运行命令之前应将 PATH 设置为正确的版本。例如,如果您安装了 CUDA Toolkit 11.8 和 12.2,则应在运行命令之前运行 export PATH=/usr/local/cuda-11.8/bin:$PATH
    • 默认情况下,代码使用 flash-attn 后端进行注意力计算。对于不支持 flash-attn 的 GPU (例如 NVIDIA V 100),您可以删除 --flash-attn 标志仅安装 xformers,并在运行代码之前将 ATTN_BACKEND 环境变量设置为 xformers。有关更多详细信息,请参见最小示例
    • 由于依赖项较多,安装过程可能需要一段时间。请耐心等待。如果您遇到任何问题,可以尝试逐个安装依赖项,每次指定一个标志。
    • 如果在安装过程中遇到任何问题,请随时提出 issue 或联系我们。

    创建一个名为 trellis 的新 conda 环境并安装依赖项:

    . ./setup.sh --new-env --basic --xformers --flash-attn --diffoctreerast --spconv --mipgaussian --kaolin --nvdiffrast
    

    setup.sh 的详细用法可以通过运行 . ./setup.sh --help 查看。

    Usage: setup.sh [OPTIONS]
    Options:
        -h, --help              Display this help message
        --new-env               Create a new conda environment
        --basic                 Install basic dependencies
        --xformers              Install xformers
        --flash-attn            Install flash-attn
        --diffoctreerast        Install diffoctreerast
        --vox2seq               Install vox2seq
        --spconv                Install spconv
        --mipgaussian           Install mip-splatting
        --kaolin                Install kaolin
        --nvdiffrast            Install nvdiffrast
        --demo                  Install all dependencies for demo
    

🤖 预训练模型

我们提供以下预训练模型:

模型描述参数量下载
TRELLIS-image-large大型图像到 3 D 模型1.2 B下载
TRELLIS-text-base基础文本到 3 D 模型342 M即将推出
TRELLIS-text-large大型文本到 3 D 模型1.1 B即将推出
TRELLIS-text-xlarge超大型文本到 3 D 模型2.0 B即将推出

这些模型托管在 Hugging Face 上。您可以在代码中使用它们的仓库名称直接加载模型:

TrellisImageTo3DPipeline.from_pretrained("JeffreyXiang/TRELLIS-image-large")

如果您更喜欢从本地加载模型,您可以从上面的链接下载模型文件并使用文件夹路径加载模型 (应保持文件夹结构):

TrellisImageTo3DPipeline.from_pretrained("/path/to/TRELLIS-image-large")

我的测试

我代大家测试一下,我是在 wsl 2 中部署的,流程跟官方的来,也挺顺利的。

安装

先运行 steup. Sh

我是用 conda 原来的环境安装,所以需要单独安装一下 pytorch:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

还需要装一下 gradio

pip install gradio==4.44.1 gradio_litmodel3d==0.0.1

运行:

python app.py

开始下载模型了,激动😂

效果

用一个小女孩先试试,原图:

结果出来了,还是挺经验的!

05.gif

导入 blender 面也挺合理的。

tr.png

再来个圣诞老人。

效果也不错啊~

06.gif

更多 AI 辅助设计和设计灵感趋势,请关注公众号(设计小站):sjxz 00。

标签