3D 机器学习课程文档
流水线
加入 Hugging Face 社区
并获得增强的文档体验
开始使用
流水线
在本例中,我们将使用预训练的流水线
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
使用这段代码,我们加载并显示著名的猫雕像,用于图像转 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_scale
、num_inference_steps
和elevation
是多视图扩散模型特有的。
结论
恭喜!你已经运行了一个多视图扩散流水线。
那么如何托管你自己的演示呢?
< > 在 GitHub 上更新