3D 机器学习课程文档

动手实践 (第二部分)

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始使用

动手实践 (第二部分)

Open In Colab

现在轮到您托管自己的演示了!在本部分中,您将

  1. 使用您自己的模型重新运行笔记本。
  2. 使用 Gradio 创建演示。
  3. (可选) 部署您的演示。

重新运行笔记本

在笔记本中,将模型名称替换为您自己的模型名称

import torch
from diffusers import DiffusionPipeline

multi_view_diffusion_pipeline = DiffusionPipeline.from_pretrained(
    "<your-user-name>/<your-model-name>",
    custom_pipeline="dylanebert/multi-view-diffusion",
    torch_dtype=torch.float16,
    trust_remote_code=True,
).to("cuda")

然后,重新运行笔记本。您应该会看到与之前相同的结果。

Multi-view Cats

Gradio 演示

现在,让我们创建一个 Gradio 演示

import gradio as gr

def run(image):
  image = np.array(image, dtype=np.float32) / 255.0
  images = multi_view_diffusion_pipeline("", image, guidance_scale=5, num_inference_steps=30, elevation=0)

  images = [Image.fromarray((img * 255).astype("uint8")) for img in images]

  width, height = images[0].size
  grid_img = Image.new("RGB", (2 * width, 2 * height))

  grid_img.paste(images[0], (0, 0))
  grid_img.paste(images[1], (width, 0))
  grid_img.paste(images[2], (0, height))
  grid_img.paste(images[3], (width, height))

  return grid_img

demo = gr.Interface(fn=run, inputs="image", outputs="image")
demo.launch()

run 方法将前面所有代码组合到一个函数中。然后,gr.Interface 方法使用此函数使用 image 输入和 image 输出创建一个演示。

恭喜!您已为您的模型创建了一个 Gradio 演示。

(可选) 部署您的演示

您可能希望在 Colab 之外运行您的演示。

有很多方法可以做到这一点

选项 1:创建 Space

访问 Hugging Face Spaces 并创建一个新的 Space。选择 Gradio Space SDK。在 Space 中创建一个名为 app.py 的新文件,并将 Gradio 演示中的代码粘贴到其中。将演示的 requirements.txt 复制到 Space 中。

有关完整示例,请查看此 Space,然后点击右上角的 Files 以查看源代码。

注意:此方法需要 GPU 来公开托管,这需要付费。但是,您可以按照 选项 3 中的说明免费在本地运行演示。

选项 2:Gradio 部署

Gradio 使用 gradio deploy 命令简化了将您的演示部署到服务器的过程。

有关更多详细信息,请查看 Gradio 文档

选项 3:在本地运行

要在本地运行,只需将代码复制到 Python 文件中并在您的机器上运行即可。

完整源文件应如下所示

import gradio as gr
import numpy as np
import torch
from diffusers import DiffusionPipeline
from PIL import Image

multi_view_diffusion_pipeline = DiffusionPipeline.from_pretrained(
    "dylanebert/multi-view-diffusion",
    custom_pipeline="dylanebert/multi-view-diffusion",
    torch_dtype=torch.float16,
    trust_remote_code=True,
).to("cuda")


def run(image):
    image = np.array(image, dtype=np.float32) / 255.0
    images = multi_view_diffusion_pipeline(
        "", image, guidance_scale=5, num_inference_steps=30, elevation=0
    )

    images = [Image.fromarray((img * 255).astype("uint8")) for img in images]

    width, height = images[0].size
    grid_img = Image.new("RGB", (2 * width, 2 * height))

    grid_img.paste(images[0], (0, 0))
    grid_img.paste(images[1], (width, 0))
    grid_img.paste(images[2], (0, height))
    grid_img.paste(images[3], (width, height))

    return grid_img


demo = gr.Interface(fn=run, inputs="image", outputs="image")
demo.launch()

要在虚拟 Python 环境中设置和运行此演示,请运行以下命令

# Setup
python -m venv venv
source venv/bin/activate
pip install -r https://huggingface.co/spaces/dylanebert/multi-view-diffusion/raw/main/requirements.txt

# Run
python app.py

注意:这已在使用 Python 3.10.12 和 CUDA 12.1 的 NVIDIA RTX 4090 上进行了测试。

< > 更新 在 GitHub 上