个人阅读NAI关于SDXL技术报告的笔记

2024 / 9 / 28

1. 零终端信噪比及其在图像生成领域的作用

基础概念

  1. 信噪比 (SNR, Signal-to-Noise Ratio)

    • 定义:SNR 是一个衡量信号质量的指标,表示有效信号与背景噪声之间的比率。

    • 作用:高 SNR 表示信号清晰,低 SNR 表示信号被噪声淹没,难以提取有效信息。

  2. ϵ预测 (ϵ-prediction)

    • 定义:模型的任务是从给定的图像中预测噪声(ϵ)。

    • 问题:在 SNR 为零时,所有输入都是噪声,模型无法从中学习到有意义的信息。

  3. v预测 (v-prediction)

    • 定义:v预测是一种新的训练目标,旨在改进模型在处理不同信噪比时的表现。

    • 优势:它通过将模型的任务从预测噪声转变为预测图像本身,确保在高或低 SNR 下都能进行有效学习。

  4. x0预测

    • 定义:模型在某一时刻需要预测的真实图像(x0)。

    • 作用:在 v预测中,模型的目标是从纯噪声中恢复出真实图像。

各概念之间的联系

  • 传统 ϵ 预测:在 SNR 为零时,模型无法有效学习,因为输入完全是噪声。

  • v 预测:通过将任务转变为从纯噪声中恢复出真实图像,确保模型在各种情况下都能进行有效学习。

综合解释

  • 微调 SDXL:我们对 SDXL 模型进行了微调,将其训练目标从 ϵ 预测转换为 v 预测。这一转变对于支持 Zero Terminal SNR 至关重要。

  • SNR 为零时:ϵ 预测变得无意义,因为所有输入都是噪声,模型无法学习如何从这些输入中生成有意义的图像。因此,我们采用 v 预测,它允许模型根据输入的纯噪声来恢复出真实图像 x0。

  • 一致性:通过这种方式,确保模型在训练和推理时的一致性,从而提高生成图像的质量和细节表现。

2. 为什么会出现生成“完全黑色”的现象

  • 现象:提示模型生成“完全黑色”的图像。一个经过训练可以从无限噪声(ZTSNR)中预测图像的模型可以响应这一提示。然而,如果我们从具有有限噪声的时间步开始推断,模型将输出一张亮度适中的图像,试图匹配起始噪声中的平均颜色,从而生成与提示无关的样本。

  • 图示:图2展示了一个模型在不同噪声调度下的生成结果。

扩散模型训练过程

  1. 从干净图像开始:从干净的图像样本 \mathbf{x_0 开始,逐步添加高斯噪声生成一系列噪声样本 \{\mathbf{x}_1, \mathbf{x_2, ..., \mathbf{x}_T\}。

  2. 预测噪声:模型学习从噪声样本 \mathbf{x_t 预测添加的噪声 \epsilon_t。

  3. 去噪生成:在推理时,模型从纯噪声开始,逐步去噪来生成新图像。

噪声调度的影响

  1. ZTSNR 调度:在训练的最后阶段,模型会接触到纯噪声(SNR 为 0)。模型学会如何从纯噪声中生成相关图像。

  2. 有限噪声调度:训练过程中,最后一个时间步添加的噪声不足以完全破坏图像的信号。模型学会在有限噪声下预测图像。

推理时的差异

  1. ZTSNR 模型:从纯噪声开始,模型知道如何从这种情况生成相关图像,直接生成纯黑色。

  2. 有限噪声模型:从有限噪声开始,模型会尝试从这个噪声中预测图像的平均亮度,生成亮度中等的图像。

3. 理解 Zero Terminal SNR 和 Mean-Leakage

Zero Terminal SNR

  • 定义:一种噪声调度策略,确保模型在训练过程中能够接触到纯噪声。

  • 目的:消除对残余信号的依赖,从完全随机的输入中生成相关图像。

Mean-Leakage

  • 定义:模型在处理带有噪声的输入时,错误地依赖于输入中的平均信号。

  • 问题:导致生成结果偏向于中等亮度,而不是根据具体提示生成相关图像。

段落解读

  • 训练 NAIv3:使用 ZTSNR 调度,模型在训练时接触到纯噪声,消除对残余信号的依赖。

  • 训练至高噪声水平:模型学会了从文本条件中提取相关信息,而不是依赖于输入中的平均值。

  • 一致性:训练过程与推理过程之间的一致性得以增强,确保生成结果更符合文本提示。

4. 有限噪声 vs 无限噪声训练

有限噪声下的训练

  • 信号残留:输入数据仍包含可识别的信号,模型试图将生成结果拉回到这个信号附近。

  • 最小化损失:模型通过调整生成结果的平均值来降低损失。

  • 梯度下降:梯度下降算法引导模型朝着降低损失的方向更新参数。

无限噪声下的训练

  • 无残留信号:模型无法依赖于任何残留信号,必须从纯噪声中提取有意义的信息。

  • 学习新策略:模型根据文本提示生成相关图像,而不是依赖于输入中的任何平均值。

  • 增强文本条件:模型更加依赖文本条件,避免不必要的颜色调整。

5. 有关纯噪声和有限噪声的平均色问题

no ZTSNR分析

  • 现象:生成的图像出现不必要的高对比度粗糙特征,试图将画布的平均颜色拉回到零。

  • 图示:图3展示了在没有 ZTSNR 的情况下,生成的图像会出现不必要的高对比度粗糙特征。

  • 原因

    • 均值泄漏(Mean-Leakage):在没有 ZTSNR 的情况下,模型在训练时未能接触到纯噪声,导致其在生成时依赖于输入噪声中的残留信号。模型试图将生成结果调整到输入噪声的平均值,从而导致与提示不符的高对比度特征。

    • 信号残留:有限噪声调度使得模型在训练过程中学会依赖于输入中的信号残留,这种依赖在推理阶段会导致不准确的生成。

ZTSNR分析

  • 现象:使用 ZTSNR 时,模型能够在无限噪声下提出相关的平均画布颜色,而没有 ZTSNR 时,模型错误地认为平均颜色应为零,从而添加白色以实现这一点。

  • 图示:图4展示了在有和没有 ZTSNR 情况下的中间去噪预测。

  • 原因

    • 纯噪声接触:ZTSNR 使得模型在训练过程中接触到纯噪声,从而学习如何从完全随机的输入中提取有意义的信息。这使得模型能够更好地根据文本提示生成相关颜色和低频信息。

    • 去除均值泄漏影响:通过 ZTSNR,模型不再依赖于有限噪声中的信号残留,而是根据文本条件进行预测。这使得生成结果更符合提示,并避免了不必要的颜色调整。

6. 调整噪声调度以解决高分辨率图像生成问题

问题背景

  • 问题:SDXL 模型的最大噪声水平(\sigma_{\max})不足以破坏高分辨率图像中的低频信号。

  • 解决:通过调整噪声调度,引入更高的噪声水平。

具体解释

  • 调整噪声调度:将噪声调度曲线调整为收敛于无限大(\sigma = \infty),在训练过程中引入更高的噪声水平。

  • 实际效果

    • **增加 \sigma_{\max}**:例如将其翻倍,可以恢复图像中的一致性和细节。

    • 处理高分辨率图像:随着分辨率的增加,图像中冗余信号也增加,需要更多的噪声来达到相同的 SNR,从而破坏等比例的信号。

7. NAI3模型的训练数据预处理方法(纵横比分桶)

问题背景

  • 不自然的裁剪:传统图像生成模型倾向于产生不自然的裁剪效果,例如人物缺少脚或头部,或物品部分超出画面。

  • 中心裁剪的局限:通常采用中心裁剪来处理方形数据,但这不符合大多数照片和艺术作品的分布,导致文本和图像之间的不匹配。

解决方案:长宽比分桶

  • 随机裁剪的不足:虽然随机裁剪比中心裁剪稍有改善,但仍然存在问题。

  • 可变图像尺寸:使用可变图像尺寸进行训练可以避免重复元素和模糊图像的问题。

自定义批量生成

  • 自定义代码实现:实现自定义批量生成代码。

  • 分桶方法

    • 最大图像尺寸:512×768,最大维度为 1024。

    • 生成不同分辨率的桶:通过改变宽度和高度组合来创建存储桶,以符合最大尺寸限制。

    • 修剪重复的存储桶:并添加 512×512 的标准存储桶大小。

图像加载

  • 调整图像以适应桶分辨率

    • 保持长宽比进行缩放

    • 随机裁剪:如果无法精确匹配,则进行随机裁剪以确保失真最小。

技术细节

  • 多GPU训练:在每个 epoch 前对数据集进行分片,以确保每个 GPU 处理相同大小的子集。

  • 权重分配:从加权分布中随机选择一个桶,确保训练过程中没有偏差。

总结

通过上述方法,能够更好地处理不同尺寸和比例的图像,提高生成质量,并减少不自然裁剪带来的问题。这种方法在保持批量处理效率的同时,确保了更好的图像构图和标记效率。

参考文献

  1. https://en.wikipedia.org/wiki/Signal-to-noise_ratio_%28imaging%29

  2. https://en.wikipedia.org/wiki/Signal-to-noise_ratio

  3. https://blog.csdn.net/weixin_44966641/article/details/139337965

  4. https://info.support.huawei.com/info-finder/encyclopedia/zh/%E4%BF%A1%E5%99%AA%E6%AF%94.html

  5. https://openaccess.thecvf.com/content/WACV2024/papers/Lin_Common_Diffusion_Noise_Schedules_and_Sample_Steps_Are_Flawed_WACV_2024_paper.pdf

  6. https://wrong.wang/paper/common-diffusion-noise-schedules-and-sample-steps-are-flawed/

  7. https://github.com/huggingface/diffusers/issues/778

  8. https://ppl-ai-file-upload.s3.amazonaws.com/web/direct-files/7501334/2b26b581-3134-44b5-8c33-7163d6fb6002/2409.15997v1.pdf

  9. https://shelf.io/blog/preventing-data-leakage-in-machine-learning-models/

  10. https://lilianweng.github.io/posts/2021-07-11-diffusion-models/

  11. https://github.com/Project-MONAI/GenerativeModels/issues/397

  12. https://www.cnblogs.com/pjishu/p/17776223.html

  13. https://pplx-res.cloudinary.com/image/upload/v1727404237/user_uploads/walkzuywz/image.jpg

  14. https://ar5iv.labs.arxiv.org/html/2301.10972

  15. https://openreview.net/forum?id=ylHLVq0psd

  16. https://arxiv.org/html/2409.15997v1