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

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.lryc.cn/news/157248.html

相关文章:

  • C++ Primer Plus第十三章编程练习答案
  • Elasticsearch:wildcard - 通配符搜索
  • 配置类安全问题学习小结
  • IMX6ULL移植篇-uboot源码目录
  • SAP MM学习笔记27- 购买依赖(采购申请)
  • C++零碎记录(八)
  • 基于matlab的扩频解扩误码率完整程序分享
  • 算法:轮转数组---循环取模运算
  • Vue教程
  • 算法之双指针题型:
  • vue传递给后端时间格式问题
  • php使用jwt作登录验证
  • 【zlm】 PTS DTS
  • 【两周学会FPGA】从0到1学习紫光同创FPGA开发|盘古PGL22G开发板学习之DDR3 IP简单读写测试(六)
  • 第6章 内核模块符号导出实验(iTOP-RK3568开发板驱动开发指南 )
  • Android12.0首次开机默认授予app运行时权限(去掉运行时授权弹窗)第二种方法
  • conda和Python的虚拟环境如何结合使用,以及二者之间到底有什么区别?
  • 宇凡微YE09合封芯片,集成高性能32位mcu和2.4G芯片
  • 使用perf_analyzer和model-analyzer测试tritonserver的模型性能超详细完整版
  • docker 部署springboot(成功、截图)
  • VMware ubuntu空间越用越大
  • stm32 学习笔记:GPIO输出
  • css换行
  • 面试算法-常用数据结构
  • 【动态规划刷题 10】等差数列划分 最长湍流子数组
  • redis 配置与优化
  • 数据结构例题代码及其讲解-递归与树
  • Jenkins | 流水线构建使用expect免密交互时卡住,直接退出
  • git修改默认分支
  • Android Studio开发入门教程:如何更改APP的图标?