SDXL-Stable Diffusion改进版

文章目录

  • 1. 摘要
  • 2. 算法:
    • 2.1 结构:
    • 2.2 微小的条件机制
    • 2.3 多宽高比训练
    • 2.4 改进自编码器
    • 2.5 所有组合放到一起
    • 2.6 主流方案比较
  • 3. 未来工作
  • 4. 限制

论文: 《SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis》
github: https://github.com/Stability-AI/generative-models

1. 摘要

SDXL,用于文生图,与之前SD相比,SDXL使用3倍大的UNet backbone:归因于更多的attention block、更大的cross-attention。作者设计多种新颖条件机制,同时引入一个精细化模块用于提升生成图片保真度。与之前版本SD相比,SDXL大大提升了性能。

2. 算法:

在这里插入图片描述
SDXL整体结构如图1所示。

2.1 结构:

扩散生成模型主要使用UNet结构,随着DM发展,网络结构发生变化:从增加self-attention、改进上采样层,增加cross-attention到基于transformer的结构。
为了高效,作者移除最浅特征层中transformer block,中间层使用transformer block数量设置为2和10,移除最深特征层(8倍降采样层),如表1作者与SD1.x及x2.x进行比较。
在这里插入图片描述
同时作者使用更强大预训练文本编码器,将OpenCLIP ViT-bigG与CLIP ViT-L倒数第二输出层进行concat。除了增加cross-attention层约束输入文本,另外将合并的文本编码作为模型条件输入,由此导致模型参数量达到2.6B,其中文本编码器器817M。

2.2 微小的条件机制

LDM的显著缺点为:训练模型需要比较小的图像大小,归因于其二阶段结构。对于该问题,一种方案为丢弃训练集中某一分辨率以下图片,比如:Stable Diffusion 1.4/1.5中512分辨率以下图片;另一种为过小图片进行上采样。然而前者将导致训练集大量数据丢弃,后者上采样过程引入人工因素,导致模型输出模糊样本
作者使用原始图片分辨率 c s i z e = ( h o r i g i n a l , w o r i g i n a l ) c_{size} = (h_{original}, w_{original}) csize=(horiginal,woriginal)作为Unet条件输入,具体地,使用傅里叶特征将图片编码,concat为向量,该向量与timestep embedding相加。该过程如算法1
在这里插入图片描述

推理时,用户可设置所需图像分辨率尺度,如图3,随着图像尺寸提升,图片质量提升。
在这里插入图片描述
作者比较仅使用512 * 512分辨率以上数据集(CIN-512-only)、所有数据(CIN-nocond)、增加分辨率条件(CIN-size-cond),结果如表2,
在这里插入图片描述
基于裁剪参数调节模型
在这里插入图片描述
如图4前两行,之前模型生成目标可能被裁剪,这由于训练过程使用随机裁剪,为对齐batch中数据尺寸。为解决此问题,作者在加载数据过程,使用均匀采样裁剪坐标 c t o p 、 c l e f t c_{top}、c_{left} ctopcleft(距离左上角点距离),并将其作为条件参数通过傅里叶特征编码送入模型。该过程如算法1所示。推理时设置 ( c t o p , c l e f t ) = ( 0 , 0 ) (c_{top}, c_{left}) = (0, 0) (ctop,cleft)=(0,0)可生成目标在图中心的样本,如图5所示。
在这里插入图片描述

2.3 多宽高比训练

当前文生图模型所生成图片为正方形,512 * 512或1024 * 1024,与真实图片存在差异。对此作者使用多种宽高比图片进行训练,但像素总量接近1024*1024,宽、高为64倍数。
预训练阶段使用固定宽高比及分辨率,只有在finetune阶段使用多种宽高比训练;

2.4 改进自编码器

作者训练与原始Stable Diffusion相同网络结构的自编码器,额外增加跟踪权重的指数滑动平均,实验结果如表3,SD-VAE 2.x为改进后结果。
在这里插入图片描述

2.5 所有组合放到一起

作者训练最终模型SDXL,使用2.4节提到的自编码器
首先进行预训练基础模型,使用内部数据集,宽高分布如图2,训练时使用分辨率256*256,同时使用size及crop condition,如2.2节所述;之后在512 * 512图片上进一步训练;最后在1024 * 1024分辨率,基于不同宽高比进行训练
在这里插入图片描述
精细化阶段
如图6,作者发现有些生成样本局部质量低,对此作者基于高质量、高分辨率数据在隐空间单独训练LDM,如SDEdit所提,利用基础模型生成隐向量进行加噪降噪处理。推理时,如图1,渲染来自基础SDXL模型的隐向量,基于该向量,使用同一文本输入,利用精细化模型进行扩散去噪。可视化结果如图6、13。
在这里插入图片描述
生成图片用户评估结果如图1左,该精细化模块作用明显。但在FID、CLIP指标上,与文本越一致样本,指标反而低于SD-1.5、SD-2.1,如图12,作者分析Kirstain等人证明COCO zero-shot FID得分与视觉评估负相关,应以人工评估为准,作者实验与此一致。
在这里插入图片描述

2.6 主流方案比较

图8为各种主流生成方案结果比较
在这里插入图片描述

3. 未来工作

单阶段:SDXL为二阶段方法,需要额外精细化模型,增加内存及采样速度,未来研究单阶段方案;
文本合成:较大的文本编码器,相对于之前SD模型,提升了文本表达能力,但是插入token或者放大模型可能也会有帮助;
结构:作者实验了基于transformer的结构:UViT、DiT,但是没有增益,需要进一步研究超参;
蒸馏:SDXL生成质量虽然提升,但是推理成本增加,未来借助蒸馏降低该成本;

模型训练过程是离散的且需要偏离噪声,Karras等人提出的EDM框架可能是未来模型训练方案,时间连续、采样灵活、无需噪声纠正机制。

4. 限制

  1. 对于生成复杂结构充满挑战,比如人手,如图7所示。虽然使用很多训练数据,但是人体结构复杂性导致难以获得准确表征一致性,这可能由于图中手及相似目标具有比较高方差,难以建模;
    在这里插入图片描述
  2. 某些细微差别,如微妙的灯光效果或微小的纹理变化导致生成图像不真实;
  3. 当前模型训练依赖大规模数据集,可能引入社会种族问题,生成图像进而存在该问题;
  4. 当样本包含多个目标时,模型存在“concept bleeding”现象,即不同元素出现合并或堆叠,如图14。该问题可能由于文本编码器导致,所有信息压缩到单个token,难以联系到合适目标及属性,Feng等人通过单词关系编码解决;对抗损失也可导致此现象,由于不同联系的负样本出现在同一batch;
    在这里插入图片描述
  5. 呈现长且易读文本存在困难,如图8,克服此问题需要进一步强化模型文本生成能力;
    在这里插入图片描述

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

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

相关文章

MATLAB详细安装教程(亲测有效!!)

1.复制以下链接,用百度网盘打开,下载 链接:https://pan.baidu.com/s/19AwQeCRYofGAV8sfDIm5PQ 提取码:mads 我是下载到D盘自己创建的文件中 2.下载完毕后打开此文件夹,点击最后一项 3.点击右上角高级选项&#xff0…

数据可视化(八)堆叠图,双y轴,热力图

1.双y轴绘制 #双Y轴可视化数据分析图表 #add_subplot() dfpd.read_excel(mrbook.xlsx) x[i for i in range(1,7)] y1df[销量] y2df[rate] #用来正常显示负号 plt.rcParams[axes.unicode_minus]False figplt.figure() ax1fig.add_subplot(1,1,1)#一行一列,第一个区域…

matlab智能算法程序包89套最新高清录制!matlab专题系列!

关于我为什么要做代码分享这件事? 助力科研旅程! 面对茫茫多的文献,想复现却不知从何做起,我们通过打包成品代码,将过程完善,让您可以拿到一手的复现过程以及资料,从而在此基础上,照…

Eclipse如何自动添加作者、日期等注释

一、创建类时自动添加注释 1、Window->Preferences 2、Java->Code Syle->Code Templates->Code->New Java files->Edit->要添加的注释->Apply 二、选中要添加的类或者方法通过AltShiftJ快捷键添加 1、Window->Preferences 2、Java->Code Syle…

java+springboot+mysql校园通讯录管理系统

项目介绍: 使用javaspringbootmysql开发的校园通讯录管理系统,系统包含超级管理员、管理员、用户角色,功能如下: 超级管理员:管理员管理;部门管理;用户管理;留言管理;公…

sqlserver 数据库显示 正在还原

问题描述之前不太会搞差异备份的恢复,然后恢复发生了失败之后这个数据库一直处于(正在还原……状态 并且出现数据库无法访问的情况 尝试解决1执行查询Restore Database 数据库名称 with Recovery然后不太能行 2执行查询Restore Database 数据库名称 with NoRecovery…

springboot+jpa+mysql电子数码商城含后台管理源码

#开发技术 #前端 bootstarp框架 html页面 #后端技术 SpringBoot SpringMvc jpa #开发工具 eclipse或者idea jdk1.8 mysql5点几版本 maven环境 maven3.5 前端地址::http://localhost:8080/mall 后台地址&#x…

Lombok 中 @EqualsAndHashCode注解的使用

Lombok 中 EqualsAndHashCode注解的使用 EqualsAndHashCode注解的作用 EqualsAndHashCode注解的作用就是自动实现model类的equals方法和hashcode方法。我们在实际工作中经常会使用lombok来简化我们的开发,例如我们可以在定义的model类上添加Data注解,从…

Flowable-结束事件-取消结束事件

目录 定义图形标记XML内容使用示例视频教程 定义 取消结束事件只能与 BPMN 事务子流程结合使用,它可以取消一个事务子流程的执行,同时 也只能在子流程中执行。实际应用中,会把取消事件,事务子流程,补偿事件一起用。当…

powershell几句话设置环境变量

设置环境变量比较繁琐,现在用这段话,在powershell中就可以轻松完成。 $existingPath [Environment]::GetEnvironmentVariable("Path", "Machine") $newPath "C:\Your\Path\Here"if ($existingPath -split ";"…

Detecting Everything in the Open World: Towards Universal Object Detection

1. 论文简介 论文题目《Detecting Everything in the Open World: Towards Universal Object Detection》发表情况,CVPR2023[论文地址][https://arxiv.org/pdf/2303.11749.pdf][代码地址][https://github.com/zhenyuw16/UniDetector] 2.背景与摘要 本文旨在解决通…

SpringBoot3之Web编程

标签:Rest.拦截器.swagger.测试; 一、简介 基于web包的依赖,SpringBoot可以快速启动一个web容器,简化项目的开发; 在web开发中又涉及如下几个功能点: 拦截器:可以让接口被访问之前,将请求拦截…

实践分享:小程序事件系统设计

微信小程序官方文档中解释说:事件是用于子组件向父组件传递数据,可以传递任意数据。 小程序开发中的事件是指视图层到逻辑层的通讯方式,主要是可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件&#…

SolidUI社区-从开源社区角度思考苹果下架多款ChatGPT应用

文章目录 背景下架背景下架原因趋势SolidUI社区的未来规划结语如果成为贡献者 背景 随着文本生成图像的语言模型兴起,SolidUI想帮人们快速构建可视化工具,可视化内容包括2D,3D,3D场景,从而快速构三维数据演示场景。SolidUI 是一个创新的项目…

征稿 | 第三届粤港澳大湾区人工智能与大数据论坛(AIBDF 2023)

第三届粤港澳大湾区人工智能与大数据论坛(AIBDF 2023) 2023 3rd Guangdong-Hong Kong-Macao Greater Bay Area Artificial Intelligence And Big Data Forum 本次高端论坛围绕建设国家数字经济创新发展试验区进行选题。全面贯彻落实党的二十大精神&…

分析一下vue3下会造成响应式丢失的情况

前言 在我们从vue2过渡到vue3的时候,对于数据响应式的变化其实是懵懵懂懂的。从以往直接在data函数里面定义变量到每一次都要使用ref/reactive时,是有些不适应的。但问题不大,毕竟在大前端时代中,如果不及时跟上时代的步伐&#…

WEB集群——负载均衡集群

目录 一、 LVS-DR 群集。 1、LVS-DR工作原理 2、LVS-DR模式的特点 3、部署LVS-DR集群 3.1 配置负载调度器(192.168.186.100) 3.2 第一台web节点服务器(192.168.186.103) 3.3 第二台web节点服务器(192.168.186.…

LeetCode96. 不同的二叉搜索树

96. 不同的二叉搜索树 文章目录 [96. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/)一、题目二、题解 一、题目 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的…

喆啡酒店十周年丨啡越时间限,ALL BY 10VE!

啡越时光热爱为伴 十年前,秉持对咖啡馆文化及复古风格的喜爱,喆啡酒店创造全新的Coffetel品类,将充满「温暖」「愉悦」「咖啡香」的格调体验带给消费者,成为无数人「旅途中的啡凡存在」。 十年间,喆啡酒店以热爱化为…

Dev控件 Gridcontrol,gridview 实现多选功能

在网上看了好多实现dev控件GridControl多选功能的方法,都很麻烦,其实GridControl有一个自带的实现多选功能的控件,很简单。 实现效果如下 无需代码代码,使用GridControl中自带的多选功能,在界面直接设置即可 1.找到要…