StableDiffusion3 官方blog论文研究

博客源地址:Stable Diffusion 3: Research Paper — Stability AI

论文源地址:https://arxiv.org/pdf/2403.03206.pdf

Stability.AI 官方发布了Stable diffusion 3.0的论文研究,不过目前大家都沉浸在SORA带来的震撼中,所以这个水花貌似也就被忽略了。但,毕竟绘画领域里边最大的开源模型,还是多少可以关注一下。

🎇首先看一下模型表现

这张图直接把我看懵了,为何在这张图中,SDXL 和SDXL turbo都这么高的胜率,而且超过MJ6.0,后来仔细理解了下blog的说辞,才明白这个是以SD3作为基线,赢过这些模型的比例,三个维度分别是美学评分,提示词跟随程度 和 文字识别“排版”能力。

基于这张图,大概可以看出,在文字识别能力方面,SD3的胜率整体非常高,而在美学评分方面,略微比MJ6和DALLE3强一点。

但问题是,个人体验的MJ6和DALLE3根本不在一个档次上,MJ6还是强很多的。并且基于官方已经发布的模型生成的图片来看,并没有觉得生成质量能比MJ6能强,所以这个还是等模型实际发布之后再看吧,毕竟这种评分都是按照“人类反馈评估”来得出的,并非是一个绝对客观的数值。

官方对SD3的评价说法是根据我们的测试结果,我们发现 Stable Diffusion 3 在上述所有领域均等于或优于当前最先进的文本到图像生成系统。 

emm... 他开心就好。

官方还提到一点,在硬件测试过程中,官方最大的8B参数SD3模型“适合”RTX4090的24G显存,并且生成一张1024x1024的图像,需要50次迭代和34秒的时间,emm,可以说“普及”基本就是很远的事情了。

不过官方也提到,他们不仅仅只有一个8B的版本,从800m到8B有一大堆的版本,“以进一步消除硬件障碍”,到时候得看下缩水的版本是不是会降低太多,至少从cascade的经验来看,缩水的模型,生成的质量是直线下降的,这一点也需要等官方实际发布之后再体验了。

🧨架构细节

新版本的架构被称为MMDiT,Dit也就是Diffusion Transformer,融合了Diffusion和Transformer两种架构,如果没记错的的话,sora也是这个大的架构,当然了细节肯定有很多区别就是了。

官方这次考虑了文本和图像两种“文本生成图像”的模式。这次官方使用了三种不同的文本嵌入模型(两个clip模型和t5模型)来编码文本。

架构概念图如下:

我们改进的多模态扩散变压器块的概念可视化:MMDiT。

官方认为,新的架构可以让“信息”在图像和文本之间更好的流动,这样生成的图像会更理解提示词,包括提示词中的“文本排版”内容。并且官方认为这种架构还可以轻松扩展到视频等多种模式。

(我个人认为Sora的spatial time pathes那种方式会更适合生成视频模型,也可以更好的理解物理世界,不知道sd3的架构中是否也使用了类似的技术。)

得益于 Stable Diffusion 3 改进的提示跟随功能,新的模型能够创建专注于各种不同主题和质量的图像,同时对图像本身的风格保持高度灵活性。

更多官方示例图像:

(以下两个章节直接原博客复制翻译,非技术的朋友可以暂时忽略。)

通过重新加权改善整流流量

Stable Diffusion 3 采用整流流 (RF) 公式(Liu et al., 2022;Albergo & Vanden-Eijnden,2022;Lipman et al., 2023),其中数据和噪声在训练期间在线性轨迹上连接。这会产生更直的推理路径,从而允许用更少的步骤进行采样。此外,我们在训练过程中引入了一种新颖的轨迹采样计划。这个时间表给予轨迹的中间部分更多的权重,因为我们假设这些部分会导致更具挑战性的预测任务。我们使用多个数据集、指标和采样器设置进行比较,针对 60 个其他扩散轨迹(例如LDM、EDM和ADM )测试我们的方法。结果表明,虽然以前的 RF 配方在少步采样方案中表现出改进的性能,但它们的相对性能随着步数的增加而下降。相比之下,我们重新加权的 RF 变体不断提高性能。

缩放整流流量变压器模型

 

我们使用重新加权的整流流公式和 MMDiT 主干对文本到图像的合成进行了缩放研究。我们训练的模型范围从 15 个具有 450M 个参数的块到 38 个具有 8B 个参数的块,并观察到验证损失随着模型大小和训练步骤的函数而平滑下降(顶行)。为了测试这是否转化为模型输出的有意义的改进,我们还评估自动图像对齐指标(GenEval)以及人类偏好分数(ELO)(底行)。我们的结果表明这些指标与验证损失之间存在很强的相关性,表明后者是整体模型性能的有力预测因子。此外,扩展趋势没有显示出饱和的迹象,这让我们乐观地认为未来可以继续提高模型的性能。

灵活的文本编码器

正如前文提到的,SD3用到三种不同的文本嵌入模型(两个clip模型和t5模型)来编码文本。这里测试了下,如果删掉其中一个比较大的模型4.7B参数的T5文本编码器会如何。

发现删掉之后,内存需求可以显著降低,(emm...好像很合理,毕竟这个模型有4.5B的参数),同时性能损失很小。

进一步测试下,发现删除这个文本编码器,对于视觉美感的影响几乎没有,删除前后胜率五五开。但是会导致“提示词相关性”下降,删除之后胜率降低到46%。

所以最终官方的建议是保留T5编码器,这样才能体验满血版的SD3,而且官方还发现,如果删除了T5这个模型,文本版式的生成性能下降会更大,胜率会降低到38%。

也就是说,删除T5编码器后,基准50%来看(也就是五五开),美学、提示词遵循程度、文字排版会降低到:50%,46%,38%。换句话说,如果生成的画面中没有文本,而你的硬件条件又比较差的话,那么删掉T5问题不大,但是如果你要生成文本相关的画面(比如说电影海报),那么还是升级硬件吧。

删除前后效果对比:

当渲染涉及许多细节或大量书面文本的非常复杂的提示时,

删除 T5 进行推理只会导致性能显着下降。

上图显示了每个示例的三个随机样本。

以上就是官方博客的内容和我个人的理解,欢迎大家多多交流。

这里是聚梦小课堂,如果觉得内容有用,还请帮忙点个赞哈。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一. 并行处理与GPU体系架构-并行处理简介

目录 前言0. 简述1. 串行处理与并行处理的区别2. 并行执行3. 容易混淆的几个概念4. 常见的并行处理总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记,仅供自己参考 本次课程我们来学习下课程第一章——并行处…

window mysql 安装出现的问题

1.安装到最后时,报错:authentication_string doesnt have a default value 解决办法: 1.不要关掉该页面,点击skip。 然后单击 back 回退到如下界面 2.去掉 Enable Strict Mode。 不要勾选 2. 最后一步:Start Servic…

8.5 Springboot项目实战 Redis缓存热点数据

文章目录 前言一、缓存与数据库一致性二、Repository层 -- Cache Aside模式实操BookRepositoryBookRepositoryImpl2.1 查询2.2 修改2.3 删除2.4 扩展Mapper修改三、Service层调用修改四、测试前言 前两文我们讲解了如何在SpringBoot中整合Redis,接下来我们将进行

Spring学习笔记(八)基于Spring mvc技术的简单后台登录验证系统

一、需求分析 本项目主要是对用户登录状态的验证,只有登录成功的用户才可以访问系统中的资源。为了保证后台系统的页面不能被客户直接请求访问,本案例中所有的页面都存放在项目的WEB-INF 文件夹下,客户需要访问相关页面时,需要在…

[BJDCTF2020]----EzPHP

文章目录 pass-1pass-2pass-3pass-4pass-5pass-6pass-7 查看题目&#xff0c;右键源代码&#xff0c;发现GFXEIM3YFZYGQ4A&#xff0c;base64解码&#xff1a;1nD3x.php 访问1nD3x.php&#xff0c;代码审计&#xff0c;一步一步分析 <?php highlight_file(__FILE__); error…

HarmonyOS通过 axios发送HTTP请求

我之前的文章 HarmonyOS 发送http网络请求 那么今天 我们就来说说axios 这个第三方工具 想必所有的前端开发者都不会陌生 axios 本身也属于 HTTP请求 所以鸿蒙开发中也支持它 但首先 想在HarmonyOS中 使用第三方工具库 就要先下载安装 ohpm 具体可以参考我的文章 HarmonyOS 下…

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】探究二叉树的奥秘

目录 1 -> 树的概念及结构 1.1 -> 树的概念 1.2 -> 树的相关概念 1.3 -> 树的表示 1.4 -> 树在实际中的运用(表示文件系统的目录树结构) 2 -> 二叉树概念及结构 2.1 -> 二叉树的概念 2.2 -> 现实中的二叉树 2.3 -> 特殊的二叉树 2.4 ->…

SpringBoot项目没有启动按键

问题一&#xff1a; pom文件正常&#xff0c;但是springboot包报红&#xff0c;同时Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found报红 解决办法&#xff1a; 无法识别使用哪个版本的 spring-boot-maven-plugin 包 <build><plugins>&…

【深度学习笔记】7_2 梯度下降和随机梯度下降

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 7.2 梯度下降和随机梯度下降 在本节中&#xff0c;我们将介绍梯度下降&#xff08;gradient descent&#xff09;的工作原理。虽然梯度…

2024年【G2电站锅炉司炉】考试题及G2电站锅炉司炉证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【G2电站锅炉司炉】考试题及G2电站锅炉司炉证考试&#xff0c;包含G2电站锅炉司炉考试题答案和解析及G2电站锅炉司炉证考试练习。安全生产模拟考试一点通结合国家G2电站锅炉司炉考试最新大纲及G2电站锅炉司炉考…

std::function模板类性能问题

背景 题目&#xff1a;最近发现记忆化搜索真的很好用&#xff0c;于是在做力扣上记忆化搜索相关的题目时&#xff0c;用这种方法重做了一下买卖股票问题。 问题来源 在写递归代码的时候&#xff0c;我学习了一种匿名函数的写法&#xff0c;直接在函数体内写function<int(…

Learn OpenGL 06 坐标系统

概述 局部坐标是对象相对于局部原点的坐标&#xff0c;也是物体起始的坐标。下一步是将局部坐标变换为世界空间坐标&#xff0c;世界空间坐标是处于一个更大的空间范围的。这些坐标相对于世界的全局原点&#xff0c;它们会和其它物体一起相对于世界的原点进行摆放。接下来我们…

Java - 探究Java优雅退出的两种机制

文章目录 概述Java优雅停机_ ShutdownHook 机制步骤Code Java优雅停机_ 信号量机制SignalHandler 工作原理使用步骤Linux支持的信号量根据操作系统选择信号量Code 注意事项 概述 在Linux上通过kill -9 pid方式强制终止进程的副作用&#xff0c;这种方式虽然简单高效&#xff0…

使用Windows API实现一个简单的串口助手

使用Windows API实现一个简单的串口助手 目录 使用window API开发一个具有字符串收发功能的串口助手 开发环境串口设备相关的API步骤实现代码收发测试图 使用window API开发一个具有字符串收发功能的串口助手 开发环境 Visual Studio 2015 串口设备相关的API CreateFile 参…

【MySQL | 第四篇】区分SQL语句的书写和执行顺序

文章目录 4.区分SQL语句的书写和执行顺序4.1书写顺序4.2执行顺序4.3总结4.4扩充&#xff1a;辨别having与where的异同&#xff1f;4.5聚合查询 4.区分SQL语句的书写和执行顺序 注意&#xff1a;SQL 语句的书写顺序与执行顺序不是一致的 4.1书写顺序 SELECT <字段名> …

Nwatch在stm32上的移植

目录 Nwatch在stm32上的移植前言实验目的移植game1_task任务相关代码片段结果本文中使用的工程 Nwatch在stm32上的移植 本文目标&#xff1a;Nwatch在stm32上的移植 按照本文的描述&#xff0c;应该可以跑通实验并举一反三。 先决条件&#xff1a;装有编译和集成的开发环境&…

不允许你不知道Python作用域

在Python中&#xff0c;变量的作用域限制非常重要。根据作用域分类&#xff0c;有局部、全局、函数和内建作用域。无作用域限制的变量可以在分支语句和循环中定义&#xff0c;并在外部直接访问。不同的作用域决定了变量的可访问范围&#xff0c;访问权限取决于变量的位置。 1.…

力扣中档题:旋转链表

思路&#xff1a;将链表数据放到数组中&#xff0c;将数组旋转&#xff0c;然后再赋值给链表 struct ListNode* rotateRight(struct ListNode* head, int k) {if(headNULL){return NULL;}int count0;struct ListNode*goodhead;while(good){count;goodgood->next;}int round…

解锁网络数据:入门级IP代理使用教程

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

10 vector的使用

文档介绍 文档介绍 1.vector是表示可变大小数组的容器 2.就像数组一样&#xff0c;vecotr也采用的连续存储空间来存储元素&#xff0c;也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;大小是可以动态改变的&#xff…