codex_agy_batch_20260704_1609 / flux_kontext · paper

FLUX.1 Kontext: Flow Matching for In-Context Image Generation and Editing in Latent Space

论文的核心贡献

  • 用序列拼接统一图像生成与编辑。 论文将冻结 FLUX VAE 编码得到的上下文图像 token 直接附加到目标图像 token 序列中,再送入 FLUX.1 Kontext 主干。这样做不要求输入图像和输出图像在像素网格上严格对齐,天然支持不同分辨率、不同宽高比以及多张上下文图像。相对于 channel-wise concatenation 或任务专属控制模块,这种设计把编辑问题改写成统一的视觉 in-context learning 问题。
  • 用 3D RoPE 区分目标图像和上下文图像。 当多个图像 token 被拼成同一条序列时,模型需要知道哪些 token 属于待生成目标、哪些属于参考上下文。论文为 token 使用 (t, h, w) 形式的位置编码:目标 token 设为 t=0,第 i 个上下文图像 token 设为 t=i。这个虚拟时间维度保留了每张图内部的二维空间结构,同时把不同图像块在逻辑坐标上分离。
  • 在 rectified flow / flow matching 目标下训练统一条件分布。 论文建模 p_theta(x | y, c),其中 x 是目标图像,y 是可选上下文图像,c 是文本提示。训练时在 latent 空间中对目标图像和噪声做线性插值,并让网络预测从噪声到数据的速度场。无上下文时省略 y token,从而保留文本到图像生成能力;有上下文时同一网络执行 in-context 编辑。
  • 通过 LADD 蒸馏提升交互速度。 论文报告使用 latent adversarial diffusion distillation 将采样步数大幅减少,使高分辨率生成和编辑进入数秒级交互范围。这里的速度和质量结论是 paper-reported;本文档没有独立复现实验,也没有验证其与所有对比系统在完全相同协议下的可比性。
  • 提出 KontextBench 作为多任务评测集。 论文构建了包含 1026 个图像-提示词对的 benchmark,覆盖局部编辑、全局编辑、角色参考、风格参考和文本编辑五类任务。它试图补足现有编辑评测中合成偏差、分辨率较低、任务覆盖窄的问题。相关优于或领先结论同样按 paper-reported 处理。

复杂 Pipeline 深度解析

Figure 4: FLUX.1 Kontext 高层 pipeline 概览
Figure 4: FLUX.1 Kontext 高层 pipeline 概览

图中元素对照解读

  • 图中左上白色文本框和右向箭头: 对应论文中的文本条件 c;它在 pipeline 中的作用是把编辑意图“Replace the word KONTEXT with BEER”送入文本编码分支。
  • 图中左侧浅橙色 TEXT ENCODERS 梯形框: 对应论文中的文本编码模块;它在 pipeline 中的作用是把自然语言指令转换为后续 Transformer 可读取的 text tokens。
  • 图中左下两张图像缩略图和指向 VAE 的黑色箭头: 对应论文中的视觉输入,包括待建模的目标图像状态和上下文输入图像;它在 pipeline 中的作用是提供目标 latent 与参考图像内容的视觉来源。
  • 图中左侧浅橙色 VAE (Image Encoder) 梯形框: 对应论文中的冻结 FLUX VAE 图像编码器;它在 pipeline 中的作用是把像素级图像输入压缩到 latent token 空间。
  • 图中浅绿色大背景 Flux.1 Kontext 对应论文中的统一生成/编辑主干;它在 pipeline 中的作用是把文本流、目标 latent 和上下文 latent 放入同一个模型内联合处理。
  • 图中左半浅蓝色 N/2 Double Stream Blocks 大框: 对应论文中的前半段双流 Transformer 块;它在 pipeline 中的作用是让文本流和视觉流先保持分支结构并建立初步跨模态对应。
  • 图中黄色 Text Stream 盒子: 对应论文中的文本 token 序列;它在 pipeline 中的作用是持续携带编辑目标、替换词和保留约束。
  • 图中黄色 Visual Stream 区域内两个白色圆角框: 对应论文中的 Noised LatentEncoded Input Image;它在 pipeline 中的作用是用 [T=0,h,w] 标记目标画布 token、用 [T=1,h,w] 标记上下文图像 token,从而避免拼接后来源混淆。
  • 图中右半浅蓝色 N Fused DiT Block 与黄色 Combined Stream 对应论文中的融合 DiT 主体;它在 pipeline 中的作用是让文本、目标 latent 和上下文 latent 通过注意力共同决定编辑后的目标表示。
  • 图中右侧浅橙色 VAE (Image Decoder) 和最右输出图像: 对应论文中的 VAE 解码阶段;它在 pipeline 中的作用是把融合后的目标 latent 解码为最终图像,图例中表现为把画面文字改成 “BEER”。

这篇论文的核心思路,是把图像生成和图像编辑统一成一个基于 flow matching 的 in-context 图像建模问题:模型同时接收文本指令、可选上下文图像和目标 latent token,并通过序列拼接让同一个 Transformer 处理自由文生图、局部编辑、全局编辑、角色参考和风格参考等任务。它跳出了为不同编辑任务设计专门控制分支或专门编码器的旧范式,重点解决多轮编辑中身份保持、上下文保真和交互速度之间难以兼顾的问题。

核心图是 Figure 4: High-level overview of FLUX.1 Kontext, with input and context image on the left,位于 PDF 物理第 5 页。该图展示了 FLUX.1 Kontext 如何把文本指令、上下文图像和待生成 latent 放入一个统一序列建模框架。

1. 文本指令编码。 图左上角的白色文本框给出自然语言编辑指令 “Replace the word KONTEXT with BEER”,黑色箭头把它送入浅橙色 TEXT ENCODERS。文本编码器再输出图中黄色 Text Stream,为后续模块提供全局操作意图:要改什么、保留什么、输出应满足什么语义约束。

2. 上下文图像编码。 图左下角清晰的输入图像包含文字 “KONTEXT”,旁边箭头指向浅橙色 VAE (Image Encoder)。冻结的 FLUX VAE image encoder 将像素图像压缩为 latent token,在视觉流中形成 Encoded Input Image。这个步骤把原图中的布局、文字、对象身份和风格压缩成可被 Transformer 注意力读取的视觉上下文。

3. 目标 latent 初始化。 图中 Visual Stream 的上方白色框标出 Noised Latent,并写有 positional embeddings [T=0, h, w]。它表示待生成目标画布的 noisy latent token,是 flow matching 预测速度场并逐步形成最终图像的位置。

4. 位置编码隔离上下文与目标。 图中 Visual Stream 的两个白色框分别写着 Noised LatentEncoded Input Image,并分别标注 [T=0, h, w][T=1, h, w]。论文用 3D RoPE 为两类 token 加位置:目标 token 使用 T=0,上下文 token 使用 T=1。这一步的输出不是新的视觉内容,而是带有来源和空间坐标的 token 序列,用来防止上下文图像与目标画布在序列拼接后发生空间语义混淆。

5. Double Stream Blocks 处理文本与视觉流。 图中左半部分的浅蓝大框标为 N/2 Double Stream Blocks,内部上下排列黄色 Text StreamVisual Stream。这部分保留文本和视觉各自的流结构,让模型在早期阶段分别处理语言意图和视觉条件,并逐步建立跨模态对应关系。

6. Fused DiT Block 中进行统一序列融合。 经过前半段处理后,箭头和省略号把两条流送入右侧浅蓝色 N Fused DiT Block,内部只有一个黄色 Combined Stream。上下文图像 token、目标 latent token 和文本条件在这里通过注意力深度交互。目标 token 可以读取上下文图像中的可保留内容,也能读取文本指令中的修改意图,从而决定哪些局部结构需要改变、哪些身份和风格需要稳定继承。

7. VAE 解码得到输出图像。 图中右侧 Combined Stream 通过黑色箭头连接到浅橙色 VAE (Image Decoder),再输出最右侧图像。经过 flow matching 去噪后的目标 latent 被送入 VAE image decoder;图中示例是把上下文图像里的文字从 “KONTEXT” 替换为 “BEER”,同时保持背景和版式一致。

关键术语

Sequence concatenation 在这篇论文中不是简单的张量拼接,而是统一建模策略。上下文图像不再被硬性对齐到目标图像的通道维度,而是像语言上下文一样附加到 token 序列里。这样模型可以用同一套注意力机制处理单图、多图、不同分辨率和不同任务类型。

3D RoPE 的功能是为拼接后的视觉 token 提供三维坐标。h,w 保留图像内部空间关系,t 区分目标图像和上下文图像。这个设计的动机是让模型知道“这是参考图中的位置”还是“这是要生成图中的位置”,同时不破坏每张图内部的二维结构。

Rectified flow / flow matching 是训练目标。模型不是直接预测最终像素,而是在 latent 空间中学习从噪声到数据的速度场。该目标让 FLUX.1 Kontext 可以沿用 FLUX.1 文生图主干,同时扩展到带图像上下文的条件生成。

KontextBench 是论文提出的评测集,用来覆盖真实编辑需求中的多个任务类别。它的作用是评价模型是否能同时做好局部编辑、全局编辑、参考保持、风格迁移和文本修改,而不是只在单一编辑类型上优化。

为什么 Figure 4 是核心图

Figure 4 直接串联了论文的三个关键点:上下文图像如何进入模型、文本和视觉流如何融合、最终目标 latent 如何被解码成编辑结果。它不是结果图、表格或 teaser,而是 FLUX.1 Kontext 的方法/架构概览图。通过这张图可以看出,论文的核心并不是新增复杂控制网络,而是把图像上下文转成 token 并交给统一的 DiT/flow matching 主干处理。