
FreeU是一个针对扩散模型UNet提出的方法,由南洋理工大学SLab的Chenyang Si、Ziqi Huang、Yuming Jiang、Ziwei Liu团队开发,相关成果为CVPR2024 Oral论文。该方法的核心优势是无成本提升扩散模型样本质量:不需要额外训练、不引入新参数、不增加内存占用或采样时间。项目提供了论文(https://arxiv.org/pdf/2309.11497.pdf)、项目页(https://chenyangsi.top/FreeU/)、视频(https://www.youtube.com/watch?v=CZ5uWxvX30&t=2s)、Hugging Face Demo(https://huggingface.co/spaces/ChenyangSi/FreeU)等资源。
核心功能
FreeU通过调整扩散模型UNet解码器的前两个阶段,提升样本质量:
1. 隐藏层特征调整:对解码器中通道数为1280和640的隐藏层特征,计算特征均值并进行归一化,再用参数(b1、b2)缩放特征的前半部分通道(如1280通道的前640维、640通道的前320维),增强特征表达。
2. 跳过连接傅里叶滤波:对对应阶段的跳过连接特征(hs_)应用傅里叶滤波,通过阈值(如1)和参数(s1、s2)调整高频信息,保留有效细节。
使用方法
1. 在线Demo:可直接通过Hugging Face空间(https://huggingface.co/spaces/ChenyangSi/FreeU)体验效果。
2. 本地运行:下载仓库代码后,运行`python demos/app.py`启动Gradio Demo。
代码实现
Fourier_filter函数:对输入特征进行傅里叶变换(FFT),生成频率掩码(保留中心阈值内的频率并缩放),再逆傅里叶变换(IFFT)得到滤波后的特征。
Free_UNetModel类:继承自扩散模型的UNetModel,添加FreeU逻辑:在解码器前两个阶段,分别调整隐藏层特征和跳过连接特征,支持参数b1、b2(隐藏层缩放)、s1、s2(滤波缩放)的配置。
参数配置
不同扩散模型的推荐参数如下(部分模型参数会更新):
SD1.4:b1=1.3、b2=1.4、s1=0.9、s2=0.2
SD1.5:b1=1.5、b2=1.6、s1=0.9、s2=0.2
SD2.1:b1=1.4、b2=1.6、s1=0.9、s2=0.2
SDXL:b1=1.3、b2=1.4、s1=0.9、s2=0.2
参数调整范围参考:
b1:1 ≤ b1 ≤ 1.2
b2:1.2 ≤ b2 ≤ 1.6
s1:s1 ≤ 1
s2:s2 ≤ 1
社区结果
用户分享的FreeU使用效果包括:
SDXL模型结果(https://wandb.ai/nasirk24/UNETFreeUSDXL/reports/FreeUSDXLOptimalParametersVmlldzo1NDg4NTUw?accessToken=6745kr9rjd6e9yjevkr9bpd2lm6dpn6j00428gz5l60jrhl3gj4gubrz4aepupda)
ComfyUI插件效果(https://twitter.com/bramvera/status/1706190498220884007)
SD2.1模型结果(https://twitter.com/justindujardin/status/1706021278963179612)
SDXL视频结果(https://www.youtube.com/watch?v=jTcGZKkifsA&t=1s)等。
相关导航


AIGC系统程序源码_AI绘画做图_AI机器人模型训练_企业级AI平台系统_长臂猿

码多多技术社区 – AI知识库PHP-Java版 – AI数字人 – AI变现

SparkAi-渐进式AIGC系统

GitHub – Hillobar/Rope: GUI-focused roop

GitHub – yihong0618/xiaogpt: Play ChatGPT and other LLM with Xiaomi AI Speaker

GitHub – AntonOsika/gpt-engineer: CLI platform to experiment with codegen. Precursor to: https://lovable.dev
