stable diffusion推理过程代码梳理

这篇具有很好参考价值的文章主要介绍了stable diffusion推理过程代码梳理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在看stable diffusion,想梳理一下代码流程,以便之后查阅

从txt2img.py开始看

1.首先是对文本进行编码

stable diffusion推理过程代码梳理

(1)调用的是 stable-diffusion/ldm/models/diffusion/ddpm.py的get_learned_conditioning函数

stable diffusion推理过程代码梳理

(2) 第555行表示使用CLIP的文本编码器对输入的文本进行编码,调用的是stable-diffusion/ldm/modules/encoders/modules.py中的FrozenCLIPEmbedder

stable diffusion推理过程代码梳理

 2.进行采样操作

stable diffusion推理过程代码梳理

 (1)调用plms中的采样操作,在stable-diffusion/ldm/models/diffusion/plms.py中

stable diffusion推理过程代码梳理

stable diffusion推理过程代码梳理生成时间步长self.ddim_timesteps= [  1  21  41  61  81 101 121 141 161 181 201 221 241 261 281 301 321 341 361 381 401 421 441 461 481 501 521 541 561 581 601 621 641 661 681 701 721 741 761 781 801 821 841 861 881 901 921 941 961 981] 

 (2)调用self.plms_sampling函数 

stable diffusion推理过程代码梳理

时间步的循环是从这里开始的

调用self.p_sample_plms函数stable diffusion推理过程代码梳理

 stable diffusion推理过程代码梳理调用stable-diffusion/ldm/models/diffusion/ddpm.py的apply_model函数

stable diffusion推理过程代码梳理

调用同文件下的DiffusionWrapper类,key="crossattn",c_crossattn=torch.cat([unconditional_conditioning, c])

stable diffusion推理过程代码梳理 调用了stable-diffusion/ldm/modules/diffusionmodules/openaimodel.py里面的UnetModel类

stable diffusion推理过程代码梳理

self.input_blocks的定义为

stable diffusion推理过程代码梳理

TimestepEmbedSequential的定义为

stable diffusion推理过程代码梳理

其中,TimestepBlock类型的layer为ResBlock,TimestepEmbedSequential的结构图可以表示成下图。

 stable diffusion推理过程代码梳理

ResBlock的代码如下

stable diffusion推理过程代码梳理

stable diffusion推理过程代码梳理

SpatialTransforme在stable-diffusion/ldm/modules/attention.py中定义如下

stable diffusion推理过程代码梳理

BasicTransformerBlock展示了图像和文本的融合过程

stable diffusion推理过程代码梳理

 CrossAttention的定义如下,图像作为Q,文本作为K和Vstable diffusion推理过程代码梳理

 UNetModel的模型结构可参考如下Stable Diffusion 原理介绍与源码分析(一) - 知乎 (zhihu.com)

2.关于图像解码部分

得到去噪后的图像特征后进行解码

stable diffusion推理过程代码梳理

调用的是ddpm中的decode_first_stage函数 ,调用AutoencoderKL中的解码器

stable diffusion推理过程代码梳理

AutoencoderKL的解码器输出的就是最后的图像

stable diffusion推理过程代码梳理

想要了解更多扩散模型的知识,推荐这个视频54、Probabilistic Diffusion Model概率扩散模型理论与完整PyTorch代码详细解读_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-510148.html

到了这里,关于stable diffusion推理过程代码梳理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Stable Diffusion/NovelAI Diffusion的AMD GPU加速推理探索】

    测试机子配置: 1:AMD RX6600(显存8g)+i5 12600KF 16g内存 (台式机) 2:RTX 3070 laptop(显存8g)+i7 10870H 32g内存 (HP暗夜精灵笔记本) 两台电脑平均性能差不多,当然N卡肯定更好一点 这边我们还是MS大发好,用MS的DirectML推理框架推理,虽然据小道消息反馈DML推理效率远不如Cuda,但是要知道

    2024年02月01日
    浏览(40)
  • 在英特尔 CPU 上加速 Stable Diffusion 推理

    前一段时间,我们向大家介绍了最新一代的 英特尔至强 CPU (代号 Sapphire Rapids),包括其用于加速深度学习的新硬件特性,以及如何使用它们来加速自然语言 transformer 模型的 分布式微调 和 推理。 英特尔至强处理器: https://www.intel.com/content/www/us/en/products/details/processors/xeon/scal

    2024年02月09日
    浏览(57)
  • 基于onnx模型和onnx runtime推理stable diffusion

    直接用diffusers的pipeline: 在pipeline_onnx_stable_diffusion的基础上修改得到的直接调用onnx模型版本,可以用于其他推理引擎推理参考: pipe_onnx_simple.py onnx_utils_simple.py 生成1张512x512图的shape信息

    2024年02月11日
    浏览(39)
  • 使用 PAI-Blade 优化 Stable Diffusion 推理流程

    AIGC是人工智能计算领域里发展迅速的重要业务。Stable Diffusion 是其中最热门的开源模型,受到广泛关注。然而,随着应用场景不断扩大,Stable Diffusion所面临的推理时延和计算成本问题也越来越突出。 PAI-Blade 是 PAI 推出的通用推理优化工具,可以通过模型系统联合优化,使模

    2024年02月09日
    浏览(52)
  • 使用 PAI-Blade 优化 Stable Diffusion 推理流程(二)

    上一篇中,我们使用了 PAI-Blade 优化了 diffusers 中 Stable Diffusion 模型。本篇,我们继续介绍使用 PAI-Blade 优化 LoRA 和 Controlnet 的推理流程。相关优化已经同样在  registry.cn-beijing.aliyuncs.com/blade_demo/blade_diffusion 镜像中可以直接使用。同时,我们将介绍 Stable-Diffusion-webui 中集成 PA

    2024年02月09日
    浏览(43)
  • 【深度学习】SDXL tensorRT 推理,Stable Diffusion 转onnx,转TensorRT

    juggernautXL_version6Rundiffusion.safetensors文件是pth pytroch文件,需要先转为diffusers 的文件结构。 FP16在后面不好操作,所以最好先是FP32: 有了diffusers 的文件结构,就可以转onnx文件。 项目:https://huggingface.co/docs/diffusers/optimization/onnx stabilityai/stable-diffusion-xl-1.0-tensorrt 项目:https://hug

    2024年01月19日
    浏览(55)
  • Stable diffusion LoRA 训练过程

    1、使用diffusers-0.14.0, stabel-diffusion 模型 v-1.5版本 下载diffusers-0.14.0 并解压,新建文件test.py, 写入以下: import torch from diffusers import StableDiffusionPipeline pipe = StableDiffusionPipeline.from_pretrained(\\\"./stable-diffusion-v1-5\\\") pipe = pipe.to(\\\"cuda\\\") prompt = \\\"a photo of an astronaut riding a horse on mars\\\" image = pi

    2024年02月16日
    浏览(55)
  • Stable Diffusion 预置提示词优化过程

    Stable Diffusion/MidJourney对于不同的使用者有两种完全不同的作用和用法: 对于设计师等个人核心价值就在图片本身的角色,SD是提效工具。使用时会进行大量的尝试、调整、批量对比。 对于使用集成模型的用户,SD是赋能工具。在原来不能插图的地方插图,但是这些地方一定是

    2024年02月10日
    浏览(41)
  • 搭建Stable Diffusion WebUI详细过程

    为了方便,这里直接选择Vultr提供的已安装Anaconda的Ubuntu 22.04系统。 如果你自己电脑有足够的显存,你也可以在自己电脑上搭建,因为我电脑只有2GB显存和8GB运行内存,所以完全不够用,我就选择云端搭建。 如果你也是想快速搭建,你也可以选择云端搭建,这里推荐我知道的

    2024年02月09日
    浏览(40)
  • 如何使用切片辅助超推理 SAHI 技术对 YOLOv8 进行推理过程和代码实现

    前面章节已经详细描述了 小目标检测-切片辅助超推理(SAHI )技术原理介绍         引入 SAHI ,这是一种专为小物体检测而设计的尖端流水线。SAHI 利用切片辅助推理和微调技术的力量,彻底改变了检测对象的方式。SAHI 物体检测的与众不同之处在于它与任何物体检测器的

    2024年02月08日
    浏览(68)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包