「加强版」Stable Diffusion最新技术报告出炉了!
报告地址:https://github.com/Stability-AI/generative-models/blob/main/assets/sdxl_report.pdf
在4月开启公测后,Stable Diffusion XL受到不少人的青睐,号称「开源版的Midjourney」。
在画手、写字等细节上,SDXL能够全局把控,最重要的是不用超长prompt就可实现。
不仅如此,比起需要氪金的Midjourney,SDXL 0.9可以免费体验!
有趣的是,研究团队在最后的附录中,竟然感谢了「ChatGPT提供的写作帮助」。
那么,与Midjourney相比,SDXL究竟有多能打?
报告中,研究人员从每个类别中随机选择了5个提示,并针对每个提示使用Midjourney(v5.1,种子设定为2)和SDXL生成了四张1024×1024的图像。
然后将这些图像提交给AWS GroundTruth任务组,该任务组根据遵循提示进行投票。
总体而言,在遵循提示方面,SDXL略优于Midjourney。
来自17,153个用户的反馈
对比涵盖了PartiPrompts(P2)基准测试中的所有「类别」和「挑战」。
值得注意的是,SDXL在54.9%的情况下优于Midjourney V5.1。
初步测试表明,最近发布的Midjourney V5.2在理解提示方面反而有所降低。不过,生成多个提示的繁琐过程妨碍了进行更广泛测试的速度。
P2基准中的每个提示都按照类别和挑战进行了组织,每个类别和挑战都专注于生成过程的不同难点。
如下展示了P2基准中每个类别(图10)和挑战(图11)的比较结果。
在6个类别中的4个,SDXL表现优于Midjourney,在10个挑战中的7个,两个模型之间没有显著差异,或者SDXL表现优于Midjourney。
大家也可以来猜猜看,下面这组图中,哪些是SDXL生成的,哪些是Midjourney生成的。
(答案会在下文中揭晓)
去年,号称最强文生图模型Stable Diffusion开源,点燃了全球生成式AI的火把。
比起OpenAI的DALL-E,Stable Diffusion让人们能够在消费级显卡上实现文生图效果。
Stable Diffusion是一种潜在的文本到图像的扩散模型(DM) ,应用非常广泛。
近来基于功能磁共振成像fMRI重建大脑图像的研究,以及音乐生成的研究都是基于DM展开的。
而这个爆火工具背后的初创公司Stability AI,在今年4月再次推出, Stable Diffusion改进版本——SDXL。
根据用户研究,SDXL的性能始终超过Stable Diffusion以前所有的版本,比如SD 1.5 、SD2.1。
报告中,研究人员提出了导致这种性能提升的设计选择,包括:
1)与以前的Stable Diffusion模型相比,UNet主干架构增加了3倍;
2)两种简单而有效的附加调节技术,不需要任何形式的额外监督;
3)一个单独的基于扩散的细化模型,该模型对SDXL产生的潜在信号采用去噪处理 ,以提高样本的视觉质量。
研究人员对Stable Diffusion架构进行了改进。这些都是模块化的,可以单独使用,或一起使用来扩展任何模型。
报告称,尽管以下策略是作为潜在扩散模型的扩展开展的 ,但其中大多数也适用于像素空间的对应物。
当前,DM已被证明是图像合成的强大生成模型,卷积UNet架构成为基于扩散的图像合成的主导架构。
随着DM发展,底层架构也在不断演进:从增加自注意力和改进升级层,到文本图像合成的交叉注意力,再到纯粹基于Transformer架构。
在Stable Diffusion不断改进中,研究人员也在遵循这一趋势,将大部分Transformer计算转移到UNet中较低级的特征中。
特别是,与原来的SD架构相比,研究人员在UNet中使用了不同的Transformer块异构分布。
为了提高效率,并在最高特征级别中省略了Transformer块,在较低级别中使用2个和10个块,还在UNet 中完全删除了最低级别(8倍下采样),如下图所示。
SDXL与Stable Diffusion不同版本模型的比较
研究人员选择了一个更强大的预训练文本编码器,用于文本调节。
具体来说,将OpenCLIP ViT-bigG与CLIP ViT-L结合使用,这里沿着通道轴连接倒数第二个文本编码器输出。
除了使用交叉注意层来约束模型的文本输入之外,研究人员还遵循 ,并且OpenCLIP模型的混合嵌入文本上附加约束模型。
由此,这些因素导致了UNet中的模型参数大小为2.6B,文本编码器总参数为817M。
潜在扩散模型(LDM)最大的缺点是,由于它是两阶段架构,训练一个模型需要最小的图像大小。
解决这个问题主要有2个方法,要么丢弃低于某个最小分辨率的训练图像,(SD 1.4/1.5丢弃所有低于512像素的图像)要么选择超小的高级图像。
然而,第一种方法会导致可能导致大量的训练数据被丢弃,图像性能会损失。研究人员为SDXL预先训练数据集做了一个可视化效果。
对于特殊的数据选择,丢弃低于256×256像素预训练分辨率的所有样本,将导致39%数据丢失。
而第二种方法,通常会带来升级的伪影,这些伪影可能会泄露到最终的模型输出中,导致样本模糊。
对此,研究人员建议将UNet模型以原始分辨率为条件。这在训练期间非常容易获得。
特别是,提供了原始图像的高度和宽度作为模型
的附加条件。
每个组件都使用傅里叶特征编码独立嵌入,并连接成一个向量,研究团队通过添加到时间步长嵌入中来反馈到模型中。
在推断时,用户可以通过这种尺寸调节来设置图像所需的直观分辨率。显然 ,模型已经学会将条件
与分辨率相关的图像特性。
如图,研究人员显示了从SDXL中用相同的随机种子抽取4个样本,并改变大小调节。当调节较大的图像尺寸时,图像质量明显提高。
如下是SDXL的输出,与SD以前版本的比较。对于每个prompt,研究人员在DDIM采样器和cfg-scale 8.0的50步的3个随机样本。
在先前的SD模型中,合成的图象可能会被不正确地裁剪,比如左边例子中SD 1.5和SD 2.1生成的猫头。
而从以下这些对比中不难看出,SDXL基本上已经把这个问题给解决了。
能够实现如此显著的改善,是因为研究人员提出了一种简单而有效的条件化方法:
在数据加载过程中,统一采样裁剪坐标
和
(分别指定从左上角沿高度和宽度轴裁剪的像素数量的整数),并通过傅里叶特征嵌入将它们作为条件化参数输入模型,类似于上述尺寸条件化方法。
然后使用连接嵌入
作为附加条件参数。
在此,研究团队特别强调,这并不是唯一适用于LDMs的技术,裁剪和尺寸调节可以很容易地结合起来。
在这种情况下,沿着通道维度连接嵌入的特征,然后将其添加到嵌入UNet的时间步长中。
如图,通过调优
,可以成功地模拟推理过程中的裁剪量。
受到以上技术启发,研究人员还对模型进行微调,以同时处理多个纵横比:将数据分割成不同纵横比的桶形,在这里尽可能保持像素计数接近1024×1024,相应地以64的倍数改变高度和宽度。
虽然大部分的语义构成是由LDM完成的,但研究人员可以通过改进自编码器来改善生成图像中的局部、高频细节。
为此,研究人员以更大的批处理规模(256 vs 9)来训练用于原始SD相同的自编码器结构,并以指数移动平均数来跟踪权重。
由此产生的自编码器在所有评估的重建指标中,都优于原始模型。
研究人员在一个多阶段的过程来训练最终的模型SDXL。SDXL使用了自编码器,和1000步的离散时间扩散计划。
首先,在一个内部数据集上预训练一个基础模型,其高度和宽度分布显示为60万个优化步骤,分辨率为256 × 256,批大小为2048,使用如上所述的尺寸和裁剪调节。
然后,研究人员继续对512×512的图像进行训练,再进行20万个优化步骤,最后利用全面训练,结合0.05的偏移噪声水平,在约1024×1024像素区域不同纵横比训练模型。
在细化阶段上,研究人员发现得到的模型有时会产生局部质量低的样本,如下图所示。
为了提高样本质量,他们在相同的潜在空间中训练了一个独立的LDM,专门处理高质量、高分辨率的数据,并采用SDEdit在基本模型样本上引入去噪处理。
在推理过程中,研究人员使用相同的文本输入,从基本SDXL渲染潜在信息,并使用细化模型在潜在空间中直接扩散和去噪。
来自SDXL的1024×1024样本放大,没有(左)和有(右)细化模型
值得一提的是,这一步能够提高背景和人脸的样本质量,并且可选。
虽然SDXL在性能上已经有了不小的提升,但模型依然存在着明显的局限性。
首先,SDXL还是不能很好地处理比如人手这类的复杂结构。
研究人员推测,产生这种问题的原因是,由于不同图像中人手以及其他结构复杂的物体,存在着很大的差异性,因此模型很难提取出真实的3D形状。
其次,SDXL生成的图像还远不及照片那样逼真。
在一些微妙的细节上,比如弱光效果或纹理变化,AI生成的图像可能会出现缺失或表现得不够准确。
此外,当图像中包含有多个物体或主体时,模型可能会出现所谓的「概念溢出」现象。这个问题表现为,不同视觉元素的意外合并或重叠。
例如,下图中的橙色太阳镜,就是因为「橙色毛衣」出现了概念溢出。
而在图8中,本应该戴着「蓝色帽子」和「红色手套」的企鹅,在生成的图像中却是戴着「蓝色手套」和「红色帽子」。
与此同时,一直困扰着文生图模型的「文字生成」部分,依然是个大问题。
如图8所示,模型生成的文本有时可能包含随机字符,或者与给定的提示并不一致。
对此,研究人员表示,对于模型的进一步改进,主要会集中在以下几个方面:
• 单阶段生成
目前,团队使用的是一个额外的细化(refinement)模型以两阶段的方式,来生成SDXL的最佳样本。这样就需要将两个庞大的模型加载到内存中,从而降低了可访问性和采样速度。
• 文本合成
规模和更大的文本编码器(OpenCLIP ViT-bigG)有助于改善文本渲染能力,而引入字节级tokenizer或将模型扩展到更大规模,可能会进一步提高文本合成的质量。
• 架构
在探索阶段,团队尝试了基于Transformer的架构,如UViT和DiT,但没有显著改善。然而,团队仍然认为,通过更仔细的超参数研究,最终能够实现更大的基于Transformer的架构的扩展。
• 蒸馏
虽然原始的Stable Diffusion模型已经得到了显著的改进,但代价是增加了推断的成本(包括显存和采样速度)。因此,未来的工作将集中于减少推断所需的计算量,并提高采样速度上。比如通过引导蒸馏、知识蒸馏和渐进蒸馏等方法。
目前,最新报告还只在GitHub上可以查看。Stability AI的CEO称,马上会上传到arxiv上。
参考资料:
https://twitter.com/emostaque/status/1676315243478220800?s=46&t=iBppoR0Tk6jtBDcof0HHgg
https://github.com/Stability-AI/generative-models/blob/main/assets/sdxl_report.pdf
本文来自微信公众号“新智元”(ID:AI_era),作者:新智元,编辑:桃子 好困,36氪经授权发布。