K-huggingface官网以及diffusers基本使用方法 https://huggingface.co

https://huggingface.co

主要看这几个

教程

1 Deconstruct a basic pipeline

读取scheduler 和模型

from diffusers import DDPMScheduler, UNet2DModel

scheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
model = UNet2DModel.from_pretrained("google/ddpm-cat-256", use_safetensors=True).to("cuda")

设置scheduler的去噪声步骤

scheduler.set_timesteps(50)

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

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

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

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

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

import torch

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

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

input = noise

for t in scheduler.timesteps:
    with torch.no_grad():
        noisy_residual = model(input, t).sample
    previous_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sample
    input = previous_noisy_sample

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

from PIL import Image
import numpy as np

image = (input / 2 + 0.5).clamp(0, 1).squeeze()
image = (image.permute(1, 2, 0) * 255).round().to(torch.uint8).cpu().numpy()
image = Image.fromarray(image)
image

2 Deconstruct the Stable Diffusion pipeline

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机视觉-Archer

图像分割没有团队的同学可加群

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值