Stable Diffusion之Scheduler模块比对生成结果

这篇具有很好参考价值的文章主要介绍了Stable Diffusion之Scheduler模块比对生成结果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

替换Stable Diffusion的Scheduler模块并对结果进行分析

Stable Diffusion之Scheduler模块比对生成结果

diffusers包含多个用于扩散过程的预置scheduler function,用于接收经过训练的模型的输出,扩散过程正在迭代的样本,以及返回去噪样本的时间步长。在其他扩散模型又被称为采样器。

Schedulers

Schedulers define the methodology for iteratively adding noise to an image or for updating a sample based on model outputs.

  • adding noise in different manners represent the algorithmic processes to train a diffusion model by adding noise to images.
  • for inference, the scheduler defines how to update a sample based on an output from a pretrained model.

Schedulers are often defined by a noise schedule and an update rule to solve the differential equation solution.

加载 Stable Diffusion pipeline

from huggingface_hub import login
from diffusers import DiffusionPipeline
import torch

# first we need to login with our access token
login()

# Now we can download the pipeline
pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=torch.float16)
# Move it to GPU
pipeline.to("cuda")
# Access the scheduler
pipeline.scheduler

StableDiffusion模型各组件默认配置

StableDiffusionPipeline {
“_class_name”: “StableDiffusionPipeline”,
“_diffusers_version”: “0.11.1”,
“feature_extractor”: [
“transformers”,
“CLIPFeatureExtractor”
],
“requires_safety_checker”: true,
“safety_checker”: [
“stable_diffusion”,
“StableDiffusionSafetyChecker”
],
“scheduler”: [
“diffusers”,
“PNDMScheduler”
],
“text_encoder”: [
“transformers”,
“CLIPTextModel”
],
“tokenizer”: [
“transformers”,
“CLIPTokenizer”
],
“unet”: [
“diffusers”,
“UNet2DConditionModel”
],
“vae”: [
“diffusers”,
“AutoencoderKL”
]
}


StableDiffusion的scheduler模块默认配置

PNDMScheduler {
“_class_name”: “PNDMScheduler”,
“_diffusers_version”: “0.11.1”,
“beta_end”: 0.012,
“beta_schedule”: “scaled_linear”,
“beta_start”: 0.00085,
“clip_sample”: false,
“num_train_timesteps”: 1000,
“prediction_type”: “epsilon”,
“set_alpha_to_one”: false,
“skip_prk_steps”: true,
“steps_offset”: 1,
“trained_betas”: null
}

实验思路

我们可以看到StableDiffusion的调度器类型是PNDMScheduler。现在我想比较这个调度器与其他调度器的性能。首先,我们定义了一个prompt,我们将在这个prompt上测试所有不同的调度器。为保证生成图像具有高度相似性,先用random seed创建了一个生成器,它将确保我们可以生成类似的图像:

prompt = "A photograph of an astronaut riding a horse on Mars, high resolution, high definition."

generator = torch.Generator(device="cuda").manual_seed(8)
image = pipeline(prompt, generator=generator).images[0]
image

Stable Diffusion之Scheduler模块比对生成结果


每个调度器的属性schedulermix .compatibles 定义了所有兼容的调度器。查看Stable Diffusion管道的所有可用的、兼容的调度程序。

pipeline.scheduler.compatibles

[diffusers.schedulers.scheduling_euler_ancestral_discrete.EulerAncestralDiscreteScheduler,
diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler,
diffusers.schedulers.scheduling_ddim.DDIMScheduler,
diffusers.schedulers.scheduling_euler_discrete.EulerDiscreteScheduler,
diffusers.schedulers.scheduling_ddpm.DDPMScheduler,
diffusers.schedulers.scheduling_pndm.PNDMScheduler,
diffusers.schedulers.scheduling_dpmsolver_singlestep.DPMSolverSinglestepScheduler,
diffusers.schedulers.scheduling_heun_discrete.HeunDiscreteScheduler,
diffusers.schedulers.scheduling_lms_discrete.LMSDiscreteScheduler]

PNDMScheduler类的配置

pipeline.scheduler.config

FrozenDict([(‘num_train_timesteps’, 1000),
(‘beta_start’, 0.00085),
(‘beta_end’, 0.012),
(‘beta_schedule’, ‘scaled_linear’),
(‘trained_betas’, None),
(‘skip_prk_steps’, True),
(‘set_alpha_to_one’, False),
(‘prediction_type’, ‘epsilon’),
(‘steps_offset’, 1),
(‘_class_name’, ‘PNDMScheduler’),
(‘_diffusers_version’, ‘0.11.1’),
(‘clip_sample’, False)])

使用此配置实例化一个与管道兼容的不同类的调度器。这里将调度程序更改为DDIMScheduler。并重新运行pipeline比较生成质量

from diffusers import DDIMScheduler

pipeline.scheduler = DDIMScheduler.from_config(pipeline.scheduler.config)

generator = torch.Generator(device="cuda").manual_seed(8)
image = pipeline(prompt, generator=generator).images[0]
image

Stable Diffusion之Scheduler模块比对生成结果

换成采用更少timestep的采样器LMSDiscreteScheduler

from diffusers import LMSDiscreteScheduler

pipeline.scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)

generator = torch.Generator(device="cuda").manual_seed(8)
image = pipeline(prompt, generator=generator).images[0]
image

Stable Diffusion之Scheduler模块比对生成结果

DPMSolverMultistepScheduler提供了最好权衡生成速度/生成质量的Scheduler,可以运行只有20步。

from diffusers import DPMSolverMultistepScheduler

pipeline.scheduler = DPMSolverMultistepScheduler.from_config(pipeline.scheduler.config)

generator = torch.Generator(device="cuda").manual_seed(8)
image = pipeline(prompt, generator=generator, num_inference_steps=20).images[0]
image

Stable Diffusion之Scheduler模块比对生成结果

采用不同的scheduler用于文本引导图像翻译效果:

大多数图像看起来非常相似,质量也非常相似,但DPMSolver所需生成时间最短,可在20个·inference_step生成结果。调度器的选择还要取决于具体的用例。

Stable Diffusion之Scheduler模块比对生成结果文章来源地址https://www.toymoban.com/news/detail-476898.html

到了这里,关于Stable Diffusion之Scheduler模块比对生成结果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Stable Diffusion生成图片

    画质 masterpiece,best quality,illustration,extremely detail CG unity 8k wallpaper,ultra-detailed,depth of field 杰作,最佳质量,插图,极度详细的8K壁纸,超高详细度,景深 画风 Chinese ink painting,water color,oil painting,sketch,realistic 中国水墨画,水彩,油画,素描,写实 人物 1girl,solo,upper body,black hair,

    2024年02月07日
    浏览(40)
  • 使用stable diffusion生成图片

    requirements.txt 内容如下 保存为stable_diffusion.py并执行  

    2024年02月13日
    浏览(75)
  • Stable Diffusion 生成高清图片

    记录一下使用 Stable Diffusion 生成高清图片使用的插件和过程。 打开 Stable Diffusion,单击 “扩展” = “从网址安装”, 输入下面项目,单击 “安装”, 扩展的 git 仓库网址: https://github.com/Coyote-A/ultimate-upscale-for-automatic1111 然后单击 “已安装\\\",确认 “ultimate-upscale-for-automatic1

    2024年02月08日
    浏览(100)
  • Stable Diffusion 图像生成测试

    最近图像多模态生成模型特别火,简单尝试了下。 项目地址:GitHub - CompVis/stable-diffusion: A latent text-to-image diffusion model 由于本地GPU比较弱鸡,使用了Google的colab进行了简单尝试,colab地址: https://colab.research.google.com/github/huggingface/notebooks/blob/main/diffusers/stable_diffusion.ipynb 被效果

    2024年02月16日
    浏览(42)
  • Stable diffusion游戏图标生成讲解

    hello大家好,这里是ai绘画刚上路的萌新张怼怼,专注训练游戏图标。今天教大家如何用 stable diffusion中的模型生成游戏图标中技能图标的图片。(新手教程,如有遗漏、不足之处还望大家包涵并指出,共同完善游戏图标生成教程) 先给大家看一下生成的忍者神龟和剑。 以上

    2024年02月09日
    浏览(33)
  • 使用stable diffusion 生成作品流程

      AOTUDL 云部署 1.算力市场选用RTX3090/RTX A5000 2.点击算法镜像noval ai 3.0和Lora scripts 配置python环境及其他 3.启动stable diffusion和Lora scripts 4.装配模型:可在如Civitai上下载标注有 CKPT 的模型,有模型才能作画。下载的模型放入下载后文件路径下的 models/Stable-diffusion 目录。 5.Stable D

    2024年02月10日
    浏览(37)
  • Stable Diffusion 如何生成字体拼图

    像我的微信头像这样的图片怎么生成呢?    首先准备一张白纸黑字的图,放到ControlNet里,然后选下面几项:    选好以后就可以出图了:  

    2024年02月12日
    浏览(41)
  • stable diffusion webui中的modules/processing模块

    modules/processing.py-process_images() modules/processing.py-process_images_inner() 这个函数和scripts配合就是webui中文生图以及图生图的主pipeline,在processing中调用StableDiffusionProcessingTxt2Img和StableDiffusionProcessingImg2Img就是最核心的2个生图接口。 1.script在哪里做初始化? script由scripts.py控制 2.第三方

    2024年02月04日
    浏览(30)
  • stable diffusion扩展Deforum生成视频

    先要搭建sd webui环境, 然后进入界面 搜索Deforum,点击install等待安装即可,安装成功后重启webui,就能看到Deforum选项 此时,你可能会看到这个提示 ControlNet not found. Please install it :) 这是因为还需要另一个扩展 sd-webui-controlnet,方法同上 安装完重启webui红色提示就消失了 后面

    2024年02月11日
    浏览(43)
  • 〔022〕Stable Diffusion 之 生成视频 篇

    如果想将视频换成另一种风格,或者想将视频中的人物替换掉,可以使用 mov2mov 插件 插件地址: https://github.com/Scholar01/sd-webui-mov2mov 由于该插件未收录在扩展列表中,所以需要从网址安装

    2024年02月09日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包