AI绘画神器DALLE 3的解码器:一步生成的扩散模型之Consistency Models

news2025/1/12 9:03:27

前言

关于为何写此文,说来同样话长啊,历程如下

  1. 我司LLM项目团队于23年11月份在给一些B端客户做文生图的应用时,对比了各种同类工具,发现DALLE 3确实强,加之也要在论文100课上讲DALLE三代的三篇论文,故此文的2.3节中重点写了下DALLE 3的训练细节:AI绘画与多模态原理解析:从CLIP、BLIP到DALLE 3、Stable Diffusion、MDJ
  2. 在精读DALLE 3的论文时,发现其解码器用到了Consistency Models

    当然,后来OpenAI首届开发者大会还正式发布了这个模型,让我对它越发好奇
  3. Consistency Models的第一作者宋飏也证实了该模型是DALLE 3的解码器

    而宋飏不算扩散圈的新人,因为早在2019年,斯坦福一在读博士宋飏和其导师通过此文《Generative Modeling by Estimating Gradients of the Data Distribution》提出了一种新方法来构建生成模型:即不需要估计数据的概率分布(高维曲面),相反,它估计的是分布的梯度(可以看成是高维曲面的斜率)
  4. 至此,已确定必须得研究下这个「AI绘画神器DALLE 3的解码器:一步生成的扩散模型之Consistency Models」了

且为照顾到不同读者对该模型了解的需求程度,本文会分为三个部分,一步一步、循序渐进、由浅入深,大家可以根据自身的需要重点看到哪一层(有的看到第一层即可,有的则可以看到第二层甚至第三层)

第一层 什么是Consistency Models

相比扩散模型,它主要有两大优势:

  1. 其一,无需对抗训练(adversarial training),就能直接生成高质量的图像样本。
  2. 其二,相比扩散模型可能需要几百甚至上千次迭代,一致性模型只需要一两步就能搞定多种图像任务——包括上色、去噪、超分等,都可以在几步之内搞定,而不需要对这些任务进行明确训练(当然,如果进行少样本学习的话,生成效果也会更好)
    原理上,一致性模型直接把随机的噪声映射到复杂图像上,输出都是同一轨迹上的同一点,所以实现了一步生成

论文提出两种训练方法

  1. 一种是基于一致性蒸馏,利用预训练的扩散模型生成相邻数据对,通过最小化模型输出之间的差异,来训练一致性模型。
  2. 另一种方法是独立训练,将一致性模型作为独立生成模型训练

实验结果表明,一致性模型在一步和少步采样方面优于现有的蒸馏技术,如渐进式蒸馏

当作为独立的生成模型进行训练时,一致性模型可以与现有的一步非对抗生成模型在标准基准测试汇总媲美,如CIFAR-10、ImageNet 64×64和LSUN 256×256

第二层 Consistency Models的推导

// 待更

第三层 Consistency Models的源码解读

// 待更


参考文献与推荐阅读

  1. AI绘画能力的起源:从VAE、扩散模型DDPM、DETR到ViT/MAE/Swin transformer
  2. AI绘画与多模态原理解析:从CLIP、BLIP到DALLE 3、Stable Diffusion、MDJ
  3. 几篇新闻稿
    4.13,OpenAI新生成模型开源炸场!比Diffusion更快更强,清华校友一作
    11.9,OpenAI上线新功能太强了,服务器瞬间被挤爆
    11.11,OpenAI救了Stable Diffusion!开源Dall·E3同款解码器,来自Ilya宋飏等
  4. Consistency Models
    Yang Song, Prafulla Dhariwal, Mark Chen, Ilya Sutskever
  5. 一步生成的扩散模型:Consistency Models

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web:[网鼎杯 2018]Fakebook

题目 点进页面,页面显示为 查看源代码 用dirsearch扫一下,看一下有什么敏感信息泄露 扫出另一个flag.php和robots.txt,访问flag.php回显内容为空 请求robots.txt 网页提示/user.php.bak,直接访问会自动下载.bak备份文件 进行代码…

Flink在汽车行业的应用【面试加分系列】

很多同学问我为什么要发这些大数据前沿汇报? 一方面是自己学习完后觉得非常好,然后总结发出来方便大家阅读;另外一方面,看这些汇报对你的面试帮助会很大,特别是面试前可以看看即将面试公司在大数据前沿的发展动向&…

DevOps平台两种实现模式

我们需要一个DevOps平台 要讨论DevOps平台的实现模式,似乎就必须讨论它们的概念定义。然而,当大家要讨论它们的定义时,就像在讨论薛定谔的猫。 A公司认为它不过是自动化执行Shell脚本的平台,有些人认为它是一场运动,另…

代码随想录算法训练营|动态规划三十八天~四十三天

动态规划五部曲: 1、确定dp数组以及下标的含义 2、确定递推公式 3、dp数组如何初始化 4、确定遍历顺序 5、举例推导dp数组 三十八天 斐波那契数 509. 斐波那契数 - 力扣(LeetCode) public class Solution {public int MonotoneIncre…

训练日志刷屏使我痛苦,我开发了VLog

训练日志刷屏使我痛苦,我开发了VLog,可以在任意训练代码中轻松使用~ 例如,通过callback嵌入到lightgbm/catboost/transformers/ultralytics,乃至keras库的训练代码流程中~ before: after: 为什么不用tensorboard或者wa…

Linux的make和Makefile

目录 一、 介绍二、快速使用三、依赖关系和依赖方法四、语法 一、 介绍 1、makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。 2、make是一个命令工具&…

dcat admin 各种问题

样式问题 如何根据条件给表格数据栏添加背景色 use Illuminate\Support\Collection;protected function grid(){return Grid::make(new BookArticle(), function (Grid $grid) {... 其他代码// Collection的完整路径:Illuminate\Support\Collection;$grid->row…

火星加载WMTS服务

这是正常的加载瓦片 http://192.168.1.23:8008/geoserver/mars3d/gwc/service/wmts?tilematrixEPSG%3A4326%3A7&layermars3d%3Abuffer&style&tilerow46&tilecol197&tilematrixsetEPSG%3A4326&formatimage%2Fpng&serviceWMTS&version1.0.0&…

超详细介绍对极几何和立体视觉及 Python 和 C++实现

您是否想过为什么戴着特殊的 3D 眼镜观看电影时可以体验到美妙的 3D 效果?或者为什么闭上一只眼睛很难接住板球?这一切都与立体视觉有关,立体视觉是我们用双眼感知深度的能力。这篇文章使用 OpenCV 和立体视觉为计算机提供这种感知深度的能力。代码以 Python 和 C++ 形式提供…

迷雾系统-1 地图及其区块

创建UGUI地图,每块地块(Image)上添加AreaNode脚本,根据PolygonCollider2D可视化编辑碰撞体形状,并以此生成Mesh Mc_AreaNode脚本: private GameObject _objPrefab; //创建的Mesh预制体private float _canvasPosZ;pr…

[N-133]基于springboot,vue小说网站

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项…

【Java面向对象编程(中)】- 探索封装的秘密

🌈个人主页: Aileen_0v0🔥系列专栏:Java学习系列专栏💫个人格言:"没有罗马,那就自己创造罗马~" 目录 回顾 封装​编辑 为什么进行封装 ​​编辑​ 如何调用私有的变量 ​​编辑​ 1.get set方法(当形参和成员变量不同名时)​…

LeetCode | 138. 随机链表的复制

LeetCode | 138. 随机链表的复制 OJ链接 思路: 题目要求我们拷贝一个带next指针与random随机访问指针的链表。 如果只拷贝一个只带next的指针,直接遍历目标链表依次拷贝每个节点的信息就可以了~~ 拷贝节点插入到原节点的后面处理copy节点的randomcop…

Leetcode—103.二叉树的锯齿形层序遍历【中等】

2023每日刷题(二十六) Leetcode—103.二叉树的锯齿形层序遍历 BFS实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ /*** Return an array of ar…

138.随机链表的复制(LeetCode)

深拷贝,是指将该链表除了正常单链表的数值和next指针拷贝,再将random指针进行拷贝 想法一 先拷贝出一份链表,再对于每个节点的random指针,在原链表进行遍历,找到random指针的指向,最后完成拷贝链表random…

第一百六十八回 NavigationBar组件

文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"如何修改按钮的形状"相关的内容,本章回中将 介绍NavigationBar组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…

Linux驱动开发——PCI设备驱动

目录 一、 PCI协议简介 二、PCI和PCI-e 三、Linux PCI驱动 四、 PCI设备驱动实例 五、 总线类设备驱动开发习题 一、 PCI协议简介 PCI (Peripheral Component Interconnect,外设部件互联) 局部总线是由Intel 公司联合其他几家公司一起开发的一种总线标准&#…

初识-Servlet (第一个 Servlet 程序详解)

Servlet 是什么? Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序员的 API, 帮助程序员简单高效的开发一个 web app. 静态页面就只是单纯的 html 动态页面则是 html 数据 第一个 Servlet 程序 我们写一个 hello world 预期写一个 Servlet 程序, 部署到 Tomca…

图论12-无向带权图及实现

文章目录 带权图1.1带权图的实现1.2 完整代码 带权图 1.1带权图的实现 在无向无权图的基础上,增加边的权。 使用TreeMap存储边的权重。 遍历输入文件,创建TreeMap adj存储每个节点。每个输入的adj节点链接新的TreeMap,存储相邻的边和权重 …

时间序列预测实战(十二)DLinear模型实现滚动长期预测并可视化预测结果

官方论文地址->官方论文地址 官方代码地址->官方代码地址 个人修改代码->个人修改的代码已经上传CSDN免费下载 一、本文介绍 本文给大家带来是DLinear模型,DLinear是一种用于时间序列预测(TSF)的简单架构,DLinear的核…