Qwen-Image-2.0 Technical Report

1. 出发点 (Motivation)

2026 上半年 T2I 模型 (FLUX、Stable Diffusion 3.5、Imagen 4、HunyuanImage-3、Seedream 等) 都已经能出"好看"的图,真正的痛点转向了*"实用"*:

Qwen 团队认为这些需求被"现有 foundation model 还没全部解决",同时同一模型同时拿下这些指标的工作几乎没有。Qwen-Image-2.0 就是要做这条"全能"路线。

LMArena ELO improvements
Fig. 1 — LMArena 上跨 8 个维度 (Product、3D Modeling、Cartoon、Photorealism、Art、Portraits、Text Rendering、Overall) 的 ELO 对比。Qwen-Image (浅紫,1057) → Qwen-Image-2512 (绿,1133) → Qwen-Image-2.0 (深紫,1168/Overall)。Photorealism +93 ELO,Art +99 ELO,Portraits +83 ELO,Text Rendering +84 ELO — 主要发力的几个老大难都被推动。

2. 方法 (Method)

核心思想 (类比)

把 T2I 生成想成一个"室内设计师 + 印刷厂"协作:

整套工厂还要会做修改任务 (TI2I editing) — 你给一张猫的图,加一句"把头上戴个帽子",同一个 pipeline 把图改了。秘密:VLM 把"原图 + 编辑 prompt"一起编码成 context,VAE 编码"原图 latent"和"目标图 latent"喂给 MMDiT。

2.1 架构总览

Qwen-Image-2.0 architecture
Fig. 8 — Qwen-Image-2.0 三大组件:(1) Qwen3-VL 冻结的 MLLM,把 system prompt + input image + user prompt 编码成多模态 condition;(2) VAE Encoder (左) 把 input image 编码到潜空间 $E_x$;(3) VAE Encoder (右) 把 target image 加噪后送入扩散过程。中间 Qwen-Image-2.0 Block × L 是 MMDiT,把 condition + 噪声 latent 一起处理,projection 后输出。

三个组件:

  1. MLLM (Qwen3-VL): condition encoder。处理 text + 参考图,输出 modality-aware 表示 \(h_y\)冻结的,不参与训练 — 复用 Qwen3-VL 的 in-context 能力 (这条跟 D-OPSD 同思路)。
  2. VAE (f16c64,79M enc / 259M dec): 把 input image 编码到隐空间 \(E_x\),在隐空间里 diffuse,再解码回图像。Section 2.2 详细。
  3. MMDiT: 共享 transformer backbone 同时处理 text 和 image token。Section 2.3 详细。

跟 Qwen-Image 1.0 (Wu et al. 2025) 的关键区别 — 这是一个纯升级论文,没改 paradigm:

2.2 高压缩 VAE — 这是 2.0 最大的工程胜利 (§3.1)

原生 2K 分辨率训练 = 计算成本爆炸。常见做法 \(f=8\) 压缩 (8× 空间下采样 + 16 channel) 让 2K 图变成 256×256×16 的潜变量,但 256² latent 还是大。Qwen 把压缩率推到 \(f=16\)、channel 推到 64,latent 体积砍到 128² × 64 — 像素数比 f8c16 少 4×,DiT 训练 FLOPs 也省 4×。

\(f=16\) 经典 trade-off:

论文的解法:

  1. Residual autoencoder (Chen et al. 2025): 非参数 shortcut 把细节直接 bypass 到 decoder,缓解信息瓶颈。
  2. f16c64 而非 f16c32: 同样的"总 channel bottleneck" (8×8×16=1024 = 16×16×64=1024) 提升重建。
  3. 富文本图像 corpus: 在内部 PDF / slide / poster 数据 + 合成文本段落上训练 VAE,英文中文都覆盖。
  4. VA-VAE 语义对齐损失 (Yao et al. 2025): 把 latent space 跟语义表征对齐 — 关键观察:早期施加强语义对齐,后期逐步放松,让 reconstruction 和 diffusability 取得平衡。
  5. 砍掉对抗损失: 大规模 VAE 训练里 adversarial loss 是 redundant 的 (跟 Wu et al. 2025 一致),只用 reconstruction + perceptual + semantic alignment 三项,训练更稳。
Table 1: VAE comparison
Tab. 1 — Qwen-Image-2.0-VAE 在 f16c64 设置下,ImageNet 256×256 PSNR 33.42 / SSIM 0.9225,Text 256×256 PSNR 32.81 / SSIM 0.9795 — 跟 f8c16 时代的 Qwen-Image (33.42 / 0.9159) 重建质量持平,但 latent 体积少 4×。其他 f16 VAE (HunyuanImage-3 f16c32, Wan2.2 f16c48, Stepvideo-T2V f16c64) PSNR 都在 31 附近。

这是 2.0 最有冲击力的单一改进。 "f16 VAE 重建质量跟 f8 一样好"对整个领域是个 unlock — DiT 训练成本 4×,推理成本 4×。

2.3 MMDiT 的几个几何细节 (§3.2)

架构沿用 MMDiT (Esser et al. 2024) 范式,text 和 image token 在共享 transformer backbone 里联合处理。Qwen-Image-2.0 的具体几何选择:

多模态 token 序列构造 (Eq. 1):

\(E_x\) 来自 VAE encoder,\(h_y\) 来自 Qwen3-VL — 替换掉了 Qwen3-VL 输出的视觉部分 \(h_x\)。这一替换是因为 MLLM 的视觉 token 是为识别训的,VAE latent 才适合生成

位置编码: 用 Qwen-Image (Wu et al. 2025) 的 MSRoPE — 把 text token 和 image token 在同一套 ROPE 系数下编码,跨模态可以正确计算相对位置。

归一化: RMSNorm (Zhang & Sennrich, 2019) 用于 QK-norm,其他都用 LayerNorm。

Modulation:纯乘性,不带 bias (Eq. 2)

而不是常规的 \(h' = \alpha h + \beta\)没解释为什么,但 Qwen team 经验上观察"乘性 modulation 在大规模 MMDiT 上更稳"。

SwiGLU MLP (Eq. 3):

\(\sigma\) 是 SiLU,\(\Phi_1, \Phi_2\) 是两个线性投影,\(\otimes\) 是 element-wise product。这是 LLaMA / Qwen-LLM 的标准 FFN。论文给的动机:"joint text-image training 容易让某些 neuron 激活值过大、premature saturation",SwiGLU 比 SiLU 缓解了这个问题。

2.4 Prompt Enhancer — 把用户随手写的 prompt 自动扩成 1k token 设计稿 (§3.3)

真实用户 prompt 跟训练数据的"详尽设计稿"之间有 distribution gap。PE 模块用 Qwen3.5-9B 初始化,把用户的"画只猫" 扩成几百到 1000 token 的详细描述。

数据构造的妙处 — Reverse engineering:

  1. 拿一个 fine-grained 标注 \(P_{\text{fine}}\)
  2. 用 LLM 把它分类成 General / Portrait / Text / Complex Text 四类。
  3. 从"降级策略池"\(S\) 里采样一组策略 (stylistic simplification、colloquialization、删除 lighting / texture / layout 等细节)。
  4. 应用这些策略产生退化的口语化 prompt \(P_{\text{short}}\)
  5. 每个降级操作的定义了"如何把短 prompt 还原成长 prompt"的 CoT — 形成 \((P_{\text{short}}, \text{CoT}, P_{\text{fine}})\) 三元组训练 PE。

PE 训练分两段:

编辑任务的 PE 反过来:用 MLLM 把长 annotation 总结成简短 editing prompt,避免不必要的 stochastic degradation。

2.5 数据 — 6 阶段过滤 + 闭环飞轮 (§2)

6-stage 数据 pipeline (Fig. 6): 从 256P T2I 逐步升到 2048P SFT,每个 stage 加新数据 + 应用新过滤器。

6-stage data pipeline
Fig. 6 — 6 阶段数据流。S1 (256P T2I pre-training) 应用 8 个过滤器 (broken files、resolution、dedup、NSFW、rotation、entropy、CLIP score、token length);S2 (256P T2I + TI2I) 加 edit data;S3 (512P) 加 synthetic data;S4 (512/1024P) 加 image quality / aesthetic / compression quality 过滤器;S5 (多分辨率到 2048P) 加 resolution 过滤器;S6 (SFT) 用更严格的 distribution 过滤器复用前面所有 operator。

Caption schema 四种: General / Text / Knowledge / Structured。最有意思的是 Structured caption — 把 relation graph、flowchart、diagram 的"实体-属性-关系"显式编码,让模型学层次关系和 topological dependency。

数据飞轮 (Fig. 7) — 论文里最 production-oriented 的设计:

Data flywheel closed loop
Fig. 7 — 3 阶段闭环:(1) Signal Collection 自动收集 model evaluation / user feedback / bad case mining 三类信号;(2) Case Routing & Targeted Optimization 根据 error attribution 把 bad case 路由到三个 track —— RL track (是 alignment / policy 问题 → reward policy 调整)、Pre-training track (是数据缺失 → vector retrieval engine 检索同类数据 → 数据增强 → 人审过滤 → 加入语料)、PE track (是 prompt engineering 不到位 → 优化 PE);(3) Model Update 用更新的策略+数据训新 checkpoint,回到第 1 步。

这套飞轮的卖点:error attribution + 三 track 自动路由。一个 bad case 不再笼统标"质量差",而是诊断"为什么差,该用什么 track 修"。人审只在数据增强后的 filtering 那一步介入 — 整个 loop 高度自动。这是商业部署的产物,不是 academic toy demo。

2.6 训练 + RLHF + 蒸馏 (§4)

多阶段训练 (Tab 2):

Training configuration
Tab. 2 — 三阶段训练。Pre-training: 700K steps,256/512 分辨率,T2I/TI2I = 9/1,lr 1e-4,batch 32K/16K (按 resolution scale)。Continual pre-training: 250K steps,512/1024/2048 分辨率,T2I/TI2I = 7/3,lr 2e-5。SFT: 仅 10K steps,512/1024/2048,T2I/TI2I = 7/3,lr 1e-5。Optimizer AdamW + weight decay 0.001 + grad norm clip 1.0 + unconditional dropout 0.1 (for CFG)。

关键比例 trick:T2I/TI2I 比例从 9:1 调到 7:3 — pre-training 阶段以 T2I 为主建立基本生成能力,继续训练时 30% TI2I 加强编辑能力。SFT 同样 7:3。

RLHF (§4.2): 5 个 task-specific composite reward models:

所有 reward 校准到可比尺度,权重训练过程中动态调整避免过度优化某一维。

关键 RL 设计 — CFG 混合策略: Rollout 时用 CFG (Ho & Salimans 2022) 生成高质量样本评 reward,但policy 优化目标里排除 unconditional branch。这条比同期 Flow-GRPO / Flow-OPD 都精细 — 保 fidelity + 省算力。Adapted GRPO framework (Liu et al. 2026; Wang et al. 2025; Zheng et al. 2025) — 注意这跟 RL's Razor 等用的同一个 GRPO 家族。

Few-step 蒸馏 — DMD (§4.3):Distribution Matching Distillation (Yin et al. 2024) 从 40-step teacher 蒸馏到 4-NFE student。DMD gradient 形式 (Eq. 4):

其中 \(s_{\text{fake}}\) 是辅助 score 模型 (基于 student-generated 样本 + flow-matching 目标训练),\(s_{\text{real}}\) 是冻结的 teacher diffusion score。\(x_t = (1-t) x_\theta + t \xi\) 是 student 的 clean 预测和独立 Gaussian noise 的线性插值。

论文 motivation:DMD 在异构生成架构上 (SD、PixArt、各种 DiT) 都稳,所以选它而非 Consistency Models 或 trajectory-based 方法。

Distillation comparison
Fig. 11 — 蒸馏定性对比。上排:Qwen-Image-2.0-RL 40 步采样;下排:Qwen-Image-2.0-Distillation 4 NFE。在 portrait (爱因斯坦、亚洲女性) 和 landscape (黄昏瀑布、山谷小屋) 上,4-step student 视觉质量、语义对齐、构图连贯都跟 40-step teacher 平齐。10× 推理加速无明显质量损失。

2.7 与代码 (no, mostly)

Qwen-Image-2.0 的训练代码和权重都未公开。官方 GitHub repo QwenLM/Qwen-Image 只有:

2.0 模型只通过 Qwen Chat 商业 API 提供,HF 上的 Qwen/Qwen-Image 仍是 1.0 weights (截至 2026-05)。所以本文没法做"代码 vs 论文"的对照分析 — 全部架构 / 训练细节都依赖论文文字描述。

下面是教学性的 didactic 实现 — 不是 Qwen 代码,只是论文 Eq. 1-3 的 PyTorch 翻译,方便对照阅读:

Didactic reference — paper Eq. 1-3 (architecture geometry), NOT Qwen official code

class QwenImage2Block(nn.Module):
    """Single MMDiT block — geometry follows paper §3.2."""
    def __init__(self, dim, num_heads, ffn_mult=4):
        super().__init__()
        # RMSNorm for QK-norm (paper §3.2)
        self.q_norm = RMSNorm(dim // num_heads)
        self.k_norm = RMSNorm(dim // num_heads)
        # All other norms are LayerNorm
        self.norm_attn = nn.LayerNorm(dim)
        self.norm_ffn  = nn.LayerNorm(dim)
        # Attention: shared text+image transformer (MMDiT)
        self.attn = MMDiTAttention(dim, num_heads, use_msrope=True)
        # SwiGLU MLP (paper Eq. 3): h = Φ₁(x) ⊗ σ(Φ₂(x))
        hidden = ffn_mult * dim
        self.w1 = nn.Linear(dim, hidden, bias=False)   # Φ₁
        self.w2 = nn.Linear(dim, hidden, bias=False)   # Φ₂
        self.w3 = nn.Linear(hidden, dim, bias=False)   # output projection

    def swiglu(self, x):
        # Paper Eq. 3
        return self.w3(self.w1(x) * F.silu(self.w2(x)))

    def modulate(self, h, alpha):
        # Paper Eq. 2: h' = α·h   (NO bias β — pure multiplicative)
        return alpha * h

    def forward(self, h, alpha_attn, alpha_ffn):
        # h: concat(VAE latent, Qwen3-VL hy) — paper Eq. 1
        h = h + self.modulate(self.attn(self.norm_attn(h)), alpha_attn)
        h = h + self.modulate(self.swiglu(self.norm_ffn(h)), alpha_ffn)
        return h

def build_multimodal_sequence(input_image, input_text, qwen3_vl, vae_encoder):
    """Paper Eq. 1: h = Concat(E_x, h_y)"""
    with torch.no_grad():
        # Qwen3-VL is FROZEN — extracts modality-aware text embedding
        hy = qwen3_vl.encode_text_with_image_context(input_text, input_image)
        # Replace VLM's visual tokens with VAE latent — paper §3.2
        Ex = vae_encoder(input_image)                  # f16c64 VAE
    h = torch.cat([Ex, hy], dim=1)
    return h

注意几个关键点:

3. 结论 (Key Findings)

LMArena T2I (real user blind preference,2026-04-22 snapshot):

VAE 重建 (Tab 1):

定性能力 (§5.2-5.3 的对比图):

蒸馏 (Fig. 11): 4-NFE DMD student 跟 40-step teacher 在 portrait / landscape / 自然场景上视觉质量几乎不可分,10× 推理加速

4. 实现细节 (Implementation Notes)

Qwen-Image-2.0 是一个商业 production 系统,论文公开架构 + 训练 recipe不开源代码 / 权重。下面是从论文文字提炼的关键工程参数:

5. 批判性总结 (Critical Assessment)

5.1 优点

5.2 不足 / 疑点

5.3 适用 vs 不适用

5.4 进一步阅读

讨论 / Comments

评论托管在本仓库的 GitHub Discussions, 需 GitHub 账号。