stable diffusion中的u net

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

Stable Diffusion 包含几个核心的组件:

  • 一个文本编码器(在 Stable Diffusion 中使用 CLIP 的 ViT-L/14 的文本编码器),用于将用户输入的 Prompt 文本转化成 text embedding
  • 一个 Image Auto Encoder-Decoder,用于将 Image 编码成隐含向量 stable diffusion中的u net ,或者从隐含向量 stable diffusion中的u net中还原出图片;
  • 一个 UNET 结构,使用 UNET 进行迭代降噪,在文本引导下进行多轮预测,将随机高斯噪声 stable diffusion中的u net 转化成图片隐含向量 stable diffusion中的u net

 

这三个部分是相互独立的,其中最重要的是 UNET 结构。UNET 是从噪音中生成图像的主要组件,在预测过程中,通过反复调用 UNET,将 UNET 预测输出的 noise slice原有的噪声中去除,得到逐步去噪后的图像表示。Stable Diffusion Model 的 UNET 包含约 860M 的参数,以 float32 的精度编码大概需要 3.4G 的存储空间。整个 UNET 的如下图所示:

Stable Diffusion Unet 结构

图中列出了 UNET 的核心组件和各组件的参数数量。其中主要的组件包括:

ResnetBlock

左下角小图展示了 ResnetBlock 的结构。Resnet 接受两个输入:latent 向量,和 timestep_embedding。latent 向量经过卷积变换后和经过全连接投影的 timestep_embedding 做加和,再和经过 skip connection 的原始 latent 向量做加和,送入另一个卷积层,得到经 Resnet 编码变换后的 latent 输出。

注意左侧的 ResnetBlock 和右侧的 ResnetBlock 的细微不同。左侧的 Resnet Block 接受的 latent 向量从 UNET 的上一层传入,而右侧的 ResnetBlock 除了接受 UNET 上一层的结果 latent 外,还需要接受左侧对应的 UNET 层的输出,两个 latent concat 起来作为 输入。所以,如果右侧的 ResnetBlock 上层的输出结果 shape 为 (64, 64, 320),左侧对应 UNET 层的输出结果为 (64, 64, 640),那么这个 ResnetBlock 得到的输入 latent 的 shape 为 (64, 64, 960)。

Spatial Transformer(Cross Attention)

右下角小图展示了 Spatial Transformer 的结构。Spatial Transformer 同样接受两个输入:经过上一个网络模块(一般为 ResnetBlock)处理和变换后的 latent 向量,及对应的 context embedding(文本 prompt 经过 CLIP 编码后的输出)。latent 向量对应的是是图片 token,和 context embedding 做 cross attention 之后,得到变换后的 latent 向量(通过注意力机制,将 token 对应的语义信息注入到模型认为应该影响的图片 patch 中)。 Spatial Transformer 输出的 shape 和输出的 shape 保持一致,但在对应的位置上融合了语义信息。

DownSample/UpSample

DownSample 将 latent 向量的前两个轴的大小缩减 50%,而 UpSample 将 latent 向量的前两个轴的大小增大一倍。DownSample 使用一个步长为 2 的二维卷积来实现,同时将输入 latent 向量的 channel 数变化成输出 latent 向量的 channel 数;而 UpSample 使用插值算法来实现,在插值之后进行一个步长为 1 的卷积,同时通过一个步长为 1 的二维卷积来将输入 latent 向量的 channel 数变化成输出 latent 向量的 channel 数。

需要注意的是,在整个 UNET 执行一次的过程中,timestep_embedding 和 content embedding 始终保持不变。而在 UNET 反复执行多次的过程中,timestep_embedding 每次都会发生变化,而 content embedding 始终保持不变。在迭代过程中,每次 UNET 输出的 noise_slice 都原有的 latent 向量相减,作为下次迭代时,UNET 的 Latent 输入。文章来源地址https://www.toymoban.com/news/detail-485920.html

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

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

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

相关文章

  • stable diffusion webui中的sampler

    Stable Diffusion-采样器篇 - 知乎 采样器:Stable Diffusion的webUI中,提供了大量的采样器供我们选择,例如Eular a, Heum,DDIM等,不同的采样器之间究竟有什么区别,在操作时又该如何进行选择,本文将会详细讲解采样器是如何工作的,以及各种采… https://zhuanlan.zhihu.com/p/621083328 h

    2024年02月09日
    浏览(43)
  • stable diffusion中的u net

    Stable Diffusion 包含几个核心的组件: 一个 文本编码器(在 Stable Diffusio n 中使用 CLIP 的 ViT-L/14 的文本编码器),用于将用户输入的 Prompt 文本转化成 text embedding ; 一个 Image Auto Encoder-Decoder ,用于将 Image 编码成隐含向量   ,或者从隐含向量  中还原出图片; 一个 UNET 结构,

    2024年02月09日
    浏览(24)
  • 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 硬核生存指南:WebUI 中的 GFPGAN

    本篇文章聊聊 Stable Diffusion WebUI 中的核心组件,强壮的人脸图像面部画面修复模型 GFPGAN 相关的事情。 本篇文章的主角是开源项目 TencentARC/GFPGAN,和上一篇文章《Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer》提到的项目在某种程度上算是“开源项目的竞争者”。 有趣的是

    2024年02月14日
    浏览(36)
  • Stable Diffusion 硬核生存指南:WebUI 中的 VAE

    本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0) 本文作者: 苏洋 创建时间: 2023年07月30日 统计字数: 11485字 阅读时间: 23分钟阅读 本文链接: https://soulteary.com/2023/07/30/stable-diffusion-hardcore-survival-guide-vae-in-webu

    2024年02月14日
    浏览(55)
  • Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer

    本篇文章聊聊 Stable Diffusion WebUI 中的核心组件,强壮的人脸图像面部画面修复模型 CodeFormer 相关的事情。 在 Stable Diffusion WebUI 项目中,源码 modules 目录中,有一个有趣的目录叫做 CodeFormer ,它就是本文的主角啦。 CodeFormer 是一个很棒的开源项目sczhou/CodeFormer,被应用在许多项

    2024年02月14日
    浏览(36)
  • 使用 Stable Diffusion 画你想象中的变形金刚

    ConceptArt, ai robot, fiction, ConceptArt, ai robot, fiction lowres, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name, lowres, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal qual

    2024年02月13日
    浏览(32)
  • stable diffusion webui 下载和使用civitai中的模型

    C站网址为:https://civitai.com/。注:这里需要科学上网 1.选择想要的模型,点击【Download】按钮,这里演示【Deliberate】模型的下载和使用 2.将下载的模型,存放到【/models/Stable-diffusion】目录中 1.在模型下载页中,如上图,图片右下角的【i】按钮,点击【Copy Generation Data】即可复

    2024年02月17日
    浏览(53)
  • 简单聊聊AI绘画中的SD(Stable Diffusion)是什么

    聊到AI绘画,基本上就会聊到SD这个概念,毕竟作为开源可以本地部署的AI绘画软件,SD可能是目前的唯一选择,不管是webUI或者ComfyUI,还有国内的很多套壳绘画AI,都是sd作为基础进行二次优化的。那么SD到底是个啥,这篇文章就结合我个人的理解简单跟大家聊聊。 SD全称是S

    2024年03月20日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包