就在刚刚,号称是「开源版 midjourney」的 stable diffusion xl 0.9 的技术报告,新鲜出炉。
「加强版」stable diffusion 最新技术报告出炉了!
报告地址:
在 4 月开启公测后,stable diffusion xl 受到不少人的青睐,号称「开源版的 midjourney」。
在画手、写字等细节上,sdxl 能够全局把控,最重要的是不用超长 prompt 就可实现。
不仅如此,比起需要氪金的 midjourney,sdxl 0.9 可以免费体验!
有趣的是,研究团队在最后的附录中,竟然感谢了「chatgpt 提供的写作帮助」。
「小胜」midjourney
那么,与 midjourney 相比,sdxl 究竟有多能打?
报告中,研究人员从每个类别中随机选择了 5 个提示,并针对每个提示使用 midjourney和 sdxl 生成了四张 1024×1024 的图像。
然后将这些图像提交给 aws groundtruth 任务组,该任务组根据遵循提示进行投票。
总体而言,在遵循提示方面,sdxl 略优于 midjourney。
对比涵盖了 partiprompts基准测试中的所有「类别」和「挑战」。
值得注意的是,sdxl 在 54.9% 的情况下优于 midjourney v5.1。
初步测试表明,最近发布的 midjourney v5.2 在理解提示方面反而有所降低。不过,生成多个提示的繁琐过程妨碍了进行更广泛测试的速度。
p2 基准中的每个提示都按照类别和挑战进行了组织,每个类别和挑战都专注于生成过程的不同难点。
如下展示了 p2 基准中每个类别和挑战(图 11)的比较结果。
在 6 个类别中的 4 个,sdxl 表现优于 midjourney,在 10 个挑战中的 7 个,两个模型之间没有显著差异,或者 sdxl 表现优于 midjourney。
大家也可以来猜猜看,下面这组图中,哪些是 sdxl 生成的,哪些是 midjourney 生成的。
sdxl:开源最强文生图
去年,号称最强文生图模型 stable diffusion 开源,点燃了全球生成式 ai 的火把。
比起 openai 的 dall-e,stable diffusion 让人们能够在消费级显卡上实现文生图效果。
stable diffusion 是一种潜在的文本到图像的扩散模型 ,应用非常广泛。
近来基于功能磁共振成像 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
研究人员对 stable diffusion 架构进行了改进。这些都是模块化的,可以单独使用,或一起使用来扩展任何模型。
报告称,尽管以下策略是作为潜在扩散模型的扩展开展的 ,但其中大多数也适用于像素空间的对应物。
当前,dm 已被证明是图像合成的强大生成模型,卷积 unet 架构成为基于扩散的图像合成的主导架构。
随着 dm 发展,底层架构也在不断演进:从增加自注意力和改进升级层,到文本图像合成的交叉注意力,再到纯粹基于 transformer 架构。
在 stable diffusion 不断改进中,研究人员也在遵循这一趋势,将大部分 transformer 计算转移到 unet 中较低级的特征中。
特别是,与原来的 sd 架构相比,研究人员在 unet 中使用了不同的 transformer 块异构分布。
为了提高效率,并在最高特征级别中省略了 transformer 块,在较低级别中使用 2 个和 10 个块,还在 unet 中完全删除了最低级别,如下图所示。
研究人员选择了一个更强大的预训练文本编码器,用于文本调节。
具体来说,将 openclip vit-bigg 与 clip vit-l 结合使用,这里沿着通道轴连接倒数第二个文本编码器输出。
除了使用交叉注意层来约束模型的文本输入之外,研究人员还遵循 ,并且 openclip 模型的混合嵌入文本上附加约束模型。
由此,这些因素导致了 unet 中的模型参数大小为 2.6b,文本编码器总参数为 817m。
微调
潜在扩散模型最大的缺点是,由于它是两阶段架构,训练一个模型需要最小的图像大小。
解决这个问题主要有 2 个方法,要么丢弃低于某个最小分辨率的训练图像,要么选择超小的高级图像。
然而,第一种方法会导致可能导致大量的训练数据被丢弃,图像性能会损失。研究人员为 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 完成的,但研究人员可以通过改进自编码器来改善生成图像中的局部、高频细节。
为此,研究人员以更大的批处理规模来训练用于原始 sd 相同的自编码器结构,并以指数移动平均数来跟踪权重。
由此产生的自编码器在所有评估的重建指标中,都优于原始模型。
sdxl 诞生了
研究人员在一个多阶段的过程来训练最终的模型 sdxl。sdxl 使用了自编码器,和 1000 步的离散时间扩散计划。
首先,在一个内部数据集上预训练一个基础模型,其高度和宽度分布显示为 60 万个优化步骤,分辨率为 256 × 256,批大小为 2048,使用如上所述的尺寸和裁剪调节。
然后,研究人员继续对 512×512 的图像进行训练,再进行 20 万个优化步骤,最后利用全面训练,结合 0.05 的偏移噪声水平,在约 1024×1024 像素区域不同纵横比训练模型。
在细化阶段上,研究人员发现得到的模型有时会产生局部质量低的样本,如下图所示。
为了提高样本质量,他们在相同的潜在空间中训练了一个独立的 ldm,专门处理高质量、高分辨率的数据,并采用 sdedit 在基本模型样本上引入去噪处理。
在推理过程中,研究人员使用相同的文本输入,从基本 sdxl 渲染潜在信息,并使用细化模型在潜在空间中直接扩散和去噪。
值得一提的是,这一步能够提高背景和人脸的样本质量,并且可选。
局限性
虽然 sdxl 在性能上已经有了不小的提升,但模型依然存在着明显的局限性。
首先,sdxl 还是不能很好地处理比如人手这类的复杂结构。
研究人员推测,产生这种问题的原因是,由于不同图像中人手以及其他结构复杂的物体,存在着很大的差异性,因此模型很难提取出真实的 3d 形状。
其次,sdxl 生成的图像还远不及照片那样逼真。
在一些微妙的细节上,比如弱光效果或纹理变化,ai 生成的图像可能会出现缺失或表现得不够准确。
此外,当图像中包含有多个物体或主体时,模型可能会出现所谓的「概念溢出」现象。这个问题表现为,不同视觉元素的意外合并或重叠。
例如,下图中的橙色太阳镜,就是因为「橙色毛衣」出现了概念溢出。
而在图 8 中,本应该戴着「蓝色帽子」和「红色手套」的企鹅,在生成的图像中却是戴着「蓝色手套」和「红色帽子」。
与此同时,一直困扰着文生图模型的「文字生成」部分,依然是个大问题。
如图 8 所示,模型生成的文本有时可能包含随机字符,或者与给定的提示并不一致。
未来的工作
对此,研究人员表示,对于模型的进一步改进,主要会集中在以下几个方面:
?单阶段生成
目前,团队使用的是一个额外的细化模型以两阶段的方式,来生成 sdxl 的最佳样本。这样就需要将两个庞大的模型加载到内存中,从而降低了可访问性和采样速度。
?文本合成
规模和更大的文本编码器有助于改善文本渲染能力,而引入字节级 tokenizer 或将模型扩展到更大规模,可能会进一步提高文本合成的质量。
?架构
在探索阶段,团队尝试了基于 transformer 的架构,如 uvit 和 dit,但没有显著改善。然而,团队仍然认为,通过更仔细的超参数研究,最终能够实现更大的基于 transformer 的架构的扩展。
?蒸馏
虽然原始的 stable diffusion 模型已经得到了显著的改进,但代价是增加了推断的成本。因此,未来的工作将集中于减少推断所需的计算量,并提高采样速度上。比如通过引导蒸馏、知识蒸馏和渐进蒸馏等方法。
目前,最新报告还只在 github 上可以查看。stability ai 的 ceo 称,马上会上传到 arxiv 上。
参考资料:
广告声明:文内含有的对外跳转链接,用于传递更多信息,节省甄选时间,结果仅供参考,it之家所有文章均包含本声明。
热门文章