扩散模型的发展

扩散模型foundation model,GAN,VAE同属于生成领域。
扩散模型的发展从DDPM—>GLIDE----->DALLE2----->Stable Diffusion
DALL-E 2 论文没有详细介绍模型架构,因为它主要扩展了早期的架构GLIDE。

扩散模型的数学原理

扩散模型的灵感来自非平衡热力学。他们定义了一个扩散步骤的马尔可夫链,以缓慢地将随机噪声添加到数据中,然后学习反转扩散过程以从噪声中构建所需的数据样本。下面的图片来自于DDPM的论文。

正向过程
给一个真实的数据分布X0 ~ q(x)(图片)采样的数据点,经过T步骤,不断的给数据添加少量噪声,产生一些列噪声样本X1…XT,最终当T→∞时,xT等价于一个各向同性的高斯分布。
逆向过程
逆向过程从一张随机高斯噪声图片 xt 开始,通过逐步去噪生成最终的结果 x0
具体的数学推导推荐看这个连接https://lilianweng.github.io/posts/2021-07-11-diffusion-models/

扩散模型的引导生成guided generation

文生图:使用文本作为指导生成和文本匹配的图片。分为三种情况:分类器指导,clip指导,无分类器指导。核心思想其实是一样的。

分类器引导classified guided

在去燥生成图像的过程中(扩散模型的逆向过程中),每一步生成的图像都要分类器得到一个分类分数,然后计算这个分数和目标类别的交叉熵损失梯度,然后用这个梯度引导下一步扩散模型过程中的生成的采样。扩散模型和分类器分开独立训练,不需要重新训练扩散模型,比如DDPM扩散模型拿来直接就能用,只需要在生成时加入类别引导。


c这个位置用分类器做引导。

clip做引导CLIP guidance

和分类器引导很像,公式里的s超参数,越大引导的强度越大。g( c)的c是文本,f(xt)中的xt是图像,然后计算图像和文本的相似度去做引导。

clip大模型
该模型可以在共享嵌入空间中为图像或文本输入生成嵌入。可以找到图像和某些文本(例如标题)的嵌入的余弦相似度,可以确定文本与图像的相关性。CLIP 包括两部分,图像编码器 f(x)和字幕编码器 g( c)。在 GLIDE 和 DALL-E 2 中,CLIP 用于监督图像的生成。

无分类器引导 classified-free guided

为了避免必须训练额外的模型,提出了一种无分类器的指导方法。给扩散模型添加一个条件y,再有条件下和无条件下训练模型,预测噪声。

GLIDE大模型

论文连接:https://arxiv.org/abs/2112.10741
代码地址(暂时还没训练):https://github.com/openai/glide-text2im
有了上面的基础知识,终于到了最近一直在看的模型GLIDE。
该模型的作用是使用文本生成图片,它还能够进行图像修复。输入的标签是文本信息,基于引导的扩散模型。
模型详解
该架构是一个 U-Net 类型的模型,结合了卷积层的残差块和注意力块。
输入包括文字标题 c、图像 xt 和时间步长 t。时间步长被转换为谐波嵌入,然后通过线性层进行投影。(?)

输入文本的过程:
将文本 c 编码K 个token 序列,将其输入 到Transformer 模型中。官方代码

def get_text_emb(self, tokens, mask):assert tokens is not Noneif self.cache_text_emb and self.cache is not None:assert (tokens == self.cache["tokens"]).all(), f"Tokens{tokens.cpu().numpy().tolist()}do not match cache{self.cache['tokens'].cpu().numpy().tolist()}"return self.cachexf_in = self.token_embedding(tokens.long())xf_in = xf_in + self.positional_embedding[None]if self.xf_padding:assert mask is not Nonexf_in = th.where(mask[..., None], xf_in, self.padding_embedding[None])xf_out = self.transformer(xf_in.to(self.dtype))if self.final_ln is not None:xf_out = self.final_ln(xf_out)xf_proj = self.transformer_proj(xf_out[:, -1])xf_out = xf_out.permute(0, 2, 1)  # NLC -> NCLoutputs = dict(xf_proj=xf_proj, xf_out=xf_out)if self.cache_text_emb:self.cache = dict(tokens=tokens,xf_proj=xf_proj.detach(),xf_out=xf_out.detach() if xf_out is not None else None,)return outputs

该模型输出 64 x 64 图像,因此他们训练了一个上采样模型,该模型也以文本输入为条件,以生成大小为 256 x 256 的最终输出。
在论文中,他们试验了无分类器和基于 CLIP 的指导。为了支持无分类器指导,他们微调了模型,同时用空序列替换了 20% 的字幕。通过这种方式,模型可以生成文本条件和无条件输出。(?)

OpenAI 尚未发布完整模型,因为它可能会被用来生成有害图像。然而,他们已经发布了一个更小的变体。
更详细的还需要训练模型才能知道吧,先记录到这里吧

扩散模型到GLIDE相关推荐

  1. 从DDPM到GLIDE:基于扩散模型的图像生成算法进展

    前几天,OpenAI在Arxiv上挂出来了他们最新最强的文本-图像生成GLIDE [1],如头图所示,GLIDE能生成非常真实的结果.GLIDE并非基于对抗生成网络或是VQ-VAE类模型所设计,而是采 ...

  2. 扩散模型(Diffusion Model,DDPM,GLIDE,DALLE2,Stable Diffusion)

    随着最近DALLE2和stable diffusion的大火,扩散模型的出色表现丝毫不逊色VAE和GAN,已经形成生成领域的三大方向:VAE.GAN和Diffusion,如上图可以简要看出几类主线模型 ...

  3. 图像生成之扩散模型:靠加入类别条件,效果直达SOTA

    来源:AI蜗牛车 本文约1300字,建议阅读7分钟 比GAN更真实.还懂全景局部多角度构图. OpenAI去年年末推出的新作GLIDE,又让扩散模型小火了一把. 这个基于扩散模型的文本图像生成大模型参 ...

  4. 扩散模型就是自动编码器!DeepMind研究学者提出新观点并论证

    来源:明敏 发自 凹非寺 量子位 | 公众号 QbitAI 由于在图像生成效果上可以与GAN媲美,扩散模型最近成为了AI界关注的焦点. 谷歌.OpenAI过去一年都提出了自家的扩散模型,效果也都非常惊 ...

  5. 图像生成王者不是GAN?扩散模型最近有点火:靠加入类别条件,效果直达SOTA

    博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI OpenAI刚刚推出的年末新作GLIDE,又让扩散模型小火了一把. 这个基于扩散模型的文本图像生成大模型参数规模更小,但生成的图像质量却更高 ...

  6. 李沐论文精读系列五:DALL·E2(生成模型串讲,从GANs、VE/VAE/VQ-VAE/DALL·E到扩散模型DDPM/ADM)

    文章目录 一. 前言 1.1 DALL·E简介 1.2 DALL·E2简介 1.3 文生图模型进展 二. 引言 2.1 摘要 2.2 引言&模型结构 三. 算法铺垫 3.1 GANs 3.2 ...

  7. 大火的扩散模型终于杀到了NLP领域

    从2020年的初出茅庐,到2021年的日趋火热,再到2022年的大放异彩,扩散模型(Diffusion Models) 正在人工智能学术界和工业界获取越来越多的关注. 如果还不是特别了解扩散模型的朋友 ...

  8. 扩散模型又杀疯了!这一次被攻占的领域是...

    文 | Yimin_饭煲 从2020年的初出茅庐,到2021年的日趋火热,再到2022年的大放异彩,扩散模型(Diffusion Models) 正在人工智能学术界和工业界获取越来越多的关注. 如果还 ...

  9. 扩散模型(Diffusion)最新综述+GitHub论文汇总-A Survey On Generative Diffusion

    扩散模型(Diffusion Model)最新综述+GitHub论文汇总-A Survey On Generative Diffusion 本综述来自香港中文大学Pheng-Ann Heng.西湖大学 ...

最新文章

  1. SSIS中的容器和数据流—举例说明数据转换任务
  2. The operation couldn’t be completed. (LaunchServicesError error 0.)
  3. 2013.10u-boot移植之SD保存环境变量
  4. php 字符串进行计算_怎么在php中利用eval对字符串格式进行计算
  5. 计算机二级常备知识,2020年计算机二级Office考试必备题库资料!
  6. Java 分割字符串
  7. Vue-easyui中如何给ComboGrid添加过滤器
  8. 1,3-丁二烯(BD)行业调研报告 - 市场现状分析与发展前景预测
  9. Delphi LiveBinds组件
  10. Call for Presentations!Flink Forward Global 2021 议题征集ing
  11. 华为奇葩面试题:一头牛重800公斤一座桥承重700公斤,请问牛怎么过桥?
  12. java代码分析及分析工具
  13. 网站性能并发测试工具
  14. 在哪里能看到计算机缓存大小,怎么查看电脑硬盘缓存大小
  15. h5页面的写法_一步一步教你如何开发h5页面
  16. Linux内核4.14版本——DMA Engine框架分析(2)_功能介绍及解接口分析(slave client driver)
  17. 中南民族大学 计算机科学学院,中南民族大学 计算机科学学院 蒋天发老师简介 联系方式 手机电话 邮箱...
  18. dcdc aam模式_AAM的完整形式是什么?
  19. LVS均衡负载(一) LVS详解
  20. 说说Java生态圈的那些事儿

热门文章

  1. JAVA毕设项目实验室耗材管理系统(java+VUE+Mybatis+Maven+Mysql)
  2. Nero刻录ISO文件的过程步骤详解
  3. WindowsXP也能启动纯DOS
  4. Java项目源码javaweb花店销售管理系统
  5. 国际顶级的摩托车越野锦标赛落户上海
  6. 基于javaweb的校园班级同学通讯录管理系统(java+ssm+html+jsp+mysql)
  7. java 播放mid_今天编辑了一个播放mid音乐的程序,呵呵,,分享一下我的快乐!...
  8. Unity给游戏对象贴图、从官网下载资源、导入导出
  9. office2010的word没有工具栏
  10. 【SQL开发实战技巧】系列(五):从执行计划看IN、EXISTS 和 INNER JOIN效率,我们要分场景不要死记网上结论