当前位置:   article > 正文

K-huggingface官网以及diffusers基本使用方法 https://huggingface.co_huggingface官网怎么连接

huggingface官网怎么连接

https://huggingface.co

主要看这几个

教程

1 Deconstruct a basic pipeline

读取scheduler 和模型

  1. from diffusers import DDPMScheduler, UNet2DModel
  2. scheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
  3. model = UNet2DModel.from_pretrained("google/ddpm-cat-256", use_safetensors=True).to("cuda")

设置scheduler的去噪声步骤

scheduler.set_timesteps(50)

置调度器时间步创建一个张量,其中包含均匀间隔的元素,在本例中为50。每个元素对应于模型对图像去噪的时间步长。当你稍后创建去噪循环时,你将迭代这个张量来去噪图像:

可以看出DDPM会自动平均分布

  1. scheduler.timesteps
  2. tensor([980, 960, 940, 920, 900, 880, 860, 840, 820, 800, 780, 760, 740, 720,
  3. 700, 680, 660, 640, 620, 600, 580, 560, 540, 520, 500, 480, 460, 440,
  4. 420, 400, 380, 360, 340, 320, 300, 280, 260, 240, 220, 200, 180, 160,
  5. 140, 120, 100, 80, 60, 40, 20, 0])

创建一些与期望输出相同形状的随机噪声:

batch 是1 输入维度是3
因为是VAE
HW

  1. import torch
  2. sample_size = model.config.sample_size
  3. noise = torch.randn((1, 3, sample_size, sample_size), device="cuda")

现在编写一个循环来遍历时间步长。
在每个时间步,模型执行UNet2DModel.forward()传递并返回带噪声的残差。
调度程序的step()方法接受噪声残差、时间步长和输入,并预测前一个时间步长的图像。
该输出成为去噪循环中模型的下一个输入,它将重复,直到到达时间步长数组的末尾。

  1. input = noise
  2. for t in scheduler.timesteps:
  3. with torch.no_grad():
  4. noisy_residual = model(input, t).sample
  5. previous_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sample
  6. input = previous_noisy_sample

最后一步是将去噪后的输出转换成图像:

  1. from PIL import Image
  2. import numpy as np
  3. image = (input / 2 + 0.5).clamp(0, 1).squeeze()
  4. image = (image.permute(1, 2, 0) * 255).round().to(torch.uint8).cpu().numpy()
  5. image = Image.fromarray(image)
  6. image

2 Deconstruct the Stable Diffusion pipeline

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/264207
推荐阅读
相关标签
  

闽ICP备14008679号