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,克服此问题需要进一步强化模型文本生成能力;
    在这里插入图片描述

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

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

相关文章

APP外包开发的android开发模式

开发 Android 应用有多种方法,每种方法都有其优势和适用场景。综合考虑各自的特点,你可以根据项目的需求和团队的技能选择最合适的开发方法。今天和大家分享几种常见的开发方法以及它们之间的对比,希望对大家有所帮助。北京木奇移动技术有限公…

NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 论文阅读

论文信息 题目:NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 作者:Antoni Rosinol, John J. Leonard, Luca Carlone 代码:https://github.com/ToniRV/NeRF-SLAM 来源:arxiv 时间&#xff…

安装element-plus报错:Conflicting peer dependency: eslint-plugin-vue@7.20.0

VSCode安装element-plus报错: D:\My Programs\app_demo>npm i element-plus npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: vue/eslint-config-standard6.1.0 npm ERR! Found: eslint-plugin-vue8.7.1 npm E…

机器学习实战1-kNN最近邻算法

文章目录 机器学习基础机器学习的关键术语 k-近邻算法(KNN)准备:使用python导入数据实施kNN分类算法示例:使用kNN改进约会网站的配对效果准备数据:从文本文件中解析数据分析数据准备数据:归一化数值测试算法…

Go语言并发编程(千锋教育)

Go语言并发编程(千锋教育) 视频地址:https://www.bilibili.com/video/BV1t541147Bc?p14 作者B站:https://space.bilibili.com/353694001 源代码:https://github.com/rubyhan1314/go_goroutine 1、基本概念 1.1、…

鉴源论坛·观擎丨浅谈操作系统的适航符合性(上)

作者 | 蔡喁 上海控安可信软件创新研究院副院长 版块 | 鉴源论坛 观擎 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 源头和现状​​​​​​​ 在越来越多的国产机载系统研制中,操作系统软件的选择对后续开展研制以及适航举证活动带来…

码云 Gitee + Jenkins 配置教程

安装jdk 安装maven 安装Jenkins https://blog.csdn.net/minihuabei/article/details/132151292?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22132151292%22%2C%22source%22%3A%22minihuabei%22%7D 插件安装 前往 Manage Jen…

基于Windows手动编译openssl和直接安装openssl

零、环境 win10-64位 VS2019 一、手动编译 前言:对于一般的开发人员而言,在 openssl 上下载已经编译好的 openssl 库,然后直接拿去用即可,,不用手动编译,{见下文直接安装}。。。对于一些开发人员&#…

Jmeter录制HTTPS脚本

Jmeter录制HTTPS脚本 文章目录 添加“HTTP代理服务器”设置浏览器代理证书导入存在问题 添加“HTTP代理服务器” 设置浏览器代理 保持端口一致 证书导入 点击一下启动让jmeter自动生成证书,放在bin目录下: 打开jmeter的SSL管理器选择刚刚生成的证书&…

# 关于Linux下的parted分区工具显示起始点为1049kB的问题解释

关于Linux下的parted分区工具显示起始点为1049kB的问题解释 文章目录 关于Linux下的parted分区工具显示起始点为1049kB的问题解释1 问题展示:2 原因3 修改为KiB方式显示4 最后 1 问题展示: kevinTM1701-b38cbc23:~$ sudo parted /dev/nvme1n1 GNU Part…

SAP 开发编辑界面-关闭助手

打开关闭助手时的开发界面如下: 关闭关闭助手后的界面如下: 菜单栏: 编辑--》修改操作--》关闭助手

会这个Python的测试员,工作都不会太差!

Python语言得天独厚的优势使之在业界的火热程度有增无减,尤其是在经历了互联网,物联网,云计算,大数据,人工智能等浪潮的推动下,其关注度,普适度一路走高。 对于测试人员来说,很多人…

【CSS】旋转中的视差效果

效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"viewport" content"widthdevice-…

RK3568 lunch新增设备

rk3568 android9.0 &#xff0c;32位平台 1.进入devices/rockchip/rk356x/ 将rk3568_box_32 拷贝一份&#xff0c;命名为hdx6 2.打开vendorsetup.sh,添加lunch选项 add_lunch_combo hdx6-user add_lunch_combo hdx6-userdebug 3.进入hdx6&#xff0c;修改rk3568_box_32.mk…

Linux root用户执行修改密码命令,提示 Permission denied

问题 linux系统中&#xff08;ubuntu20&#xff09;&#xff0c;root用户下执行passwd命令&#xff0c;提示 passwd: Permission denied &#xff0c;如下图&#xff1a; 排查 1.执行 ll /usr/bin/passwd &#xff0c;查看文件权限是否正确&#xff0c;正常情况是 -rwsr-xr…

阿里云二级域名配置

阿里云二级域名配置 首先需要进入阿里云控制台的域名管理 1.选择域名点击解析 2.添加记录 3.选择A类型 4.主机记录设置【可以aa.bb或者aa.bb.cc】 到时候会变成&#xff1a;aa.bb.***.com 5.解析请求来源设置为默认 6.记录值 设置为要解析的服务器的ip地址 7.TTL 默认即…

MyCat水平分表

1.水平拆分案例场景 2.MyCat配置 这个表只是在 schema.xml配置的逻辑表&#xff0c;在具体的数据库里面是没有的 根据id的模确定数据存在哪个节点上&#xff01;&#xff01;

基于图像形态学处理的目标几何形状检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................................... %二进制化图像 Images_bin imbinari…

7个月的测试经验,来面试居然开口要18K,我一问连5K都不值...

2021年8月份我入职了深圳某家创业公司&#xff0c;刚入职还是很兴奋的&#xff0c;到公司一看我傻了&#xff0c;公司除了我一个测试&#xff0c;公司的开发人员就只有3个前端2个后端还有2个UI&#xff0c;在粗略了解公司的业务后才发现是一个从零开始的项目&#xff0c;目前啥…

前端技术基础-css

前端技术基础-css【了解】 一、css理解 概念&#xff1a;CSS&#xff1a;C(cascade) SS(StyleSheet) &#xff0c;级联样式表。作用&#xff1a;对网页提供丰富的视觉效果&#xff0c;进行美化页面(需要在html页面基础上)样式规则&#xff1a;样式1&#xff1a;值1;样式2&…