论文阅读_扩散模型_SDXL

英文名称: SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis
中文名称: SDXL:改进潜在扩散模型的高分辨率图像合成
论文地址: http://arxiv.org/abs/2307.01952
代码: https://github.com/Stability-AI/generative-models
时间: 2023-07-04
作者: Dustin Podell

1 读后感

SD 是语言引导的扩散模型。SDXL 是 2023年7月 Stable Diffusion 新发的大模型框架,它是潜在扩散模型(LDM)扩展。其主要效果是:加强了画面细腻度,优化了构图,以及对语言的理解能力。

我对比了 SD 1.5 和 SDXL 模型,感觉速度差不太多,个人感觉:图片质量,对文字的理解略有提升,可能因为目前 SDXL 的基模比较少,用的还不太多。个人理解,目前阶段,无论是AI写作,绘画还是编程,都需要与人和其它工具深度结合,远不到可以独立解决问题,自动生成最终成果的阶段,但确实能提升效率和效果。

这篇文章没有使用一般的技术论文结构,他将相关工作,方法,实验都写到了第二部分,具体方法也没做太多展开;限制和展示分别写在了正文和附录中。

2 研究背景和动机

视觉创作领域的一个主要问题是,虽然黑盒模型通常被认为是最先进的,但其架构的不透明性阻碍了对其性能的评估和验证。缺乏透明度阻碍了复现,抑制了创新,并阻止社区在这些模型的基础上进一步推动科学和艺术的进步。而本文提出了 SDXL 开源模型,显著提高了 SD 的性能,可与最先进的图像生成器相媲美的合成结果。

具体方法是:

  • SDXL 使用了之前三倍大的 U-Net 作为主干网络,增加的参数包括:引入第二个文本编码器,更多的注意力块和更大的交叉注意力上下文。
  • 增加两种调节技术,在多种大小和长宽比上优化模型训练。
  • 增加了基于扩散的refine模块,应用于去噪过程,提高了生成样本的视觉保真度。

3 方法

3.1 架构与规模

U-Net是当前扩散模型的主流架构,SDXL把 U-Net 网络扩展到之前的三倍大小,具体参数如表-1所示:

将 Transformer 的大部分计算转移到 UNet 中的较低级别特征,以提升效率。结构上:省略了最高特征级别的 Transformer 块,在较低级别使用 2 和 10 个块,并完全删除 UNet 中的最低级别(8×下采样)。

另外,还选择了更为强大的文本编码器,文本编码器的参数总大小为817M。除了使用交叉注意力根据文本输入来调节模型之外,还根据 OpenCLIP 模型的池化文本嵌入来调节模型。

3.2 微调节

3.2.1 根据图像大小微调

LDM 由于其两阶段结构,训练模型需要最小的图像尺寸。一般有两种主流方法,一种是丢弃小分辨率图片(如<512像素);另一种方式是上采样。

如图所示,在预训练的数据集中,小于256的图像占39%,如果将之丢弃,可能影响模型性能和泛化,而对太多图片上采样可能使生成的图片变得模糊。

文中提出的方法是:根据原始图像分辨率来调节 UNet 模型,将图像的原始宽高,csize = (horiginal, woriginal) 作为模型的附加条件。每个组件使用傅立叶特征编码独立嵌入,这些编码连接成向量,将其添加到时间步嵌入以输入模型。推理时,传入待生成图片的宽高,模型将学会参考 csize 生成图像。

具体实验用 ImageNet 数据训练三个LDM模型,将图像大小限制为 512x512。

CIN-512-only 去掉了512以下的图片,CIN-nocond使用所有图片但未做处理,CIN-size-cond 将图像大小传入模型。实验结果说明,对于小数据量训练,csize确实提升了效果。

3.2.2 根据裁剪参数调节

图-4 展示了 SD 之前版本的另一个常见问题,构图不对,这是由于 Pytorch 要求输入大小相同的数据,而训练数据中图片长宽比不同。一般处理方法是先缩放,再随机从其长边剪切图像再训练。

文中提出的方法与处理大小的方法类似,将裁剪坐标 ctop 和 cleft 进行统一采样,并通过傅里叶特征嵌入,将它们作为条件参数输入到模型中。推理时,将ctop, cleft设为0。

3.3 多尺度训练

一般生成的图像都为 512x512,1024x1024,而实际的需求往往不是这样的。为解决这一问题,文中将数据划分为不同纵横比的桶,将像素数尽可能保持接近 1024x1024 像素。

在优化过程中,每个 batch 由同一存储桶的图像组成,在每个训练步骤的存储桶大小之间交替。此外,模型接收桶大小作为条件,表示为整数元组 car = (htgt, wtgt),并将其嵌入到傅立叶空间中。

3.4 改进自编码器

通过改进自编码器来改善生成图像中的局部细节。文中调整 batch size(256 vs 9)训练自编码器,另外使用指数移动平均值跟踪权重。新的自编码器在所有评估的重建指标中都优于原始模型。

3.5 Refine 阶段

右图使用了 Refine 模块,可以看到更多细节,这种方法有效提升了局部细节效果(如背景/人脸细节)。

具体方法是:在同一潜在空间中训练一个单独的 LDM,该 LDM 专门用于高质量、高分辨率数据,并采用SDEdit 在基础模型的样本上引入 加噪-去噪 过程。在推理时,从基础 SDXL 渲染潜变量,并使用相同的文本输入,通过细化模型直接在潜空间中对它们进行扩散和去噪。其用户评价效果与其它模型对比,如图-1的左侧所示。

4 限制和展望

4.1 展望

  • 当前模型为两阶段模型,之后倾向于变为单阶段模型。
  • 文本理解力有待进一步提升。
  • 结构上,之后更倾向于大规模 Transformer 框架。
  • 模型增大加大了推理成本,未来将侧重于减少推理所需的计算量。
  • 目前使用离散时间方法,后将尝试连续时间方法,以提高采样灵活性,并且不需要噪声时间校正。

4.2 限制

(附录 B)

  • 模型在合成复杂的结构时可能会遇到挑战,例如人手,其原因可能是手类物体出现的差异非常大,模型很难提取真实 3D 形状和物理限制的知识。
  • 模型生成的图像没有达到完美的照片真实感。例如微妙的灯光效果或微小的纹理变化。
  • 模型由数据训练而成,可能包含一些社会和种族偏见。
  • 多个对象或主题下的“概念出血”现象:不同视觉元素的意外合并或重叠。比如“蓝色帽子”和“红色手套”,生成时变成了蓝色手套和红色帽子。这是由于文本编码器无法绑定正确的属性和对象造成的。另外,渲染长文本时也会遇到困难。

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

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

相关文章

5G NR:RACH流程 -- Msg1之选择正确的PRACH时频资源

PRACH的时域资源是如何确定的 PRACH的时域资源主要由参数“prach-ConfigurationIndex”决定。拿着这个参数的取值去协议38211查表6.3.3.2-2/3/4&#xff0c;需要注意根据实际情况在这三张表中进行选择&#xff1a; FR1 FDD/SULFR1 TDDFR2 TDD Random access preambles can onl…

4.2 实现基于栈的表达式求值计算器(难度4/10)

本作业主要考察&#xff1a;解释器模式的实现思想/栈结构在表达式求值方面的绝对优势 C数据结构与算法夯实基础作业列表 通过栈的应用&#xff0c;理解特定领域设计的关键作用&#xff0c;给大家眼前一亮的感觉。深刻理解计算机语言和人类语言完美结合的杰作。是作业中的上等…

VSCode之C++ CUDA极简环境配置

背景 想要了解CUDA并行计算原理&#xff0c;同时针对深度学习中出现一些“不支持算子”可能需要手写的需要&#xff0c;配置一个简单的CUDA编译环境&#xff0c;探索CUDA编程的范式【注&#xff1a;CUDA环境配置略】。结果展示 示例代码 #include "cuda_runtime.h" …

Redis发布订阅

Redis发布订阅 Redis 发布订阅(pub/sub)是一种 消息通信模式&#xff1a;发送者(pub)发送消息&#xff0c;订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 订阅/发布消息图&#xff1a; 下图展示了频道 channel1 &#xff0c; 以及订阅这个频道的三个客户端 —…

Python钢筋混凝土结构计算.pdf-混凝土强度设计值

计算原理&#xff1a; 需要注意的是&#xff0c;根据不同的规范和设计要求&#xff0c;上述公式可能会有所差异。因此&#xff0c;在进行混凝土强度设计值的计算时&#xff0c;请参考相应的规范和设计手册&#xff0c;以确保计算结果的准确性和合规性。 代码实现&#xff1a; …

SAP_ABAP_OLE_EXCEL批导案例

SAP ABAP顾问能力模型梳理_企业数字化建设者的博客-CSDN博客SAP Abap顾问能力模型https://blog.csdn.net/java_zhong1990/article/details/132469977 一、OLE_EXCEL批导 1.1 下载按钮 1.2 选择EXCEL上传&#xff0c;解析EXCLE数据&#xff0c; Call屏幕。 1.3 实现效果 1.4…

报错:axios 发送的接口请求 404

axios 发送的接口请求 404 一、问题二、分析 一、问题 二、分析 axios 发送的接口请求 404&#xff0c;根本没有把接口信息发送到后端&#xff0c;这个时候你可以查看检查一下自己的接口名字&#xff0c;或让后端配合换一个接口名字再发送一次接口请求

编程题四大算法思想(三)——贪心法:找零问题、背包问题、任务调度问题、活动选择问题、Prim算法

文章目录 贪心法找零问题&#xff08;change-making problem&#xff09;贪心算法要求基本思想适合求解问题的特征 背包问题0/1背包问题0/1背包问题——贪心法 分数背包问题 任务调度问题活动选择问题活动选择——贪心法最早结束时间优先——最优性证明 Prim算法 贪心法 我在当…

【多线程案例】单例模式(懒汉模式和饿汉模式)

文章目录 1. 什么是单例模式&#xff1f;2. 立即加载/“饿汉模式”3. 延时加载/“懒汉模式”3.1 第一版3.2 第二版3.3 第三版3.4 第四版 1. 什么是单例模式&#xff1f; 提起单例模式&#xff0c;就必须介绍设计模式&#xff0c;而设计模式就是在软件设计中&#xff0c;针对特殊…

Vue2项目练手——通用后台管理项目第一节

Vue2项目练手——通用后台管理项目 知识补充yarn和npm区别npm的缺点&#xff1a;yarn的优点 npm查看镜像和设置镜像 项目介绍项目的技术栈 项目搭建文件目录 创建路由&#xff0c;引入element-uirouter/index.jsmain.jspages/Users.vuepages/Main.vuepages/Home.vuepages/Login…

linux C++ 海康截图Demo

项目结构 CMakeLists.txt cmake_minimum_required(VERSION 3.7)project(CapPictureTest)include_directories(include)link_directories(${CMAKE_SOURCE_DIR}/lib ${CMAKE_SOURCE_DIR}/lib/HCNetSDKCom) add_executable(CapPictureTest ${CMAKE_SOURCE_DIR}/src/CapPictureTes…

ChatGPT 一条命令总结Mysql所有知识点

想学习Mysql的同学,可以使用ChatGPT直接总结mysql所有的内容与知识点大纲 输入 总结Mysql数据库所有内容大纲与大纲细分内容 ChatGPT不光生成内容,并且直接完成了思维导图。 AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Offi…

Leetcode Top 100 Liked Questions(序号141~189)

​ 141. Linked List Cycle ​ 题意&#xff1a;给你一个链表&#xff0c;判断链表有没有环 我的思路 两个指针&#xff0c;一个每次走两步&#xff0c;一个每次走一步&#xff0c;如果走两步的那个走到了NULL&#xff0c;那说明没有环&#xff0c;如果两个指针指向相等&…

使用Windbg动态调试排查软件启动不了的问题

目录 1、问题说明 2、初步分析 3、使用Windbg启动程序进行动态调试 4、进一步分析 5、何时使用Windbg静态分析&#xff1f;何时使用Windbg进行动态调试&#xff1f; 6、最后 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&…

Linux中创建文件夹,删除文件夹

Linux中创建目录&#xff1a;mkdir 文件夹&#xff0c; 比如&#xff1a;mkdir test 删除文件夹&#xff1a;rm -rf 文件夹&#xff0c; 比如&#xff1a;rm -rf soft vi强制不保存退出命令&#xff1a;q&#xff01;

YOLOv5算法改进(12)— 替换主干网络之Swin Transformer

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Swin Transformer是一种基于Transformer的深度学习模型&#xff0c;它在视觉任务中表现出色。与之前的Vision Transformer&#xff08;ViT&#xff09;不同&#xff0c;Swin Transformer具有高效和精确的特性&#xff0c;并…

合宙Air724UG LuatOS-Air LVGL API控件--复选框 (Checkbox)

复选框 (Checkbox) 复选框主要是让用户进行一些内容选择&#xff0c;或者同意用户协议。 示例代码 – 复选框回调函数 function event_handler(obj, event) if event lvgl.EVENT_VALUE_CHANGED then print(“State”, lvgl.checkbox_is_checked(obj)) end end – 创建复选框…

图像处理简介

目录 基本术语 1 .图像(image) 1.1 像素(Pixel) 1.2 颜色深度&#xff08;Color Depth&#xff09; 1.3 分辨率&#xff08;Resolution&#xff09; 1.4 像素宽高比&#xff08;Pixel Aspect Ratio&#xff09; 1.5 帧率(FPS) 1.6 码率&#xff08;BR&#xff09; 1. …

sql各种注入案例

目录 1.报错注入七大常用函数 1)ST_LatFromGeoHash (mysql>5.7.x) 2)ST_LongFromGeoHash &#xff08;mysql>5.7.x&#xff09; 3)GTID (MySQL > 5.6.X - 显错<200) 3.1 GTID 3.2 函数详解 3.3 注入过程( payload ) 4)ST_Pointfromgeohash (mysql>5.…

day28 异常

to{}catch{} try{}catch{}的流传输 try {fis new FileInputStream("file-APP\\fos.txt");fos new FileOutputStream("fos.txt");int a ;while ((a fis.read())! -1){fos.write(a);}System.out.println(a); } catch (IOException e) {e.printStackTrace()…