微软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的代码,并按照以下步骤在本地运行:
- 克隆存储库:
git clone --recurse-submodules https://github.com/microsoft/TRELLIS.git
cd TRELLIS
- 创建一个名为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的代码,并按照以下步骤在本地运行:
- 克隆存储库:
git clone --recurse-submodules https://github.com/microsoft/TRELLIS.git
cd TRELLIS
- 创建一个名为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多平台发布
标签:AI,模型,生成,--,video,Trellis,Microsoft,3D From: https://www.cnblogs.com/tunancbq/p/18675801