3D 機器學習課程文件

流水線

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

流水線

Open In Colab

在本例中,我們將使用預訓練的流水線

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>,其中包含有關模型的資訊。

在本例中,我們還需要載入自定義流水線(也在dylanebert/multi-view-diffusion)來使用模型。這是因為 diffusers 官方不支援 3D。因此,出於本課程的目的,我將模型封裝在一個自定義流水線中,允許你將其用於 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 演示。

執行流水線

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)

最後,我們對影像執行流水線。

create_image_grid 函式不是流水線的一部分。它只是一個輔助函式,用於以網格形式顯示結果。

要執行流水線,我們只需透過將影像轉換為歸一化的 numpy 陣列來準備它

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

然後,我們將其傳遞給流水線

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

其中引數guidance_scalenum_inference_stepselevation是多檢視擴散模型特有的。

Multi-view Cats

結論

恭喜!你已經運行了一個多檢視擴散流水線。

那麼如何託管你自己的演示呢?

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.