当前位置: 首页 > wzjs >正文

常见的网站建设技术苏州商城网站建设电话

常见的网站建设技术,苏州商城网站建设电话,网站的建设宗旨,建站品牌大全深入理解Diffusers: 从基础到Stable Diffusion Diffusers是一个功能强大且灵活的扩散模型工具箱,它让构建和部署扩散系统变得简单直观。本文将带你深入了解Diffusers的核心组件,并通过实例展示如何从零构建扩散系统。 核心组件 Diffusers工具箱的核心是模型(Model)和调度器(S…

深入理解Diffusers: 从基础到Stable Diffusion

在这里插入图片描述

Diffusers是一个功能强大且灵活的扩散模型工具箱,它让构建和部署扩散系统变得简单直观。本文将带你深入了解Diffusers的核心组件,并通过实例展示如何从零构建扩散系统。

核心组件

Diffusers工具箱的核心是模型(Model)和调度器(Scheduler):

  • 模型: 负责预测噪声残差
  • 调度器: 负责管理去噪过程
  • Pipeline: 将模型和调度器组合在一起,提供便捷的推理接口

从基础Pipeline开始

让我们先看一个简单的例子 - DDPM Pipeline:

from diffusers import DDPMPipelineddpm = DDPMPipeline.from_pretrained("google/ddpm-cat-256").to("cuda")
image = ddpm(num_inference_steps=25).images[0]
image.save("ddpm_generated_cat.png")

这个Pipeline内部包含了:

  • UNet2DModel: 用于预测噪声残差
  • DDPMScheduler: 用于管理去噪过程
    在这里插入图片描述

拆解Pipeline

让我们看看如何手动构建这个系统:

  1. 加载模型和调度器:
from diffusers import DDPMScheduler, UNet2DModelscheduler = DDPMScheduler.from_pretrained("google/ddpm-cat-256")
model = UNet2DModel.from_pretrained("google/ddpm-cat-256").to("cuda")
  1. 设置时间步:
scheduler.set_timesteps(50)
  1. 创建随机噪声:
import torch
sample_size = model.config.sample_size
noise = torch.randn((1, 3, sample_size, sample_size), device="cuda")
  1. 实现去噪循环:
input = noise
for t in scheduler.timesteps:with torch.no_grad():noisy_residual = model(input, t).sampleprevious_noisy_sample = scheduler.step(noisy_residual, t, input).prev_sampleinput = previous_noisy_sample# 将生成的图像保存
image = (input / 2 + 0.5).clamp(0, 1)
image = image.detach().cpu().permute(0, 2, 3, 1).numpy()[0]
image = (image * 255).round().astype("uint8")
image = Image.fromarray(image)
image.save("manual_ddpm_generated_cat.png")

生成的图片:
在这里插入图片描述

Stable Diffusion Pipeline

Stable Diffusion是一个更复杂的文本到图像潜空间扩散模型。它包含以下组件:

  1. VAE (变分自编码器)
  2. CLIP文本编码器
  3. UNet条件模型
  4. 调度器

让我们看看如何构建Stable Diffusion系统:

  1. 加载所有组件:
from transformers import CLIPTextModel, CLIPTokenizer
from diffusers import AutoencoderKL, UNet2DConditionModel, UniPCMultistepSchedulertorch_device = "cuda" if torch.cuda.is_available() else "cpu"
vae = AutoencoderKL.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="vae").to(torch_device)
tokenizer = CLIPTokenizer.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="tokenizer")
text_encoder = CLIPTextModel.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="text_encoder").to(torch_device)
unet = UNet2DConditionModel.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="unet").to(torch_device)
scheduler = UniPCMultistepScheduler.from_pretrained("CompVis/stable-diffusion-v1-4", subfolder="scheduler")
  1. 设置参数和生成文本嵌入:
prompt = ["a photograph of an astronaut riding a horse"]
batch_size = 1
height = 512
width = 512
guidance_scale = 7.5
generator = torch.manual_seed(0)text_input = tokenizer(prompt, padding="max_length", max_length=tokenizer.model_max_length, return_tensors="pt")
text_embeddings = text_encoder(text_input.input_ids.to(torch_device))[0]
  1. 创建潜空间噪声:
latents = torch.randn((batch_size, unet.config.in_channels, height // 8, width // 8),generator=generator,device=torch_device,
)
  1. 实现去噪循环:
scheduler.set_timesteps(50)for t in scheduler.timesteps:latent_model_input = torch.cat([latents] * 2)latent_model_input = scheduler.scale_model_input(latent_model_input, timestep=t)with torch.no_grad():noise_pred = unet(latent_model_input, t, encoder_hidden_states=text_embeddings).samplenoise_pred_uncond, noise_pred_text = noise_pred.chunk(2)noise_pred = noise_pred_uncond + guidance_scale * (noise_pred_text - noise_pred_uncond)latents = scheduler.step(noise_pred, t, latents).prev_sample
  1. 解码和保存图像:
latents = 1 / 0.18215 * latents
with torch.no_grad():image = vae.decode(latents).sampleimage = (image / 2 + 0.5).clamp(0, 1)
image = image.detach().cpu().permute(0, 2, 3, 1).numpy()[0]
image = (image * 255).round().astype("uint8")
image = Image.fromarray(image)
image.save("stable_diffusion_generated.png")

在这里插入图片描述

总结

Diffusers的设计理念是让构建扩散系统变得简单直观。通过理解模型和调度器的工作原理,你可以:

  1. 构建自己的扩散系统
  2. 自定义和优化现有Pipeline
  3. 尝试不同的模型和调度器组合

无论你是想构建简单的图像生成系统,还是复杂的文本到图像模型,Diffusers都能为你提供所需的工具和灵活性。

下一步

  • 探索Diffusers库中的其他Pipeline
  • 尝试构建自己的Pipeline
  • 实验不同的模型和调度器组合
  • 优化推理性能

Diffusers正在不断发展,欢迎加入社区,一起推动扩散模型的发展!


文章转载自:

http://8qftBhbi.xqtqm.cn
http://deAtuYnV.xqtqm.cn
http://CHsRI7BK.xqtqm.cn
http://5bMxqXQj.xqtqm.cn
http://wqAqcD2g.xqtqm.cn
http://ODoVAFVp.xqtqm.cn
http://Q8NwjdK2.xqtqm.cn
http://SaYwMZUr.xqtqm.cn
http://gRcHYFvv.xqtqm.cn
http://pwptAhE0.xqtqm.cn
http://TQUfEWCM.xqtqm.cn
http://dgnDPmD8.xqtqm.cn
http://tHAeKWOT.xqtqm.cn
http://kmvGP8Zr.xqtqm.cn
http://e2rf9boG.xqtqm.cn
http://X0RBvBvu.xqtqm.cn
http://473v7soJ.xqtqm.cn
http://CuEB3gWc.xqtqm.cn
http://2v2kwilp.xqtqm.cn
http://JvvTrZoX.xqtqm.cn
http://lTD3vjue.xqtqm.cn
http://0tgWEuyc.xqtqm.cn
http://H7e3xMTj.xqtqm.cn
http://LZKMcnB1.xqtqm.cn
http://ploewWdn.xqtqm.cn
http://jpJdZhvd.xqtqm.cn
http://pmm8Nahy.xqtqm.cn
http://shq3PIIH.xqtqm.cn
http://6sH734AJ.xqtqm.cn
http://UZd3VGXh.xqtqm.cn
http://www.dtcms.com/wzjs/609462.html

相关文章:

  • WordPress搭建交互式网站导航网站怎么做seo
  • 做推广的网站需要注意什么北京知名vi设计公司
  • 网站后期维护需要注意什么禁用软件app大全
  • 彩神app官方网站开发网站建设都有哪些书
  • 网站开发如何报价大型网页设计服务公司
  • 郑州手机网站制作公司安徽服饰网站建设
  • 新增备案网站要关闭吗通江移动网站建设
  • 嵌入式软硬件开发广州seo优化
  • 深圳网络广告推广公司seo网站建设教程
  • 珠海电子商务网站建设中国电力建设公司排名
  • 有几家做网站的公司网站建设上线
  • 宝安国内知名网站建设比较好的ftp查看网站后台密码
  • 菏泽住房和城乡建设部网站外贸网站建设公司服务
  • 建立问答类的网站上海平台网站建设平台
  • 网站做百度收录的意义网站建设 域名 空间
  • 太原建设银行网站企业管理信息系统有哪些
  • 一个服务器可以做多个网站吗服装移动网站策划案
  • 个人接做网站多少钱网站配色方案
  • 企业网站设置费用WordPress移除顶部恢复
  • 哪个淘宝客网站最好网站制作困难
  • 优秀企业网站欣赏电商运营培训机构
  • 物业管理网站开发背景电商平台系统分销系统
  • 有没有做网站源代码 修改的郑州网站建设郑州
  • 找建设项目的网站关键词查询优化
  • 电商网站前端架构设计营销活动推广方案
  • 北京专业网站制作服务青海网站建设公司哪家好
  • 网站建设的内部风险兰州软件开发公司
  • 丽水连都区建设局网站博主回应网络热梗
  • 银川市住房和城乡建设网站国家电网网站开发图片素材
  • 移动网站建设信息天津百度推广开户