RAG-Diffusion
ICCV 2025 | 双机制解耦实现精确区域控制 | 无需额外模型的零成本重绘
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
ICCV 2025 | 双机制解耦实现精确区域控制 | 无需额外模型的零成本重绘
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一个这样的场景: 设计师正在为一款新产品制作海报,需要在画面中精确安排多个元素的位置——左侧是一只戴着墨镜的企鹅在沙漠中日光浴,右侧是一头披着围巾的老虎站在冰川上,中间还要有一只熊猫穿着冲锋衣穿越森林。传统的文生图模型对这种"多区域、多描述"的复杂构图请求往往力不从心,要么元素位置跑偏,要么属性互相干扰。
来自南京大学、InstantX、Liblib AI、香港科技大学和中国移动的研究团队提出了 RAG(Region-Aware Generation) 方法,收录于计算机视觉顶级会议 ICCV 2025,为这一难题提供了优雅的解决方案。
在 RAG 之前,区域控制文生图主要有两类思路,但都存在明显局限:
第一类:引入额外可训练模块。 这类方法(如 LISA、GLIGEN 等)需要在新数据集上微调模型参数,虽然控制效果好,但有两个致命缺陷:一是只能针对特定模型训练,换一个底座就要重新训练;二是微调过程耗时耗力,普通开发者难以使用。
第二类:操作交叉注意力分数图。 这类方法在扩散生成过程中,通过 Attention Mask 遮罩来引导不同区域的生成。问题在于:当画面中区域数量增加时,不同区域之间的注意力竞争加剧,导致控制强度迅速衰减——两个区域还行,五个区域就开始"打架"了。
RAG 的核心创新在于:将多区域生成解耦为两个独立子任务,分别处理,从根本上绕开了两类方法的局限。
Hard Binding 的核心目标是"确保每个区域严格遵循对应的文本描述"。研究团队的做法非常巧妙——不是直接操作 Attention 分数,而是通过 多次替换(Replace)交叉注意力层的 Query-Key 交互,让特定区域的特征向量更强烈地响应对应的文本 token。
具体来说,当模型处理"一只狗的顶部有一个气球"这样的提示词时:
HB_replace 参数控制替换次数,次数越多位置控制越精确,但可能留下明显边界这种方法的精妙之处在于:完全不引入额外可训练参数,也不修改模型权重,是真正的 tuning-free 方法。 任何基于 FLUX.1 或类似架构的模型,只需接入这套 Hook 机制,就能获得区域控制能力。
Hard Binding 解决了"各区域内容正确"的问题,但还有一个遗留问题:不同区域之间过渡生硬,像是被切割后拼贴在一起的。Soft Refinement 正是为此而生。
Soft Refinement 在扩散去噪的后期阶段,通过一个 可学习的区域划分比例(Split Ratio) 将图像 latent 空间划分为多个子区域,然后对每个子区域注入对应的详细描述 latent,最后以 SR_delta 系数进行特征融合。这样做的效果是:区域之间的边界被软化,相邻元素产生自然的视觉交互——沙漠中的热浪可以"飘"到企鹅身上,冰川的寒意可以延伸到老虎的毛发纹理。
除了区域生成,RAG 还带来了一个意外的惊喜——重绘(Repainting)功能完全不需要额外的 Inpainting 模型。
传统重绘流程需要先训练一个专门的 Inpainting 模型(如 BrushNet)或使用专门的 Inpainting 底座(如 FLUX.1-Fill-Dev)。而 RAG 利用 Hard Binding 的替换机制,可以在已生成图像上针对特定区域重新生成:只需提供新的区域描述和掩码mask,RAG 就能在不改变其他区域的前提下,只重绘被遮罩覆盖的部分。
在论文的对比实验中,RAG 的重绘效果与 FLUX.1-Fill-Dev 和 BrushNet 相比毫不逊色,且无需任何额外模型。
项目采用模块化设计,核心文件包括:
| 文件 | 职责 |
|---|---|
RAG_pipeline_flux.py | FLUX.1 扩散管道的封装实现(~50KB),Hook 机制核心 |
RAG_transformer_flux.py | FLUX Transformer 修改版(~39KB),区域注意力分离实现 |
cross_attention.py | 交叉注意力 Hook 注入,处理 Hard Binding 替换逻辑 |
matrix.py | 区域划分矩阵运算,支持网格、多边形等多种区域描述格式 |
RAG.py | 命令行入口,按 idx 调用预设参数 |
RAG_MLLM.py | GPT-4V 自动解析区域参数,零配置使用 |
RAG_Repainting.py | 重绘功能入口 |
RAG_with_Redux.py | FLUX.1 Redux 风格迁移扩展 |
RAG_with_LoRA.py | LoRA 个性化扩展 |
xformers==0.0.28.post1 # 高效注意力实现
diffusers # HuggingFace 扩散模型核心库
peft # LoRA 参数高效微调
torchvision==0.19.1
opencv-python==4.10.0.84 # 图像处理与掩码操作
sentencepiece==0.2.0 # 分词器
protobuf==5.28.1 # 模型权重序列化
scipy==1.13.1 # 科学计算(binary_dilation 等)
底座模型为 black-forest-labs/FLUX.1-dev(BFloat16),分辨率默认 1024×1024,推理步数 20 步,guidance_scale 3.5。
对于不想手动配置 HB_m_offset_list、SR_hw_split_ratio 等参数的普通用户,RAG 提供了 GPT-4V 自动解析模式:
from RAG_MLLM import local_llm, GPT4
prompt = "A small elephant on the left and a huge rabbit on the right."
para_dict = GPT4(prompt, key='YOUR_OPENAI_KEY')
# GPT4 自动输出: HB_prompt_list, HB_m_offset_list, SR_hw_split_ratio 等
只需输入自然语言描述,GPT-4V 就能自动推断出各区域的坐标、尺寸和详细描述,大幅降低使用门槛。
RAG 的设计天然支持框架扩展,目前官方已提供三种增强模式:
RAG + IP-Adapter: 在区域控制的基础上,叠加图片风格/内容控制。用户可以为特定区域指定参考图片,生成效果更加可控。IP-Adapter 通过预训练的图像编码器将参考图像注入到 FLUX.1 潜在空间。
RAG + PuLID: 实现高精度人脸身份保持。用户只需提供一至两张参考人脸照片,PuLID 技术就能确保生成图像中的人物具有指定身份特征,同时保留 RAG 的区域控制能力。这对于广告设计、虚拟主播等场景意义重大。
RAG + FLUX.1 Redux: 在区域控制的同时引入风格迁移。用户提供风格参考图(如素描、水彩、赛博朋克),FLUX.1 Redux 的风格编码器会将风格信息注入各区域,实现"内容区域可控 + 风格统一协调"的效果。
RAG 定位为 研究级工具,不提供一键部署脚本,需要手动配置:
conda create -n RAG python==3.9
conda activate RAG
pip install xformers==0.0.28.post1 diffusers peft torchvision==0.19.1 opencv-python==4.10.0.84 sentencepiece==0.2.0 protobuf==5.28.1 scipy==1.13.1
推理时自动从 HuggingFace 下载 FLUX.1-dev 权重(约 20GB),需要稳定网络或提前缓存。
| 指标 | 最低要求 | 推荐配置 |
|---|---|---|
| GPU VRAM | 16GB(FP16) | 24GB+(BF16) |
| 系统内存 | 16GB | 32GB+ |
| 磁盘空间 | 30GB(模型+缓存) | 50GB+ |
| CUDA | 11.8+ | 12.x |
FLUX.1-dev 的 BFloat16 权重本身就接近 24GB 显存,实际推理还需要 KV Cache 和中间激活,单卡 A100(40GB)或 4090(24GB)是合理选择。
不想本地部署的用户可通过 HuggingFace Spaces 在线体验(链接:huggingface.co/spaces/NJU/RAG-Diffusion),但公开空间通常排队较久,适合尝鲜而非批量使用。
使用门槛高: 虽然 RAG 提供了 MLLM 自动解析,但核心的参数体系(offset、scale、split_ratio)对非专业用户仍不友好。建议从 data/RAG_Gallery.json 和 data/RAG_template.txt 中的预设模板入手,逐步理解参数含义。
显存占用大: 24GB+ 的显存门槛决定了它不适合消费级显卡(4090 勉强能跑但速度慢),也限制了在小团队内的普及。
区域数量限制: 当区域数量超过 4-5 个时,Hard Binding 的边界控制效果会下降,Soft Refinement 的区域融合也需要更多调参。适合 2-4 个主要元素的精确控制场景。
依赖 FLUX.1: 目前仅支持 FLUX.1 系列模型,虽然团队声称方法可迁移到其他架构,但暂无官方支持。Stable Diffusion、SDXL 用户暂时无法直接使用。
RAG 入选 ICCV 2025 的意义不仅在于论文本身,更在于它代表了一个重要趋势:从"生成一张图"到"编排一张图"。 随着 FLUX.1、Stable Diffusion 3 等新一代模型能力的提升,生成质量已不再是瓶颈,精细化控制成为下一个竞争焦点。
RAG 的双机制解耦思路(Hard Binding + Soft Refinement)本质上是将"内容控制"和"风格融合"分离处理,这一思想可能会影响后续众多区域控制、构图控制、属性绑定方向的工作。而"零额外模型重绘"这一巧思,更是展示了 tuning-free 方法的巨大潜力——不引入新参数,就能解锁新能力。
总结: RAG-Diffusion 是一款面向 AI 图像生成研究者和高级用户的区域控制工具,核心优势是 ICCV 2025 认证的双机制区域控制 + 无需额外模型的 Inpainting 能力。主要限制是部署门槛较高(需 24GB+ GPU)、参数调优有一定学习成本、仅支持 FLUX.1 架构。对于需要精细化构图控制的设计师和研究人员,这是目前开源领域最值得关注的方案之一。