Sign In

[稍硬核] 为什么你的模型无法生成很暗或很亮的图像?

[稍硬核] 为什么你的模型无法生成很暗或很亮的图像?

介绍

目前,很多 SD 模型无法有效生成亮度很暗或很亮的图像。您可以通过使用以下几段提示词来验证您所使用的模型是否具有此种能力:

  • solid black background:纯黑图像

  • black dog with black background:黑色的狗和黑色的背景

  • solid white background:纯白图像

  • white dog with white background:白色的狗和白色的背景

如果您无法用如 solid black background 生成对应纯黑的图像,或是模型生成的图像无法与每段提示词的内容所描述的色彩和明暗匹配,那么您的模型就不具备此种能力。

本文将介绍目前图像生成扩散模型所面临的平均亮度问题,并在之后逐一介绍解决该问题的几种方法。

平均亮度问题

平均亮度问题,也叫平均灰度问题,指常规的图像生成扩散模型,如 Stable Diffusion,无法生成很暗或很亮的图像的问题。该问题进而导致图像美学质量低,且与训练数据不匹配。

成因概括

平均亮度问题的成因是 生成和训练不匹配。训练时加噪不彻底,导致本应变为纯噪声的图像在训练期间残留了少量的原图信息,而在生成时却从纯噪声开始采样。

翻译成人话就是,训练时,模型捕捉到了图像和光影信息的对应关系;但是在生成图像时,我们并未提供光影信息,这时,模型以为我们要生成一张光影很平均的图像,从而发生了平均亮度问题。

原理概括

阅读该部分要求读者对扩散模型的原理有所了解。

主流的扩散模型采用噪声预测。噪声预测预测图像对应的纯噪声而不是图像本身,虽然它更稳定,但在末端时间步 T 时却会在计算中出现分母为 0 的问题。为了避免这一问题,许多噪声调度器(noise scheduler)都会退而求其次地选择不达到 T,而是达到 T-e,其中,e 是一个很小的数,以近似地渐进纯噪声。这种不完全的加噪导致最终“纯噪声”中携带了少量低频信号。这些信号可能包含了图像的大致分布,例如整体明暗分布等。在此过程中,模型所学便是“根据一个近似纯噪声中的微小信息还原该噪声为图像”,而不是“还原纯噪声为图像”了。

上图是对整体明暗偏黑和偏白的两张图像加噪的结果,从加噪后的噪声中可以明显观察到其与原图明暗度的相关关系。

一个数值上的例子是,原先预期加噪 T 步后的图像是纯噪声 xT = 0*x0 + 1*ε,而实际加噪 T 步得到的图像是“近似”纯噪声 xT'=0.068265*x0 + 0.997667*ε,其中 ε 表示标准高斯噪声,x0 表示原始图像。

这种“近似”手段在推理时会引发问题。推理时,我们为采样器提供了一个纯高斯噪声,均值为 0,方差为 1,不带有任何细小的信息。而经过训练的模型却认为该纯噪声带有微小的信息,例如,均值为 0 可能表示该图像明度平均。在此基础上,推理出的图像便明度平均了。

解决方案

x 预测

x 预测即最原始的,在训练中预测原图而非噪声。x 预测最直观,但也最不稳定。目前主流的预测方式仍然是噪声预测和 V 预测。

噪声偏移

噪声偏移是最早的解决方式,即 通过在训练中随机扰乱加噪后图像中残留的信息,来妨碍模型去关联残留信息和原始图像。噪声偏移不需要设定很高的值。相反,噪声偏移值设置越高,对训练越不利。噪声偏移仅用于中和纯噪声中的残留信息,大约 0.03~0.04 就足够了。

开启噪声偏移后,仅需很少的训练,就几乎能完全摧毁模型的错误观念,修复平均亮度问题,让模型生成很暗和很亮的图像了。因此,对于基础模型训练和微调,仅需在训练的尾声部分加入推荐值的噪声偏移即可。

噪声偏移虽然在效果上成功生成了很亮和很暗的图像,但并没有解决根本问题,也使得生成的图像和训练数据不一致。

零终端信噪比

零终端信噪比 [1] 即在训练中,通过调整噪声调度器的参数,来强制将训练图像加噪为纯噪声,而不是残留微小信息的近似纯噪声。一般来说,该方式应与 V 预测而非噪声预测一同使用,以避免数学计算中的除 0 操作。

该方式 几乎从根本上解决了问题,但似乎对训练量要求较高。另外,由于它需要与 V 预测搭配使用,因此基础模型也需要使用 V 预测(PS:SD1.5/SDXL 是噪声预测)。

SingDiffusion

SingDiffusion [2] 是一个在生成时即插即用的额外组件,它本质上是一个只执行一步推理的额外模型,负责在推理的第一步将纯噪声用 x 预测(不会产生平均亮度问题的预测方式)推理,后续步骤改用原本的模型和预测方式推理。

图:SingDiffusion 原理示意图。SingDiffusion 接管了第一步生成,在生成阶段修复了不完全训练加噪问题下,采样噪声和真实噪声之间的间隔。

与噪声偏移和零终端信噪比方法相比,SingDiffusion 不需要额外的训练,但会稍微增加推理的计算量。另外,由于额外组件其实同样也是预训练模型,因此无法泛化到所有大模型。

参考资料

[1] Lin, Shanchuan, et al. "Common diffusion noise schedules and sample steps are flawed." Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision. 2024.

[2] Zhang, Pengze, et al. "Tackling the Singularities at the Endpoints of Time Intervals in Diffusion Models." arXiv preprint arXiv:2403.08381 (2024).

0

Comments