3D 机器学习课程文档

Pipeline

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

Pipeline

Open In Colab

在我们的例子中,我们将使用一个预训练的 pipeline

import torch
from diffusers import DiffusionPipeline

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")

模型的名称是 dylanebert/multi-view-diffusion,是 ashawkey/mvdream-sd2.1-diffusers 的镜像。对于任何预训练模型,您都可以在 Hugging Face Hub 上找到模型卡,网址为 https://huggingface.co/<model-name>,其中包含有关模型的信息。

在我们的例子中,我们还需要加载自定义 pipeline(也在 dylanebert/multi-view-diffusion)来使用该模型。这是因为 diffusers 官方不支持 3D。因此,为了本课程的目的,我将模型包装在一个自定义 pipeline 中,使您可以使用它进行 3D 任务。

加载图像

import requests
from PIL import Image
from io import BytesIO


image_url = "https://huggingface.co/datasets/dylanebert/3d-arena/resolve/main/inputs/images/a_cat_statue.jpg"
response = requests.get(image_url)
image = Image.open(BytesIO(response.content))
image

Cat Statue

通过这段代码,我们加载并显示了著名的 猫雕像,用于图像到 3D 的演示。

运行 Pipeline

import numpy as np

def create_image_grid(images):
    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

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

create_image_grid(images)

最后,我们在图像上运行 pipeline。

create_image_grid 函数不是 pipeline 的一部分。它只是一个辅助函数,用于在网格中显示结果。

要运行 pipeline,我们只需将图像转换为归一化的 numpy 数组来准备图像

image = np.array(image, dtype=np.float32) / 255.0

然后,我们将其传递给 pipeline

images = multi_view_diffusion_pipeline("", image, guidance_scale=5, num_inference_steps=30, elevation=0)

其中参数 guidance_scalenum_inference_stepselevation 是多视角扩散模型特有的。

Multi-view Cats

结论

恭喜!您已成功运行多视角扩散 pipeline。

现在,如何托管您自己的演示呢?

< > 在 GitHub 上更新