Microsoft 推出 Trellis — 一种将图像转换为 3D 对象的 AI 模型

微软Trellis:开启3D生成新纪元

  • 阅读时长:8分钟
  • 图片来源:微软研究院

近日热文:全网最全的神经网络数学原理(代码和公式)直观解释
欢迎关注知乎和公众号的专栏内容
LLM架构专栏
知乎LLM专栏
知乎【柏企
公众号【柏企科技说】【柏企阅文

几周前,微软推出了一种名为Trellis的全新3D生成方法,可用于创建多功能且高质量的3D资源。该模型使用统一的结构化潜在表示(SLAT),通过将稀疏3D网格与多视图视觉特征相结合,解码为多种格式,如辐射场、3D高斯和网格 。

听起来可能有点复杂,但简单来说,Trellis非常擅长创建看起来逼真且与你提供的描述或图片相匹配的高质量3D模型。对于艺术家、开发者和设计师而言,它是一个能够高效制作出令人惊叹的3D内容的强大工具。

我过去曾谈论过基于人工智能的3D对象生成器,但Trellis在速度和质量方面尤其令人印象深刻。

Trellis如何工作?

该方法使用整流流变换器,与现有方法相比取得了更优异的结果,并展现出灵活的编辑能力。

该模型在包含50万个对象的大型3D资源数据集上进行训练,通过大量实验和用户研究表明,它在质量和通用性方面超越了现有方法。

Trellis中的3D对象生成是一个两阶段的过程,使用一种名为“结构化潜在表示(SLAT)”的特殊代码 。

具体工作流程如下:

第一阶段:构建结构

  • 稀疏结构:Trellis首先使用一组“活动体素”创建对象的基本框架。体素就像是3D空间中的微小立方体,活动体素勾勒出对象的大致形状。可以想象搭建乐高模型时,先把主要的积木拼在一起以得到大致形状。
  • 结构压缩:为了提高效率,Trellis使用变分自动编码器(VAE)技术将这个框架压缩为一组更小的指令。
  • 生成框架:Trellis使用一种名为“整流流变换器”的特殊人工智能,将这些精简后的指令转化为对象框架的详细计划。这个计划会准确地告诉计算机在3D空间中放置活动体素的位置。

第二阶段:添加细节

  • 局部潜在表示:框架搭建好后,Trellis使用“局部潜在表示”为每个活动体素添加细节。这些潜在表示包含了对象外观的信息,如颜色和纹理。
  • 特征聚合:为了确定每个局部潜在表示的样子,Trellis使用强大的视觉模型DINOv2。这个视觉模型从多个不同角度分析对象的图片,并提取重要特征,如边缘、形状和颜色。
  • 生成细节:Trellis使用另一个整流流变换器将这些特征转化为详细的局部潜在表示。然后将这些潜在表示附加到活动体素上,从而完成3D模型的创建。

这个两阶段的过程使Trellis能够高效地创建高质量的3D模型。它利用人工智能和计算机视觉的力量,从文本描述或图片中理解并重新创建复杂的3D对象。

Trellis可以将这种SLAT表示转换为各种3D模型格式,例如:

  • 3D高斯
  • 辐射场
  • 网格

看看这些高质量的示例:

Trellis压缩结构和添加细节的方式,让人想起专业3D艺术家的工作流程 —— 从基础网格开始,然后分层添加细节。然而,与人类艺术家不同的是,Trellis完成这些工作所需的时间极短。

如何试用Trellis?

你可以在HuggingFace上试用Trellis。上传一张图片,然后点击“生成”即可创建一个3D资源。如果图片有alpha通道,它将被用作遮罩。你可以调整生成设置或GLB提取设置,也可以保留默认设置。

以下是示例3D输出:

如果你对生成的3D资源感到满意,点击“Extract GLB”提取GLB文件并下载。你还可以在GLTF Viewer等在线工具中查看3D资源。

注意:高斯文件可能非常大(约50MB),显示和下载可能需要一些时间。

以下是更多示例:

  • 提示词:具有金银设计的球形机器人。
  • 结果:整体看起来相当不错。金银纹理增添了不错的效果,从远处看很棒。但如果放大,会发现它仍然是低多边形模型。细节不够精细,有些边缘看起来很粗糙。不过,对于如此快速生成的模型来说,很难挑剔。如果你追求速度,并且该模型对于大多数用例来说已经足够好,那么这个结果是相当不错的。

这里还有一个以图片作为输入的示例。我真的很喜欢生成的3D模型与原始参考图片的高度相似性。整体形状和结构非常准确,这非常令人印象深刻。但是当你关注较小的细节,比如绳索或侧面复杂的纹理时,它们并不完美。即便如此,从正常观看距离看,它仍然看起来相当不错。对于在几秒钟内生成的模型来说,它比我预期的要好。如果你能接受一些小瑕疵,这是一个非常好的起点。

Trellis还擅长根据文本提示创建单个3D对象的多个变体。这个功能非常适合快速迭代设计。

不仅如此,Trellis在创作复杂且充满活力的3D艺术设计方面也表现出色。

这个3D场景的质量给我留下了深刻的印象。微软凭借这个高质量、可扩展的模型,为3D生成设定了新的标准。事实上,一些用户已经将使用Trellis创建的模型进行了3D打印,这太酷了!

在本地运行Trellis

你可以在GitHub上找到Trellis的代码,并按照以下步骤在本地运行:

  1. 克隆存储库
git clone --recurse-submodules https://github.com/microsoft/TRELLIS.git
cd TRELLIS
  1. 创建一个名为trellis的新conda环境并安装依赖项
. ./setup.sh --new-env --basic --xformers --flash-attn --diffoctreerast --spconv --mipgaussian --kaolin --nvdiffrast

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

Usage: setup.sh [OPTIONS]
Options:
 -h,

以下是如何使用预训练模型进行3D资源生成的示例:

import os
os.environ['SPCONV_ALGO'] = 'native'
import imageio
from PIL import Image
from trellis.pipelines import TrellisImageTo3DPipeline
from trellis.utils import render_utils, postprocessing_utils

pipeline = TrellisImageTo3DPipeline.from_pretrained("JeffreyXiang/TRELLIS-image-large")
pipeline.cuda()
image = Image.open("assets/example_image/T.png")
outputs = pipeline.run(
    image,
    seed=1,
)
video = render_utils.render_video(outputs['gaussian'][0])['color']
imageio.mimsave("sample_gs.mp4", video, fps=30)
video = render_utils.render_video(outputs['radiance_field'][0])['color']
imageio.mimsave("sample_rf.mp4", video, fps=30)
video = render_utils.render_video(outputs['mesh'][0])['normal']
imageio.mimsave("sample_mesh.mp4", video, fps=30)
glb = postprocessing_utils.to_glb(
    outputs['gaussian'][0],
    outputs['mesh'][0],
    simplify=0.95,
    texture_size=1024,
)
glb.export("sample.glb")
outputs['gaussian'][0].save_ply("sample.ply")

运行结果如下:

  • sample_gs.mp4:展示3D高斯表示的视频
  • sample_rf.mp4:展示辐射场表示的视频
  • sample_mesh.mp4:展示网格表示的视频
  • sample.glb:包含提取的带纹理网格的GLB文件
  • sample.ply:包含3D高斯表示的PLY文件

总结

Trellis不仅生成的模型质量不错,而且生成速度非常快,能在几秒钟内完成,这是向前迈出的一大步,也为未来的迭代发展展现出巨大的潜力。

不过,它并非完美无缺。复杂的模型,尤其是涉及人类特征的模型,可能会使它出现问题。但对于那些不懂或不想学习3D建模的人来说,它仍然是一个了不起的工具。

作为一名开发者,我迫不及待地想要获得API访问权限。能够快速创建3D资源开启了众多可能性。游戏开发者和动画师会发现它非常有用,我很期待看到社区利用它创造出什么。

相关文章:
本文发布于生成式人工智能板块。在领英上与我们联系,关注Zeniteq,及时了解最新的人工智能资讯。

订阅我们的时事通讯和YouTube频道,获取关于生成式人工智能的最新消息和更新。让我们一起塑造人工智能的未来! # 微软Trellis:开启3D生成新纪元

  • 阅读时长:8分钟
  • 发布时间:6天前
  • 图片来源:微软研究院

几周前,微软推出了一种名为Trellis的全新3D生成方法,可用于创建多功能且高质量的3D资源。该模型使用统一的结构化潜在表示(SLAT),通过将稀疏3D网格与多视图视觉特征相结合,解码为多种格式,如辐射场、3D高斯和网格 。

听起来可能有点复杂,但简单来说,Trellis非常擅长创建看起来逼真且与你提供的描述或图片相匹配的高质量3D模型。对于艺术家、开发者和设计师而言,它是一个能够高效制作出令人惊叹的3D内容的强大工具。

我过去曾谈论过基于人工智能的3D对象生成器,但Trellis在速度和质量方面尤其令人印象深刻。

Trellis如何工作?

该方法使用整流流变换器,与现有方法相比取得了更优异的结果,并展现出灵活的编辑能力。

该模型在包含50万个对象的大型3D资源数据集上进行训练,通过大量实验和用户研究表明,它在质量和通用性方面超越了现有方法。

Trellis中的3D对象生成是一个两阶段的过程,使用一种名为“结构化潜在表示(SLAT)”的特殊代码 。

具体工作流程如下:

第一阶段:构建结构

  • 稀疏结构:Trellis首先使用一组“活动体素”创建对象的基本框架。体素就像是3D空间中的微小立方体,活动体素勾勒出对象的大致形状。可以想象搭建乐高模型时,先把主要的积木拼在一起以得到大致形状。
  • 结构压缩:为了提高效率,Trellis使用变分自动编码器(VAE)技术将这个框架压缩为一组更小的指令。
  • 生成框架:Trellis使用一种名为“整流流变换器”的特殊人工智能,将这些精简后的指令转化为对象框架的详细计划。这个计划会准确地告诉计算机在3D空间中放置活动体素的位置。

第二阶段:添加细节

  • 局部潜在表示:框架搭建好后,Trellis使用“局部潜在表示”为每个活动体素添加细节。这些潜在表示包含了对象外观的信息,如颜色和纹理。
  • 特征聚合:为了确定每个局部潜在表示的样子,Trellis使用强大的视觉模型DINOv2。这个视觉模型从多个不同角度分析对象的图片,并提取重要特征,如边缘、形状和颜色。
  • 生成细节:Trellis使用另一个整流流变换器将这些特征转化为详细的局部潜在表示。然后将这些潜在表示附加到活动体素上,从而完成3D模型的创建。

这个两阶段的过程使Trellis能够高效地创建高质量的3D模型。它利用人工智能和计算机视觉的力量,从文本描述或图片中理解并重新创建复杂的3D对象。

Trellis可以将这种SLAT表示转换为各种3D模型格式,例如:

  • 3D高斯
  • 辐射场
  • 网格

看看这些高质量的示例:

Trellis压缩结构和添加细节的方式,让人想起专业3D艺术家的工作流程 —— 从基础网格开始,然后分层添加细节。然而,与人类艺术家不同的是,Trellis完成这些工作所需的时间极短。

如何试用Trellis?

你可以在HuggingFace上试用Trellis。上传一张图片,然后点击“生成”即可创建一个3D资源。如果图片有alpha通道,它将被用作遮罩。你可以调整生成设置或GLB提取设置,也可以保留默认设置。

以下是示例3D输出:

如果你对生成的3D资源感到满意,点击“Extract GLB”提取GLB文件并下载。你还可以在GLTF Viewer等在线工具中查看3D资源。

注意:高斯文件可能非常大(约50MB),显示和下载可能需要一些时间。

以下是更多示例:

  • 提示词:具有金银设计的球形机器人。
  • 结果:整体看起来相当不错。金银纹理增添了不错的效果,从远处看很棒。但如果放大,会发现它仍然是低多边形模型。细节不够精细,有些边缘看起来很粗糙。不过,对于如此快速生成的模型来说,很难挑剔。如果你追求速度,并且该模型对于大多数用例来说已经足够好,那么这个结果是相当不错的。

这里还有一个以图片作为输入的示例。我真的很喜欢生成的3D模型与原始参考图片的高度相似性。整体形状和结构非常准确,这非常令人印象深刻。但是当你关注较小的细节,比如绳索或侧面复杂的纹理时,它们并不完美。即便如此,从正常观看距离看,它仍然看起来相当不错。对于在几秒钟内生成的模型来说,它比我预期的要好。如果你能接受一些小瑕疵,这是一个非常好的起点。

Trellis还擅长根据文本提示创建单个3D对象的多个变体。这个功能非常适合快速迭代设计。

不仅如此,Trellis在创作复杂且充满活力的3D艺术设计方面也表现出色。

这个3D场景的质量给我留下了深刻的印象。微软凭借这个高质量、可扩展的模型,为3D生成设定了新的标准。事实上,一些用户已经将使用Trellis创建的模型进行了3D打印,这太酷了!

在本地运行Trellis

你可以在GitHub上找到Trellis的代码,并按照以下步骤在本地运行:

  1. 克隆存储库
git clone --recurse-submodules https://github.com/microsoft/TRELLIS.git
cd TRELLIS
  1. 创建一个名为trellis的新conda环境并安装依赖项
. ./setup.sh --new-env --basic --xformers --flash-attn --diffoctreerast --spconv --mipgaussian --kaolin --nvdiffrast

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

Usage: setup.sh [OPTIONS]
Options:
 -h,

以下是如何使用预训练模型进行3D资源生成的示例:

import os
os.environ['SPCONV_ALGO'] = 'native'
import imageio
from PIL import Image
from trellis.pipelines import TrellisImageTo3DPipeline
from trellis.utils import render_utils, postprocessing_utils

pipeline = TrellisImageTo3DPipeline.from_pretrained("JeffreyXiang/TRELLIS-image-large")
pipeline.cuda()
image = Image.open("assets/example_image/T.png")
outputs = pipeline.run(
    image,
    seed=1,
)
video = render_utils.render_video(outputs['gaussian'][0])['color']
imageio.mimsave("sample_gs.mp4", video, fps=30)
video = render_utils.render_video(outputs['radiance_field'][0])['color']
imageio.mimsave("sample_rf.mp4", video, fps=30)
video = render_utils.render_video(outputs['mesh'][0])['normal']
imageio.mimsave("sample_mesh.mp4", video, fps=30)
glb = postprocessing_utils.to_glb(
    outputs['gaussian'][0],
    outputs['mesh'][0],
    simplify=0.95,
    texture_size=1024,
)
glb.export("sample.glb")
outputs['gaussian'][0].save_ply("sample.ply")

本文由mdnice多平台发布

posted @ 2025-01-16 21:37  柏企  阅读(892)  评论(0)    收藏  举报