diffusion 训练trick 多横纵比设置
Diffusion模型训练中的多横纵比设置
在生成图像的任务中,横纵比的选择和处理方式会影响到训练结果。
现有图像生成模型的一个常见问题是,它们很容易生成裁剪不自然的图像。这是因为这些模型被训练来生成方形图像。然而,大多数照片和艺术品都不是正方形的。然而,该模型只能同时处理相同大小的图像,并且在训练期间,通常的做法是同时对多个训练样本进行操作,以优化所用 GPU 的效率。作为一种折衷,我们选择方形图像,在训练期间,只裁剪出每张图像的中心,然后将其作为训练示例显示给图像生成模型。
在图像生成和处理领域,使用 joy caption 生成图片描述是一种常见的方法。然而,当我们对图片进行剪裁时,常常会遇到描述内容难以与图片对应的问题。
特别是当图像的纵横比发生较大变化时,这一问题尤为明显。裁剪可能会移除图像中的关键元素,导致描述与生成图像不匹配。因此,在设计训练流程时,需要仔细处理图像与描述的对齐问题。
这是一张照片,日落时分,一棵孤独的、光秃秃的树矗立在宁静的湖面上。树木的倒影完美地映在平静的水面上。天空是柔和的蓝色到粉红色的渐变色,云彩散落。背景中,崎岖的山脉在天空的衬托下呈现出轮廓。宁静的风景唤起了一种和平与孤独的感觉。该图像出自“Bert Pries”之手
这种问题在 SD1.5 版本中已经有所体现。由于图像生成模型在不同分辨率下的表现不尽相同,当横纵比变得畸形时,生成的图片和描述可能会出现较大偏差。
多横纵比的解决方案
为了解决这一问题,SDXL 通过引入多种横纵比训练,提高了模型在不同尺寸下的生成效果。这种方法不仅能够在不同分辨率下生成高质量的图像,还能确保生成的描述与图像内容更加匹配。
SDXL论文提到的多分辨率训练方法正是为了在不同分辨率下提升模型的生成效果。
常用分辨率及比例
在现实生活中,我们常见的分辨率及其长宽比包括以下几种:
- 垂直(9:16):768 x 1344
- 肖像(4:5):915 x 1144
- 正方形(1:1):1024 x 1024
- 照片(4:3):1182 x 886
- 风景(3:2):1254 x 836
- 宽屏(16:9):1365 x 768
- 电影(21:9):1564 x 670
这些分辨率在不同的应用场景中有不同的优势。例如,垂直分辨率适用于手机屏幕显示,宽屏分辨率则更适合于视频播放和游戏场景。
特殊设备的分辨率
不同设备也有其特定的分辨率需求。例如,iPhone 的分辨率为 19.5:9,因此生成 iPhone 壁纸时可以使用接近的分辨率,如 640 x 1536。
解决方案
-
NovelAI Aspect Ratio Bucketing:
NovelAI提供了一个开源库,实现了基于存储桶的多横纵比训练方法。该库可以根据图像的横纵比动态生成batch,从而改善模型在不同横纵比下的生成效果。
GitHub链接:NovelAI/novelai-aspect-ratio-bucketing
该库基于64的倍数作为尺寸单位,通过查找横纵比相似的图片,将具有相近横纵比的图片归为同一组batch。这种方法在微调Flux、SD3或其他依赖UNet或DiT的模型时,能够显著改善模型在不同尺寸下的生成效果。通过这种方式,模型能够更好地适应多种分辨率的输入,从而生成更加一致和高质量的图像。
快去使用改善模型效果吧