找回密码
 立即注册
查看: 703|回复: 1

Shap-E:面向3D模型的生成式AI

[复制链接]

1

主题

0

回帖

20

积分

新手上路

积分
20
发表于 2023-8-4 17:37:19 | 显示全部楼层 |阅读模式
OpenAI 方才发布了 Shap-E,这是一种基于文本提示和图像创建 3D 资产的生成模型,能够生成带纹理的网格和神经辐射场 ,从而实现各种 3D 输出。


保举:用NSDT设计器快速搭建可编程3D场景。
在本教程中,我们将引导你在 Google Colab(免费)上设置 Shap-E,运行代码以按照文本提示和图像生成 3D 对象。 感激 Google Colab,你不需要强大的 GPU,因为我们将使用 Google 提供的GPU。
我们正在运行的代码可以在这里找到(取自openai/shap-e Github):
1、快速演示

在这个简短的演示中,我们将在 Google Colab 上安装和运行 Shap-E。
2、在 Google Colab 上设置 Shap-E

打开 Google Colab
单击“文件”>“新建笔记本”以创建一个新的 Colab 笔记本。
3、在 Google Colab 上启用 GPU

然后,我们需要在我们的Colab笔记本启用图形措置单元 (GPU)。 它凡是是深度学习等资源密集型任务所必需的。
要在 Google Colab 中启用 GPU,请按照以下法式操作:

  • 已打开新的 Colab 笔记本。
  • 单击顶部东西栏中的“运行时”菜单。
  • 从下拉菜单中选择“更改运行时类型”。
  • 在“运行时类型”对话框中,从“硬件加速器”中选择“GPU”



  • 单击“保留”以应用更改。
4、安装Shap-E

在 Google Colab 中,我们需要先从 GitHub 克隆 Shap-E 存储库,然后安装所需的包。 为此,请按照下列法式操作:
法式 1. 在 Colab 笔记本的第一个单元格中,粘贴以下代码:
!git clone https://github.com/openai/shap-e.git此命令将 Shap-E 存储库从 GitHub 克隆到你的 Colab 环境。 它会为你下载使用 Shap-E 的代码、示例和所需文件。
通过单击播放按钮或按 Shift + Enter 运行单元格。


法式 2. 在新单元格中,粘贴以下代码:
%cd shap-e此命令将当前工作目录更改为 shap-e 文件夹,这是我们在上一步中克隆 Shap-E 存储库的位置。 我们需要在这个文件夹中安装所需的包。


通过单击播放按钮或按 Shift + Enter 运行单元格。
法式 3. 在另一个新单元格中,粘贴以下代码:
!pip install -e .此命令会在你的 Colab 环境中安装 Shap-E 所需的包。 -e 标识表记标帜以“可编纂”模式安装包,这意味着对包文件所做的任何更改都将反映在已安装的包中,而无需从头安装。
运行单元以完成安装。


此刻已克隆 Shap-E 存储库并安装了所需的包,可以继续使用本教程前面提供的代码生成 3D 对象。
5、使用 Shap-E 从文本生成 3D 对象

要按照文本提示生成 3D 对象,请执行以下法式:
法式 1. 在 Colab 笔记本的新单元格中,粘贴以下代码:
import torch
from shap_e.diffusion.sample import sample_latents
from shap_e.diffusion.gaussian_diffusion import diffusion_from_config
from shap_e.models.download import load_model, load_config
from shap_e.util.notebooks import create_pan_cameras, decode_latent_images, gif_widget

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
xm = load_model('transmitter', device=device)
model = load_model('text300M', device=device)
diffusion = diffusion_from_config(load_config('diffusion'))

batch_size = 4
guidance_scale = 15.0
prompt = ”a shark”

latents = sample_latents(
    batch_size=batch_size,
    model=model,
    diffusion=diffusion,
    guidance_scale=guidance_scale,
    model_kwargs=dict(texts=[prompt] * batch_size),
    progress=True,
    clip_denoised=True,
    use_fp16=True,
    use_karras=True,
    karras_steps=64,
    sigma_min=1e-3,
    sigma_max=160,
    s_churn=0,
)

render_mode = 'nerf'  # you can change this to 'stf'
size = 64  # this is the size of the renders; higher values take longer to render.

cameras = create_pan_cameras(size, device)
for i, latent in enumerate(latents):
    images = decode_latent_images(xm, latent, cameras, rendering_mode=render_mode)
    display(gif_widget(images))此代码设置必要的导入、加载 Shap-E 模型并配置生成参数,例如文本提示和衬着选项。 此示例中的文本提示是一条鲨鱼,但您可以将其更改为您想要生成的任何对象。
Step 2. 运行cell按照文字提示生成3D物体。 输出将显示为动画 GIF,从分歧角度显示生成的 3D 对象。


可以通过更改代码中的 prompt、render_mode 和 size 变量来试验分歧的文本提示和呈现选项。
6、将生成的 3D 对象保留为网格

要将生成的 3D 对象保留为网格文件(PLY 格式),请执行以下法式:
法式 1. 在一个新单元格中,粘贴以下代码:
from shap_e.util.notebooks import decode_latent_mesh

for i, latent in enumerate(latents):
    with open(f'example_mesh_{i}.ply', 'wb') as f:
        decode_latent_mesh(xm, latent).tri_mesh().write_ply(f)法式 2. 运行单元将生成的 3D 对象保留为 PLY 文件。 这些文件将保留在你的 Colab 环境中的 shap-e 文件夹中。
它们将保留为名为 example_mesh_0.ply 的文件。


第 3 步。要将生成的 PLY 文件下载到当地计算机,请单击 Colab 左侧栏中的文件夹图标,导航到 shape-e 文件夹,然后右键单击要下载的 PLY 文件。 选择“下载”将它们保留到你的当地计算机。
此刻您可以在任何撑持 PLY 文件的 3D 建模软件中使用这些生成的 3D 对象。


7、使用 Shap-E 从图像生成 3D 对象

还可以使用 Shap-E 从图像生成 3D 对象。
为此,首先我们将使用示例中提供的示例图像。



首先下载该图像并将其上传到 Google Colab 的 shap-e 目录中。
只需将鼠标悬停在左侧文件浏览器中的目录上,你就会看到一个三点菜单。 点击它然后点击上传,上传corgi.png。


接下来,假设你启用了 GPU 并安装了 Shap-E,运行以下代码:
import torch

from shap_e.diffusion.sample import sample_latents
from shap_e.diffusion.gaussian_diffusion import diffusion_from_config
from shap_e.models.download import load_model, load_config
from shap_e.util.notebooks import create_pan_cameras, decode_latent_images, gif_widget
from shap_e.util.image_util import load_image

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

xm = load_model('transmitter', device=device)
model = load_model('image300M', device=device)
diffusion = diffusion_from_config(load_config('diffusion'))

batch_size = 4
guidance_scale = 3.0

image = load_image(”example_data/corgi.png”)

latents = sample_latents(
    batch_size=batch_size,
    model=model,
    diffusion=diffusion,
    guidance_scale=guidance_scale,
    model_kwargs=dict(images=[image] * batch_size),
    progress=True,
    clip_denoised=True,
    use_fp16=True,
    use_karras=True,
    karras_steps=64,
    sigma_min=1e-3,
    sigma_max=160,
    s_churn=0,
)

render_mode = 'nerf' # you can change this to 'stf' for mesh rendering
size = 64 # this is the size of the renders; higher values take longer to render.

cameras = create_pan_cameras(size, device)
for i, latent in enumerate(latents):
    images = decode_latent_images(xm, latent, cameras, rendering_mode=render_mode)
    display(gif_widget(images))成果似乎并不那么好。 但但愿通过一些调整或使用其他图像,你会得到更好的成果。


8、结束语

OpenAI 的 Shap-E 是一个强大的东西,使用户能够从文本和图像生成 3D 对象。
通过操作 Google Colab,你可以轻松设置和运行 Shap-E,无需任何复杂的安装或强大的硬件。
<hr/>原文链接:Shap-E实战3D模型生成 - BimAnt

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

0

主题

5

回帖

13

积分

新手上路

积分
13
发表于 2023-8-4 17:38:14 | 显示全部楼层
牛逼! 玩了一下 生成的质量还是堪忧,到真正辅助设计师建模还是有很远的距离
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-11-23 16:02 , Processed in 0.059869 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表