打造一个有温度、有趣味、专业的全栈式AI&AIGC交流社区,用心写好每一篇文章!
HF链接-https://huggingface.co/spaces/Yuanshi/URAE
代码链接-https://github.com/Huage001/URAE
论文链接-https://arxiv.org/pdf/2503.16322
为什么需要这个算法?--虽然基于扩散模型的文生图模型在低分辨率图像生成方面表现出了强大的潜力,但是对于大分辨率的文生图任务而言(2K、4K等),当前的文生图方法仍然存在“需要收集大量的训练样本和训练资源”、“生成的效果有待提升”等重大问题。
这个算法能做什么?-- URAE是一种轻量的支持生成2K以上高分辨率图像的文生图方法,用户只需要修改少量的代码,就可以利用FLUX生成高分辨率图像。URAE利用FLUX1.1Pro Ultra的少量合成数据驯服了轻量级适配器。
这个算法效果如何?-- URAE是一种仅需利用3K张样本和2K次迭代就实现了与FLUX1.1[Pro]Ultra等最先进的闭源模型相当的2K生成性能,同时为4K分辨率生成设定了新的基准。
01-URAE背景简介
近年来,扩散模型在文生图方面取得了显著进展。从基于UNet的架构到最新的最先进的扩散变换器(DiTs),这些模型利用强大的主干和多步去噪方案,有效地根据文本提示生成高质量和多样化的图像。
然而,将当前的扩散模型扩展到超大分辨率,例如4K,仍然是一个重大挑战。该过程通常需要利用大量高质量的数据和计算资源,使得按照这种分辨率进行训练令人望而生畏,只有行业规模的工作才能进行。
尽管最近已经有人尝试着训练4K分辨率的文生图模型,但它们通常依赖于包含数百万张高分辨率图像的内部数据集来微调基础低分辨率模型。在实践中,收集如此大规模的数据集进行训练是非常费钱且耗时的。同时,调整整个扩散模型的主干网络会引入密集的GPU内存占用,特别是对于FLUX和Stable diffusion 3.5等最先进的文生图模型。
02-URAE算法简介
为了解决高分辨率文生图模型的问题,本文从数据和参数效率两个关键角度探讨了这个问题,并提出了一套超分辨率自适应的解决方案URAE。
对于数据效率,作者通过大量的实验证明:一些教师模型生成的合成数据可以显著促进训练收敛。对于参数效率,作者惊奇的发现:当合成数据不可用时,调整权重矩阵的次要分量优于广泛使用的低秩适配器,在保持效率的同时提供了实质性的性能提升。
此外,对于利用制导蒸馏的模型,如FLUX,作者表明禁用无分类器制导,即在适应过程中将制导标度设置为1,它对模型的性能至关重要。大量实验结果表明URAE仅利用3K张样本和2K次迭代就实现了与FLUX1.1[Pro]Ultra等最先进的闭源模型相当的2K生成性能,同时为4K分辨率生成设定了新的基准。
# 步骤1-将代码克隆到本地
git clone https://github.com/Huage001/URAE.git
cd URAE
# 步骤2-创建并激活虚拟环境
conda create -n URAE python=3.12
conda activate URAE
# 步骤3-安装三方依赖
pip install -r requirements.txt
# 步骤4-按照如下的脚本运行 或
# 运行inference_2k.ipynb和inference_4k.ipynb文件
import torch
- from diffusers import FluxPipeline
+ from pipeline_flux import FluxPipeline
+ from transformer_flux import FluxTransformer2DModel
bfl_repo = "black-forest-labs/FLUX.1-dev"
+ transformer = FluxTransformer2DModel.from_pretrained(bfl_repo, subfolder="transformer", torch_dtype=torch.bfloat16)
- pipe = FluxPipeline.from_pretrained(bfl_repo, torch_dtype=torch.bfloat16)
+ pipe = FluxPipeline.from_pretrained(bfl_repo, transformer=transformer, torch_dtype=torch.bfloat16)
pipe.enable_model_cpu_offload() #save some VRAM by offloading the model to CPU. Remove this if you have enough GPU power
+ pipe.load_lora_weights("Huage001/URAE", weight_name="urae_2k_adapter.safetensors")
prompt = "An astronaut riding a green horse"
image = pipe(
prompt,
- height=1024,
- width=1024,
+ height=2048,
+ width=2048,
guidance_scale=3.5,
num_inference_steps=50,
max_sequence_length=512,
generator=torch.Generator("cpu").manual_seed(0)
).images[0]
image.save("flux-urae.png")
06-URAE算法性能评估
06.01-主观效果性能评估
上图展示了该方法与多个SOTA的支持2K分辨率生成的文生图方法(Flux1.1 Ultra、PixArt-Sigma-XL、Sana-1.6B、Flux.1-dev)在相同的文本提示下的生成结果。通过观察与分析,我们可以发现:URAE生成的图片在图像质量、图像细节、文本对齐度等方面更胜一筹!
上图展示了该方法与多个SOTA的支持4K分辨率生成的文生图方法(PixArt-Sigma-XL、Sana-1.6B、Flux.1-dev)在相同的文本提示下的生成结果。通过观察与分析,我们可以发现:URAE(Minor-4K)生成的图像更逼真、更真实、更符合输入的文本描述。
06.02-客观效果性能评估
上表展示了该方法与多个SOTA的文生图方法在HPD和DPG提示下的各项客观指标评估结果。通过仔细观察与分析,我们可以发现:URAE在这两个数据集上的多项评估指标上都获得了最佳的得分,与第二名之间拉开了巨大的差异。
07-URAE算法效果展示
图7.1-URAE算法生成效果展示1
图7.2-URAE算法生成效果展示2
关注我,AI热点早知道,AI算法早精通,AI产品早上线!
禁止私自转载,需要转载请先征求我的同意!
欢迎你的加入,让我们一起交流、讨论与成长!