一句话定位

VQGAN-CLIP 是一种无需任何额外训练的开放域文本生图与图像编辑方法:用预训练 clip 计算”候选图—文本”的相似度作为损失,反向传播到预训练 taming-transformers-vqgan(VQGAN,即 taming-transformers-vqgan 的离散自编码器)的隐码(z-vector)上做迭代优化。仅 ~2.27 亿参数、单张 11 GB 消费级 GPU(甚至免费 Colab K80)即可运行,人评对齐度大幅超过同期 minDALL-E 与 GLIDE,直接点燃了 2021 年”CLIP+VQGAN” AI 艺术社区浪潮(论文统计全网调用超 1000 万次)。

背景与定位

2021 年初的开放域文生图/图像编辑高度依赖”昂贵且专门训练”的大模型:

  • 生成侧:dall-e-1(号称 12B 参数)、glide(号称 5B)能从任意文本生成/补全图像,但不支持对已有图像做语义编辑,且需从头训练巨型模型。
  • 编辑侧:Open-Edit(ECCV 2020)首次提出开放域语义图像编辑,但只能做”红苹果→绿苹果”这类语义简单的变换,不能生成图像,且依赖 edge-map 维持结构、易破坏图像内容。

VQGAN-CLIP 的核心定位是**“首个统一开放域语义生成与编辑的方法”**,且把”训练成本”彻底转移到”推理时的少量优化”。它建立在两个已有的预训练组件之上:用 clip(Radford et al. 2021,对比学习的联合图文编码器)做文本对齐打分,用 VQGAN(Esser/Rombach/Ommer 2021,taming-transformers-vqgan)做图像生成器。生成与编辑的唯一区别是初始图像:生成从随机噪声起步,编辑则用待编辑图像起步——架构层面完全一致。

方法论上它与更早的 CNN 可视化/可解释性工作(DeepDream、Grad-CAM、saliency map)一脉相承——都是”固定网络、迭代更新输入图像以匹配某个目标”。作者也致谢 Ryan Murdock(advadnoun),他几乎同时独立做出了非常相似的 VQGAN+CLIP 技术但未公开发布。

注:本工作 2021 年 4 月起就以 Colab notebook 形式公开传播,论文(arXiv:2204.08583)2022-04-18 才正式投出(v1),v2 为 2022-09-04 修订版;arXiv comment 标注 “Accepted for publication at ECCV 2022”。因此 worklist 把 date 记为 2021-04(社区首次公开时点),category=t2i。

模型架构

不是一个”新模型”,而是一套推理时优化(test-time optimization)框架,把两个冻结的预训练网络拼起来:

  • 图像生成器(backbone)= VQGANtaming-transformers-vqgan 的离散隐变量自编码器部分)。基于 VQVAE(Oord et al. 2017)思想:用编码器 E 把图像 x 映射到隐变量 z=E(x),再以最近邻方式量化到一个码本(codebook) Z={z_i},码本词表大小 K、嵌入维度 n_k;量化步用 straight-through estimator 让 CNN 与码本端到端可训。论文正文只说用”the popular VQGAN [12]“,未指明具体检查点;社区参考实现(nerdyrodent / EleutherAI README)默认下载 ImageNet 上预训练的 vqgan_imagenet_f16_16384(下采样因子 f=16、码本 16384,托管在 Heidelberg)。生成时被优化的不是网络权重,而是连续隐码 z-vector(论文沿用 VQVAE 术语称之为 z-vector),把它解码为图像。
  • 打分器 = CLIP:把文本 prompt 和候选图像分别编码到联合空间,取嵌入间的球面距离/余弦相似度作为损失。代码实现支持多种 CLIP 视觉骨干(ViT-B/32ViT-B/16 等)。
  • 条件注入方式:没有传统意义的”条件注入”——文本条件完全通过 CLIP 损失的梯度回流到 z-vector 实现。生成 vs 编辑只切换初始图像(随机噪声 vs 待编辑图)。
  • 参数量:VQGAN+CLIP 合计约 2.27 亿参数,作者刻意强调比 minDALL-E(1.3B)、GLIDE(783M 无 CLIP / 941M 带 CLIP)、号称的 DALL-E(12B)、GLIDE(5B)都小得多。
  • 分辨率策略:由 VRAM 决定而非固定。社区实现(nerdyrodent)默认 512×512(约 10 GB VRAM),380×380 约 8 GB,900×900 约 24 GB。

关键架构/方法设计(让效果可用的三件套):

  1. 多裁剪 + 数据增强(augmentations):单图算 CLIP 梯度噪声很大。框架对候选图取大量随机裁剪,再叠加随机水平翻转、随机仿射、随机透视、color jitter、加高斯噪声等增强(基于 Kornia 实现),对所有增强图的 CLIP 损失求平均,显著降低每步更新方差。这是消融证明的”成功关键因素”。
  2. 隐码 L2 正则:无约束 VQGAN 输出常出现杂乱纹理。对 z-vector 加权 L2 正则 Loss = L_CLIP + α·(1/N)Σ z_i²,鼓励表示稀疏(把码本中低信息码推向 0),提升结构连贯度;正则项在生成过程中以 0.005 衰减。这取代了早期版本更慢的 “Codebook Sampling” 方案。
  3. 可插拔附加组件:因为是在中间步骤上做干预,框架极易扩展——社区已加入集成(ensemble)、用贝塞尔曲线做隐表示、对抗鲁棒扰动等。作者自用两项:Prompt Addition(多文本损失相加,实现风格+内容的隐空间”加法”组合)与 Masked editing(用 CLIP 零样本生成掩码做局部替换,如 Dog 区域 → 替换;阈值取均值下方两个标准差)。

数据

本方法本身不做任何训练,因此没有训练数据集。 所用数据全部是别人预训练好的权重

  • VQGAN:论文未点名具体检查点(仅称”popular VQGAN”);社区实现默认用在 ImageNet 上预训练的 vqgan_imagenet_f16_16384 检查点(来自 taming-transformers-vqgan / CompVis,由 Heidelberg 托管)。
  • CLIP:OpenAI 公开的 CLIP(在 4 亿网络图文对上对比训练,本工作未涉及其数据细节)。

唯一与”数据”相关的人评实验:作者招募人类对 (文本, 图像) 对的对齐度打 1–5 分;prompts 基于使用经验挑选,但在不预知模型行为的前提下选定。未涉及任何图文配对训练数据、清洗过滤、re-captioning 或合成数据——这正是其”training-free”卖点。

训练方法

无训练(training-free / zero additional training)。 不是 diffusion / flow matching / next-token / masked-token 任何一种训练范式,而是推理时的梯度优化

  • 优化目标:最小化”候选图 CLIP 嵌入”与”文本 prompt CLIP 嵌入”间的球面距离(再加 z-vector 的 L2 正则项)。
  • 优化器与超参(论文设置):Adam,学习率 0.15,β=(0.9, 0.999),每张图跑 400 次迭代。社区实现额外支持 AdamW/Adagrad/Adamax/DiffGrad/AdamP/RAdam/RMSprop 等多种优化器及更长迭代(数千步)。
  • 流程:初始图(噪声=生成 / 原图=编辑)→ 经 VQGAN 解码 → 多裁剪+增强 → 过 CLIP → 算平均损失 → 反传到 z-vector → 更新 → 重复直到语义匹配。
  • 历史演进(消融):早期版本用 Codebook Sampling(在叠加于隐向量的网格上优化一个分类分布),对交互式使用太慢且画质有提升空间;现版改为 z-quantize + MSE/L2 正则,既更快又更高质。正则与 Codebook Sampling 不兼容(后者会在正则生效前过早锁定具体码)。
  • 无蒸馏 / 无偏好对齐 / 无 RLHF / 无 LCM 等加速训练——因为根本不训练。“加速”的唯一手段是减少迭代步数或裁剪数。

Infra(训练 / 推理工程)

训练算力 = 0 V100-hours(论文 Table 2 直接把 vqgan-clip 的 Training 列标为 “0 V100-hours”),这是其相对 minDALL-E(792 V100-hours:504 基座 + 288 ImageNet 微调)与 GLIDE-filtered(400 A100-days ≈ 19,200 V100-hours,作者经私下沟通获悉)的核心优势。

推理时延(论文 §6 / Table 2,每次 10 跑取均值±std):

  • vqgan-clip:K80 935.2±20.4 s / P100 654.3±10.1 s / RTX 2080Ti 229.5±26.2 s / V100 188.3±1.2 s
  • 对比 minDALL-E:K80 216.0 s / P100 60.0 s / V100 16.3 s。
  • 对比 GLIDE-filtered:K80 96.2 s / P100 19.2 s / V100 9.7 s。
  • 即 vqgan-clip 推理约比 minDALL-E 慢 ~3 倍、比 GLIDE(filtered) 慢 ~10 倍。

训练 vs 推理的总成本盈亏平衡(V100):minDALL-E 在累计 ≈15,800 次生成 / 858 V100-hours 后才比 vqgan-clip 更省;GLIDE(filtered) 则要 ≈384,000 次生成 / 20,200 V100-hours——意味着在”几万美元算力”花完之前,VQGAN-CLIP 始终更高效,极大降低研究者迭代门槛。

显存与部署(accessibility 为价值导向): 刻意把方法控制在 < 11 GB VRAM,以塞进免费 Google Colab 能拿到的最大 GPU(K80);Colab 上整个生成过程 < 3 分钟。社区实现的典型 VRAM:512×512 ~10 GB、380×380 ~8 GB、900×900 ~24 GB(nerdyrodent,RTX 3090 上测)。依赖栈:PyTorch 1.9 + CUDA 11.1、Kornia(可微增强)、OpenAI CLIP、CompVis taming-transformers。部署形态以 Jupyter / Colab notebook 为主(论文 §C 观察:绝大多数用户用 notebook 而非传统仓库),并衍生大量 web-as-a-service 站点与 Discord bot(EleutherAI Discord 的免费 demo bot 由 CoreWeave 提供算力)。

评测 benchmark(把效果讲清楚)

论文不追求照片级真实感,主张以”高视觉质量 + 高语义保真”为目标,因此评测以人评对齐度为主,未报告 FID/CLIPScore/GenEval 等自动指标。

生成——人评对齐度(Table 1,1=最差,5=最好,12 个 prompt A–L 的均分): 为给对手最大优势,minDALL-E 与 GLIDE 用 best-of-5 cherry-pick,而 vqgan-clip 用 best-of-1 不挑(uncherry-picked)

模型参数量平均分
minDALL-E1.3B2.7
GLIDE (CF-guided)783M2.3
GLIDE (CLIP-guided)941M3.3
VQGAN-CLIP227M4.6

VQGAN-CLIP 在几乎全部 12 个 prompt 上得分最高,人评压倒性认为其生成更贴合文本。定性分析(§3.3)指出对手在”the universal library trending on artstation""a charcoal drawing of a cathedral”上尚可,但在”a child’s drawing of a baseball game”上多不可辨、在”a forest rendered in low poly”上忽略后半提示;VQGAN-CLIP 能正确按”儿童画”调低细节、按”low poly”风格化,体现对多部分 prompt 的语义把控。

艺术风格保真(§3.1 + 附录 F): 用 Google 反向图片搜索验证——“a painting by [artist]” 生成图在每个案例中,最相似的真实图都是该艺术家的真作。对虚构画名(如”Willow Trees by van Gogh”)也只有 VQGAN-CLIP 能稳定生成”风格 + 主题”双对的图,minDALL-E/GLIDE 常风格或主题失配(如”A Self-Portrait by Kahlo”被 minDALL-E 画成白人男性)。

编辑——对比 Open-Edit(§4,定性,无打分表): 颜色编辑(“Green”/“Red Bus”)、天气修改(Foggy→Clear、Cloudy→Sunny)、杂项(“Wooden”/“Withered Flowers”/“Focused”)三类。结论:Open-Edit 依赖 edge-map 维持结构,遇到需较大改动场景结构时失败,且常破坏全图内容/染色全图;VQGAN-CLIP 更好保留原图结构、把改动限定在目标对象,且在”文本与图像语义相关性低”时优势更大。

消融结论(§5):

  • 数据增强是成功关键:去掉增强后出现杂乱/重复生成;affine 减少杂乱与重复,perspective 改善 3D 几何一致性,noise 改善前景从背景的分离。
  • z-quantize + 正则 > Codebook Sampling:更快且能产生更细腻细节,无正则与 Codebook 版本均更”糊”。

自动指标(FID、CLIPScore、GenEval、T2I-CompBench、HPSv2、ImageReward、PickScore、人评 ELO 等)在原文中均未报告——这是该工作的已知评测局限。

创新点与影响

核心贡献:

  1. 首个统一开放域语义生成 + 编辑的方法(生成/编辑只差初始图)。
  2. 完全 training-free:把巨型模型的训练成本换成推理时少量优化;仅需两个现成预训练模型(一个图像生成器 + 一个联合图文编码器),对二者皆不特化(后续工作已用 diffusion 替 GAN、用别的编码器替 CLIP)。
  3. 可访问性即价值:< 11 GB VRAM、免费 Colab 可跑、< 3 分钟出图,把生成式 AI 艺术的门槛拉到”有网+谷歌账号即可”。
  4. 开放协作开发范式:方法 2021-04 起在公开社区(Colab notebook、EleutherAI Discord)迭代,非作者已扩展到音频引导(Wav2CLIP、Music2Video)、3D/网格(Text2Mesh)、材料设计、情感生成等模态。

对后续工作的影响: “CLIP 引导优化生成器隐空间”成为一整类方法的范式——CLIPDraw、CLIPstyler、FuseDream、Text2Mesh、DreamFields 等直接沿用;Blended Diffusion、VQ-Diffusion 等把 GAN 换成扩散模型继续这条线。商业上催生 NightCafe、Wombo Art、starryai、NeuralBlender、Hypnogram 等十余个产品,全网累计调用 超 1000 万次、售出 500+ NFT。它也是大众第一次大规模接触”文字直接造图”的入口,为半年后 latent-diffusion-ldm / Stable Diffusion 与 DALL·E 2 引爆的扩散时代做了重要的社区铺垫。

已知局限:

  • 推理慢(比 minDALL-E/GLIDE 慢 3–10×);高生成量场景下总成本反超训练式模型。
  • 画质上限受 VQGAN 解码器与 ImageNet 码本限制,常带 VQGAN 特有的纹理/拼贴感、缺乏全局连贯。
  • 非照片级真实(作者主动放弃该目标)。
  • 缺乏自动量化指标评测,效果主要靠人评与定性图证明。
  • “a painting”这类过于模糊的 prompt 易缺乏整体连贯性,强依赖用户的 prompt 工程(论文 §C 观察到用户更倾向改 prompt 而非改算法)。

原始链接

一手源存档(sources/)