VisualCloze: A Universal Image Generation Framework via Visual In-Context Learning¶
会议: ICCV 2025
arXiv: 2504.07960
代码: https://visualcloze.github.io/
领域: 图像生成 / 统一框架 / 上下文学习
关键词: universal image generation, visual in-context learning, image infilling, Graph200K, multi-task unification
一句话总结¶
提出 VisualCloze,将多种图像生成任务统一为"视觉完形填空"范式——用视觉示例(而非文本指令)定义任务,通过图像 infilling 模型实现统一生成,并构建 Graph200K 图结构数据集增强任务间知识迁移,支持域内任务、未见任务泛化、多任务组合和反向生成。
研究背景与动机¶
扩散模型推动了图像生成的快速发展,催生了条件生成、风格迁移、虚拟试穿、个性化生成等大量应用。然而,当前主流方案仍然是为每个任务训练专用模型(如 ControlNet 做条件生成、IP-Adapter 做风格保持、InstructPix2Pix 做编辑),效率低下且难以扩展。
统一生成模型虽然有所进展,但面临三个核心挑战:
任务指令的歧义性:现有方法(OmniGen、ACE++)依赖文本指令或任务特定 token 来区分任务,但视觉任务的复杂性和视觉-语言鸿沟导致模型经常产生任务混淆(task confusion),且在未见任务上泛化能力差
视觉任务分布的稀疏性:与 NLP 中任务高度重叠不同,视觉任务(分割、深度估计、超分辨率等)使用的数据集几乎没有交集,任务间知识孤立,难以学习可迁移的共享特征
统一架构设计的缺失:需要同时支持灵活的任务格式和兼容 SOTA 预训练模型
核心洞察:(1)视觉上下文学习(Visual ICL)比文本指令更适合定义视觉任务——直接展示输入-输出示例让模型"看到"任务定义;(2)统一图像生成的目标(填充目标图像区域)与图像 infilling 的目标天然一致,可以直接利用预训练 infilling 模型的强大生成先验。
方法详解¶
整体框架¶
VisualCloze 将所有图像生成任务重新定义为视觉完形填空问题:
- 给定 \(C\) 个 in-context 示例(每个包含 \(L\) 张图像的任务实例)和一个 query(\(L-1\) 张条件图 + 一个空白目标位置)
- 将所有图像拼接成一个 \((L \times W, (C+1) \times H)\) 大小的网格图
- 用二值 mask \(M\) 标记目标位置,利用 infilling 模型补全目标区域
数学表达:\(\hat{X} = f(X \mid T, M)\),其中 \(X\) 是拼接图像,\(T\) 是语言指令,\(M\) 是 mask 条件。
关键设计¶
1. Visual In-Context Learning¶
不用文本描述任务类型,而是直接展示 1-2 个 (input, output) 示例对作为任务演示。模型通过观察示例中的转换关系来理解任务定义,这带来四个关键优势:
- 减少任务歧义:视觉示例比文本更精确地传达任务意图,增加示例数量可进一步降低混淆
- 泛化到未见任务:无需任何重训练,仅通过示例即可执行训练时未见过的变换类型
- 多任务组合:可将多个子任务(如深度引导 + 重光照)合并为单步未见任务
- 反向生成:支持从目标推断条件(如从风格化图像分解出内容和风格参考)
训练时随机提供最多 \(C=2\) 个 in-context 示例,推理时可扩展到更多。
2. Graph200K 数据集¶
以 Subject200K 为起点,为每张图像构建 49 种标注,涵盖五个元任务:
- 条件生成:12 种条件(canny edge、HED edge、depth、normal、keypose、SAM2 mask、前景分割、开放世界检测框等)
- 图像修复:32 种在线退化增强
- 图像编辑:背景不变编辑(目标替换)和背景变化编辑
- IP 保持:Subject-driven 生成
- 风格迁移:语义不变(InstantStyle)和语义变化(FLUX.1-Redux)两种设置
数据集构建为强连通图——任意两个节点间都存在双向路径,路径上的节点作为条件,终端节点为目标。通过组合采样,可得到最多 134 种高度重叠的任务,显著提升了任务密度和跨任务迁移。
额外补充数据:VITON-HD(虚拟试穿)、PhotoDoodle(艺术编辑)、OmniEdit(物体添加/移除),以及绘画过程和多视图生成数据。
3. 基于 Infilling 的统一架构¶
核心发现:VisualCloze 的统一生成公式与图像 infilling 模型的目标天然一致——都是根据上下文补全被 mask 的区域。因此:
- 直接基于 FLUX.1-Fill-dev 微调,无需修改架构或添加 task-specific 模块
- 使用 LoRA(rank=256)微调以降低训练成本,保留基础模型能力
- LoRA 可与社区其他 LoRA 融合使用
位置编码处理:利用 FLUX.1-Fill-dev 的 3D-RoPE,将不同示例沿 temporal 维度拼接,解决不同长宽比示例的拼接问题。
语言指令包含三部分:(1) layout 指令描述网格布局;(2) task 指令指定任务类型;(3) content 指令描述目标图像内容。
损失函数 / 训练策略¶
- 标准的 flow matching loss,在拼接后的网格图上训练,仅在 mask 区域计算
- 采用 lognorm noise 策略和动态 time shifting(遵循 FLUX.1-Fill-dev)
- 训练时以 0.5 概率随机 mask 前 \(L-1\) 个网格中的一个,促进反向生成能力
- AdamW 优化器,学习率 1e-4,累积 batch size 64,8×A100 训练 20k 步
- 图像统一 resize 到 384×384 或 512×512 面积后拼接
实验关键数据¶
主实验¶
条件生成与图像修复定量对比:
| 条件 | 方法 | Context | 可控性 (F1/RMSE) | FID↓ | SSIM↑ | MAN-IQA↑ | MUSIQ↑ | CLIP-Score↑ |
|---|---|---|---|---|---|---|---|---|
| Canny | ControlNet (专用) | - | 0.13 | 46.06 | 0.34 | 0.31 | 45.45 | 34.10 |
| Canny | OminiControl | - | 0.47 | 29.58 | 0.61 | 0.44 | 61.40 | 34.40 |
| Canny | OmniGen | - | 0.43 | 51.58 | 0.47 | 0.47 | 62.66 | 33.66 |
| Canny | Ours_fill | 0 | 0.35 | 30.60 | 0.55 | 0.49 | 64.39 | 34.98 |
| Canny | Ours_fill | 2 | 0.36 | 31.15 | 0.56 | 0.49 | 64.08 | 34.85 |
| Depth | ControlNet (专用) | - | 23.70 | 36.83 | 0.41 | 0.44 | 60.17 | 34.49 |
| Depth | OneDiffusion | - | 10.35 | 39.03 | 0.49 | 0.49 | 60.49 | 34.71 |
| Depth | Ours_fill | 0 | 10.31 | 33.88 | 0.54 | 0.48 | 64.85 | 35.10 |
| Depth | Ours_fill | 2 | 9.68 | 34.88 | 0.54 | 0.48 | 64.29 | 34.89 |
| Deblur | OminiControl | - | 19.70 | 26.17 | 0.85 | 0.45 | 60.70 | 34.53 |
| Deblur | Ours_fill | 2 | 25.57 | 36.28 | 0.76 | 0.48 | 61.77 | 34.82 |
Ours_fill 在视觉质量(MAN-IQA、MUSIQ)和文本一致性(CLIP-Score)上全面领先,在深度到图像生成上可控性也最优(RMSE 9.68)。
Subject-driven 生成定量对比:
| 方法 | Context | DINOv2↑ | CLIP-I↑ | CLIP-T↑ |
|---|---|---|---|---|
| OminiControl (专用) | - | 73.17 | 87.70 | 33.53 |
| OneDiffusion | - | 73.88 | 86.91 | 34.85 |
| OmniGen | - | 67.73 | 83.43 | 34.53 |
| Ours_dev | 0 | 78.05 | 87.68 | 35.06 |
| Ours_fill | 0 | 80.41 | 89.63 | 35.16 |
| Ours_fill | 2 | 80.32 | 89.36 | 35.01 |
相比专用模型 OminiControl,在 DINOv2/CLIP-I/CLIP-T 上分别提升 7.15%、1.66%、1.48%。
风格迁移定量对比:
| 方法 | Text↑ | Image↑ |
|---|---|---|
| InstantStyle (专用) | 0.27 | 0.60 |
| OmniGen | 0.27 | 0.52 |
| Ours_fill | 0.29 | 0.55 |
文本一致性超越专用模型 InstantStyle 2%,风格一致性略低。
消融实验¶
Infilling 模型 vs Dev 模型(核心消融):
| 任务 | 指标 | Ours_dev | Ours_fill | 提升 |
|---|---|---|---|---|
| Depth→Image | RMSE↓ | 25.06 | 10.31 | -58.8% |
| Depth→Image | FID↓ | 42.14 | 33.88 | -19.6% |
| Deblur | RMSE↓ | 25.03 | 26.53 | - |
| Deblur | MUSIQ↑ | 46.68 | 59.62 | +27.7% |
| Subject-driven | DINOv2↑ | 78.05 | 80.41 | +3.0% |
| Subject-driven | CLIP-I↑ | 87.68 | 89.63 | +2.2% |
Ours_fill(基于 FLUX.1-Fill-dev)在大多数任务上显著优于 Ours_dev(基于 FLUX.1-dev),验证了 infilling 目标一致性的关键作用。视觉对比中,Ours_dev 在深度到图像生成时频繁出现对角条纹伪影。
In-context 示例数量的影响(以 Depth→Image 为例):
| Context 数量 | RMSE↓ | FID↓ | SSIM↑ | MAN-IQA↑ |
|---|---|---|---|---|
| 0 | 10.31 | 33.88 | 0.54 | 0.48 |
| 1 | 9.91 | 34.44 | 0.54 | 0.49 |
| 2 | 9.68 | 34.88 | 0.54 | 0.48 |
增加 in-context 示例可进一步提升可控性(RMSE 从 10.31 降到 9.68),但并非所有指标都单调提升。
关键发现¶
- In-context learning 缓解任务混淆:在 pose estimation、edge detection 等任务上,无 ICL 示例时模型偶尔产生噪声结果,提供 1-2 个示例后性能和稳定性显著提升
- 未见任务泛化:训练时仅见过物体添加/移除编辑任务,通过 ICL 泛化到环境修改和属性变换等未见编辑类型;训练仅含单主体生成,可泛化到多主体驱动生成
- 多任务合并:通过 ICL 将多个子任务合并为单步执行(如 Depth→Image + Relighting),无需额外训练
- 反向生成:模型可从风格化图像反向分解出原图和风格参考,或从边缘图推断真实图像、深度和法线
- 示例质量影响:ICL 示例需准确传达任务意图,若示例偏离任务核心(如侧脸过于接近正脸),成功率会显著下降
亮点与洞察¶
- 视觉完形填空 = image infilling 的统一范式极为优雅:概念简洁(所有任务都是"填空"),无需改架构(直接用预训练 infilling 模型),工程成本极低(LoRA 微调 20k 步)
- Visual ICL 比 text instruction 更适合定义视觉任务:这是一个重要的范式转变——让用户"展示"而非"描述"他们想要的变换
- Graph200K 的图结构数据设计巧妙解决了视觉任务稀疏问题:每张图 49 种标注、134 种重叠任务,使模型学到紧凑的共享表示
- 四种能力(域内、未见泛化、多任务组合、反向生成)从同一框架中自然涌现,无需分别设计
局限与展望¶
- 分辨率受限:将多张图拼成网格导致每张图被 resize 到 384×384 或 512×512,精细细节可能丢失
- 可控性与专用模型有差距:在 Canny→Image 任务上 F1 得分低于 OminiControl(0.36 vs 0.47),精细边缘控制不如专用模型
- ICL 示例选择敏感:不同示例对生成质量影响较大,如何自动选择最优示例有待研究
- Graph200K 数据质量:依赖自动化 pipeline 构建(Qwen2-VL 生成 caption、FLUX.1-Fill 做编辑),可能引入噪声标注
- 训练数据偏向:仅训练物体添加/移除编辑任务,其他编辑类型完全依赖泛化
- 推理效率:处理大网格图比单张图推理开销更大
相关工作与启发¶
- OmniGen:使用视觉语言模型和文本指令统一多任务,但在未见任务上泛化受限;VisualCloze 通过 visual ICL 显著增强泛化
- ControlNet / OminiControl:任务特定的条件注入模块,每种条件需单独训练;VisualCloze 是真正的统一框架
- OneDiffusion:统一多种生成任务,但可控性和质量不如 VisualCloze
- UniReal:将图像生成统一为不连续视频生成,与 VisualCloze 的 infilling 统一思路互补
- 启发:Visual ICL 范式可扩展到视频生成——展示几帧视频变换示例定义视频编辑任务;Graph 结构数据集思路可迁移到多模态学习
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ — "视觉完形填空 = infilling"的统一公式极为优雅,Visual ICL 用于任务定义是重要范式创新
- 技术质量: ⭐⭐⭐⭐ — Graph200K 设计巧妙,infilling 目标一致性分析严谨,但可控性仍有提升空间
- 实验充分性: ⭐⭐⭐⭐ — 覆盖条件生成、修复、风格迁移、主体驱动四类任务,含 dev vs fill 的关键消融
- 实用性: ⭐⭐⭐⭐⭐ — 基于 FLUX.1-Fill-dev 的 LoRA 微调,工程成本极低,LoRA 可组合使用
- 总评: ⭐⭐⭐⭐⭐ — 定义了 universal image generation 的新范式,Graph200K 数据集和 Visual ICL 方法论均有长期价值