stable diffusion实践操作-SD原理

系列文章目录

本文专门开一节写SD原理相关的内容,在看之前,可以同步关注:
stable diffusion实践操作


文章目录

  • 系列文章目录
  • 前言
  • 一、原理说明
    • 1.1、出图原理
      • 1.1.1 AI画画不是和人一样,从0开始,而是一个去噪点的过程:
      • 1.1.2 逆向去噪
      • 1.1.3 AI如何学会去噪点的
    • 1.2、出图机制
      • 1.2.1 文字编码 CLIP
      • 1.2.2 图片绘制
        • 1.2.2.1 随机种子和采样器
        • 1.2.2.2 迭代步数
        • 1.2.2.3 采样方法
      • 1.2.3放大图片
  • 总结


前言

(后期补充)


一、原理说明

1.1、出图原理

1.1.1 AI画画不是和人一样,从0开始,而是一个去噪点的过程:

在这里插入图片描述

1.1.2 逆向去噪

所有的人图片都是从一张噪点图开始的。根据目标生成一张猫的图片,将噪点一步步转化为猫在这里插入图片描述

1.1.3 AI如何学会去噪点的

AI首先将图片一步步加入噪点。
在这里插入图片描述
所以任何一张图都可以逆向这个过程
在这里插入图片描述
在这里插入图片描述

1.2、出图机制

  1. 将输入的文字进行编码传入潜空间。
  2. 在潜空间根据文字的描述,进行图片的绘制
  3. 将图片从潜空间的压缩态进行放大,补充细节,提升分辨率
    在这里插入图片描述

1.2.1 文字编码 CLIP

计算机不能直接理解文本和图片
在这里插入图片描述
而是通过特征向量来标记
在这里插入图片描述
而这一项工作是通过CLIP模型来完成的
在这里插入图片描述
在这里插入图片描述

clip模型包括文字编码器和图片编码器,将文字和图片都编码成向量
在这里插入图片描述
所以CLIP设置的层数越高,图片和文字相关度越低,一般设置为2就可以了。

1.2.2 图片绘制

SD绘制图片内容的时候,并不是直接绘制512512的图片,而是绘制核心内容,6464,然后再将图片放大还原。
在这里插入图片描述
所以绘图的实际过程就是去噪
在这里插入图片描述

1.2.2.1 随机种子和采样器

SD会根据随机种子生成一张正态分布的噪点图,然后根据传入的文字,加入是狗,去向量数据库中搜索,生成狗的去噪方式。去噪方式又是采样器进行调用的
在这里插入图片描述
采样器会调用Unet模型,对图片中的噪点预测,生成噪点预测图
在这里插入图片描述
让噪点图减去预测出的全部噪点,生成最终的模型图片
在这里插入图片描述

1.2.2.2 迭代步数

Unet模型在噪点多的时候,预测并不理想,所以我们并不一次性全部采纳其预测的噪点,而是每次只采用一部分噪点,循环多次


这个过程就是下面的迭代步数
在这里插入图片描述
设置过小,图片与文本匹配度较低,过大,则会画蛇添足,一般我们设置为20-40步即可
在这里插入图片描述

1.2.2.3 采样方法

采样所采用的算法,不同算法消耗的时间不同。
在这里插入图片描述
采样器时间对比
在这里插入图片描述
一般推荐大家 使用DPM++ SDE Karas/DPM2++ SDE Karas
对比:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.3放大图片

在潜空间产生的图片比较小,我们需要VAE将其放大,优化细节。
在这里插入图片描述

这就是整个过程
在这里插入图片描述


总结

例如:以上就是今天要讲的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/99889.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2基础学习

vue基础学习 Vue基础指令v-show 和 v-ifv-on指令v-bind指令v-bind操作classv-bind 操作stylev-for 指令练习:图书管理案例v-modelv-model原理 指令修饰符v-model指令修饰符click.stop-》阻止冒泡按键修饰符阻止默认行为 计算属性计算属性简写computed计算属性VS方法…

剪枝基础与实战(5): 剪枝代码详解

对模型进行剪枝,我们只对有参数的层进行剪枝,我们基于BatchNorm2d对通道重要度 γ \gamma γ参数进行稀释训练。对BatchNorm2d及它的前后层也需要进行剪枝。主要针对有参数的层:Conv2d、BatchNorm2d、Linear。但是我们不会对Pool2d 层进行剪枝,因为Pool2d只用来做下采样,没…

​LeetCode解法汇总1123. 最深叶节点的最近公共祖先

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个有…

以antd为例 React+Typescript 引入第三方UI库

本文 我们来说说 第三方UI库 其实应用市场上的 第三方UI库都是非常优秀的 那么 react 我们比较熟的肯定还是 antd 我们还是来用它作为演示 这边 我们先访问他的官网 https://3x.ant.design/index-cn 点击开始使用 在左侧 有一个 在 TypeScript 中使用 通过图标我们也可以看出…

vs code调试rust乱码问题解决方案

在terminal中 用chcp 65001 修改一下字符集,就行了。有的博主推荐 修改 区域中的设置,这会引来很大的问题。千万不要修改如下设置:

机器学习算法系列————决策树(二)

1.什么是决策树 用于解决分类问题的一种算法。 左边是属性,右边是标签。 属性选择时用什么度量,分别是信息熵和基尼系数。 这里能够做出来特征的区分。 下图为基尼系数为例进行计算。 下面两张图是对婚姻和年收入的详细计算过程(为GINI系…

DataTable扩展 列转行方法(2*2矩阵转换)

源数据 如图所示 // <summary>/// DataTable扩展 列转行方法&#xff08;2*2矩阵转换&#xff09;/// </summary>/// <param name"dtSource">数据源</param>/// <param name"columnFilter">逗号分隔 如SDateTime,PM25,PM10…

基于SpringBoot+Vue架构的药物咨询平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着人们对健康和医疗…

文末送书!谈谈原型模式在JAVA实战开发中的应用(附源码+面试题)

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;3年JAVA全栈开发经验&#xff0c;专注JAVA技术、系统定制、远程指导&#xff0c;致力于企业数字化转型&#xff0c;CSDN博客专家&#xff0c;蓝桥云课认证讲师。 本文讲解了 Java 设计模式中的原型模式&#xff0c;并给…

Android后退堆栈

修改代码 现在的ItemClick使得用户单击其中一个项目时就会跳转&#xff0c;现在要修改其使得在一个小屏幕设备上才会这样做&#xff0c;在一个大屏幕设备上运行用户选择一个训练项目时在右边的片段显示响应的信息。 希望片段处理后退的方式&#xff1a;假设用户在手机上运行这…

tf和pytorch每轮epoch显示输出的auc是如何计算的

tf和pytorch每轮epoch显示输出的auc是如何计算的&#xff1f; tf的计算 近似 ROC 或 PR 曲线的 AUC&#xff08;曲线下面积&#xff09;。 tf1 通过计算真阳性&#xff0c;假阳性&#xff0c;假阴性&#xff0c;真阴性值的计算策略。 tensorflow AUC & streaming_auc_我…

leetcode 20.有效括号 栈的简单应用

题目 数据结构 栈 code var isValid function(s) {// 空串和长度为奇数的字符串一定不符合要求if(!s || s.len%2){return true}let match {(: ),[: ],{: }}let stack []let len s.lengthfor(let i0; i<len; i){const ch s[i]if(ch[ || ch( || ch{){// 如果是左括号,…