一句话定位

UNO 是字节跳动 Intelligent Creation 团队提出的「单主体→多主体」统一的 subject-to-image(主体驱动)定制生成模型:它从 T2I 的 flux-1 (FLUX.1-dev) DiT 出发,用一条「模型-数据协同进化」(model-data co-evolution) 的高一致性合成数据流水线把模型迭代训练成 S2I 模型,核心创新是渐进式跨模态对齐 (progressive cross-modal alignment) + 通用旋转位置编码 UnoPE。在 DreamBench 单主体上以零样本拿到 DINO 0.760 / CLIP-I 0.835 的最高分,是 2025 年被广泛采用的开源 subject-driven 基线(ICCV 2025 接收)。

背景与定位

主体驱动生成(给定一张/多张参考主体图,按文本生成包含该主体的新图)长期受两个瓶颈制约:

  1. 数据可扩展性:从单主体配对数据扩到多主体配对数据并放大规模极难——真实多主体配对图几乎无法采集,合成数据又常分辨率低(≤512×512)、域窄。
  2. 主体可扩展性:多数方法只针对单主体设计,难迁移到多主体场景。

早期 per-subject 微调流派(dreambooth、Textual Inversion、LoRA)需对每个新主体逐一微调,推理慢、不可部署;后续大数据训练流派(IP-Adapter、BLIP-Diffusion)用额外 image encoder 注入参考图,实现免微调实时定制,但受限于训练数据,常在「主体相似度 vs 文本可控性」间权衡或生成不稳定。

UNO 的关键洞察借鉴 LLM 的「合成数据自我增强」:弱(less-controllable)的前代模型可以系统性合成更好的定制数据,去训练出更强(more-controllable)的后代模型,形成模型与数据的持续协同进化。技术上它沿着 DiT in-context 生成这条线(in-context-lora、OminiControl 已证明 DiT 自身可作 image encoder / 参考图引擎),把单主体扩展到多主体,并以最小架构改动保留 DiT 的可扩展性。相关前置工作:latent-diffusion-ldmdit-scalable-diffusion-transformers[stable-diffusion-3]flux-1

模型架构

  • Backbone:基于 MM-DiT 的 FLUX.1-devflux-1)。MM-DiT 把文本 token 与图像 token 拼接后做多模态注意力(Q/K/V 在全部 token 上计算 attention,Z=[z_t, c]),文本与图像各自在自己空间内表达又互相感知。
  • Text encoder:T5(FLUX 原生),训练中冻结;推理代码另需 CLIP-ViT-L/14(来自 FLUX 文本侧)。
  • Tokenizer / VAE:沿用 FLUX 的 VAE,目标图 I_tgt 由 VAE 编码为 noisy latent z_t;参考图 I_ref^i 同样过 VAE 编码为 z_ref^i。
  • 条件注入(核心):UNO 不引入额外 image encoder 或 adapter,而是把参考图的 VAE latent 直接拼到 DiT 输入序列里,复用 DiT 的 in-context 注意力做条件感知。
    • Stage I(单主体):z1 = Concat(c, z_t, E(I_ref^1))
    • Stage II(多主体):z2 = Concat(c, z_t, z_ref^1, z_ref^2, …, z_ref^N),论文中 N=2(但合成数据里偶有 >2 参考图,赋予了更多主体的泛化)。
  • UnoPE(通用旋转位置编码,关键架构设计):FLUX 用 RoPE,给文本 token 固定位置 (0,0),给 noisy 图像 token 分配 (i,j),i∈[0,w−1], j∈[0,h−1]。UNO 给新引入的参考图 token 复用同一编码格式以继承隐式位置对应,但从 noisy 图像 token 的最大宽高处沿对角线起始偏移:第 N 个参考 latent 的位置索引为 (i', j') = (i + w·(N−1), j + h·(N−1))。这一对角线偏移既避免参考图过度「拷贝」其原始空间结构,又让模型在多参考图存在语义间隔时从文本而非参考图布局里获取 layout 信息,从而缓解多主体放大时的「属性混淆 (attribute confusion)」。消融显示这是 UNO 的关键涨点项(见下文)。
  • 参数化:UNO 不全参微调 FLUX,而是用 LoRA(rank=512) 训练;架构改动「最小且有效」,保留 base 模型可扩展性。
  • 分辨率策略:单主体推理参考图最长边默认 512,多主体场景 320;训练在 512 bucket 内但多尺度,推理可外推到 512/568/704 等多种分辨率与宽高比。

数据

UNO 的核心贡献之一就是合成数据流水线与公开的 UNO-1M 数据集(~1M 配对图,已开源于 HF)。

  • Taxonomy Tree(分类树):以 Object365 的 365 个通用类为根,再用 LLM 按年龄/职业/着装等细粒度扩展出大量 subject 实例与场景描述(creative / realistic / text-decorated 三种风格 system prompt 生成 subject,另用 system prompt 按 subject 生成每个 8 条场景描述)。配合预定义 diptych 文本模板,得到数百万条 T2I prompt。
  • 单主体 in-context 生成:用 FLUX.1 的 in-context 能力 + diptych(双联画)模板,让模型一次生成左右(或上下)两格、含同一 subject1 的一致图对,并直接产出三种高分辨率:1024×1024、1024×768、768×1024(区别于 OminiControl 只产 512×512 单主体数据)。生成后用 Hough Transform 切成参考图 I_ref^1 与目标图 I_tgt。
  • 多主体 in-context 生成:用上一阶段训出的 S2I 模型反过来造多主体数据——先用开放词表检测器 (OVD) 在 I_tgt 里检出 subject2 并裁剪,再把裁剪图 + subject prompt 喂给 S2I 模型重新生成一张同主体但换场景的 I_ref^2(而非直接用裁剪图),以规避「copy-paste」问题(直接用裁剪图会让模型不读文本、只粘贴主体)。
  • 多阶段过滤(关键):① 先用 DINOv2 算参考图与目标图余弦相似度,阈值滤掉一致性显著偏低的对;② 再用 VLM + 三轮 CoT 打分(按 appearance / details / attributes 等自动维度逐部件 0–4 评分取均值)。论文训练只保留满分(score=4)数据;HF 数据卡建议一般使用取 score_final ≥ 3.5。统计显示 CoT 过滤后约 35.43% 数据被保留(VLM 分布:[4.0]=35.43%、[3.5,4.0)=12.66%、[3.0,3.5)=23.51%、[2.5,3.0)=13.02%、[2.0,2.5)=8.67%)。
  • 训练实际用量:Stage I 用 230k 单主体对,Stage II 用 15k 多主体对(均由上述流水线合成)。
  • UNO-1M 数据集:~1M 配对图,>365 类,~1024×1024 可变分辨率,附逐部件 consistency 分解分与最终一致性分;官方标注其可用于 T2I、subject-driven、scored-filter 训练,乃至一致性 reward model 训练
  • 数据来源说明:绝大多数图为生成或授权图。许可分层:代码 Apache 2.0模型权重 CC BY-NC 4.0(且 FLUX.1-dev 衍生须遵循其原始许可);UNO-1M 数据集卡标注 license: apache-2.0

训练方法

  • 训练目标:沿用 FLUX 的扩散/rectified-flow 去噪目标(论文未单独改写损失,VAE 编码目标图加噪后由 DiT 去噪),方法重心在条件注入与位置编码而非损失函数。
  • 渐进式跨模态对齐 (progressive cross-modal alignment,两阶段):直接把多张参考图塞进 DiT 会破坏原模型的收敛分布、导致训练不稳/次优,故采用「简单到困难」的渐进策略——
    • Stage I:用单主体配对数据,把预训练 T2I 微调成能读单参考图+文本的 S2I 模型(cross-modal alignment 初始阶段);
    • Stage II:在多主体配对数据上继续训练,让模型读多张参考图并把信息注入各自 latent 空间。
    • 这一渐进训练「解锁」了 T2I 模型固有的 in-context 生成能力。消融表明:跳过渐进对齐直接喂多图会让 DINO/CLIP-I 显著掉点;且渐进对齐反而抬高了单主体场景的上限(同样步数下 DINO 0.730→0.760、CLIP-I 0.821→0.835)。
  • 超参 / trick
    • 学习率 1e-5,total batch size 16;
    • Stage I 训 5,000 步,Stage II 再训 5,000 步
    • 全程 LoRA rank=512(rank 消融:4→512 持续涨点,到 128 后趋缓,最终取 512 平衡性能与资源)。
  • 未涉及 RLHF/DPO/偏好对齐、未做步数蒸馏(UNO 本身是 LoRA 微调,非加速方法)。

Infra(训练 / 推理工程)

  • 训练算力:整个实验在 8× NVIDIA A100 上完成;两阶段各 5k 步、batch 16、LoRA rank 512。论文未报告精确 GPU·时与吞吐。
  • 推理 / 部署
    • 开源 Gradio demo + HF Space(UNO-FLUX);
    • 提供 fp8 模式 + offload 的低显存路径,峰值显存约 16GB(消费级 GPU 可跑);在 RTX 3090 上 fp8+offload 端到端推理 40s–1min
    • 全部 checkpoint(含 FLUX.1-dev、文本编码器、CLIP、UNO LoRA)约占 37GB 磁盘。
  • 量化/缓存等更深推理优化论文未展开(README 标注「may try further inference optimization later」)。

评测 benchmark(把效果讲清楚)

评测指标:DINO、CLIP-I(主体相似度)、CLIP-T(文本一致性)。单主体在 DreamBench(zero-shot),多主体沿用 MIP-Adapter/Subject-Diffusion 协议:DreamBench 中 30 组两两主体组合 × 25 prompt × 6 图 = 4,500 image groups

单主体(DreamBench,Table 1,节选)

方法DINO↑CLIP-I↑CLIP-T↑
Oracle(参考图)0.7740.885
DreamBooth0.6680.8030.305
RealCustom++0.7020.7940.318
OmniGen0.6930.8010.315
OminiControl0.6840.7990.312
FLUX.1 IP-Adapter0.5820.8200.288
UNO (Ours)0.7600.8350.304

UNO 的 DINO 0.760、CLIP-I 0.835 均为对比方法中最高(zero-shot),逼近 Oracle 上界;CLIP-T 0.304 处于有竞争力区间(部分方法 CLIP-T 略高但主体相似度大幅落后)。

多主体(Table 2,节选)

方法DINO↑CLIP-I↑CLIP-T↑
MS-Diffusion0.5250.7260.319
MIP-Adapter0.4820.7260.311
OmniGen0.5110.7220.331
UNO (Ours)0.5420.7330.322

UNO 在多主体上同样拿到最高 DINO / CLIP-I,CLIP-T 有竞争力。

消融(核心结论)

  • 合成数据 vs 裁剪图(多主体基准,Table 3):用 OVD 裁剪图替代生成 I_ref^2 → DINO 0.542→0.529、CLIP-I 0.733→0.730,并出现严重 copy-paste(图上几乎不响应文本)。
  • 去掉渐进跨模态对齐(Table 3):DINO 掉到 0.511、CLIP-I 0.721。
  • 去掉 UnoPE(直接克隆目标图位置索引,Table 3):DINO 暴跌到 0.386、CLIP-I 0.674——生成图能跟文本但几乎不参考输入图,是掉点最猛的一项。
  • 位置偏移形式对比(Table 5/6,DreamBench / 多主体):w/o offset(DINO 0.470 / 0.386)、w/ width-offset、w/ height-offset 均不如 UNO 的对角线偏移(DINO 0.730 / 0.542),验证对角线 UnoPE 最优。
  • 渐进对齐抬升单图上限(Table 4):single-only DINO 0.730 → +cross-modal alignment 0.760。
  • LoRA rank(附录 Fig.18):rank 4→512 持续涨点,128 后趋缓,最终选 512。
  • 用户研究:30 名评估者对 300 组(单+多主体)按文本一致性(主体/背景)、主体相似度、构图、视觉吸引力五维排名,UNO 在主体相似度与文本一致性领先,其余维度亦强(雷达图 Fig.8)。

创新点与影响

核心贡献

  1. 模型-数据协同进化范式:用弱前代模型系统性合成高质量定制数据去训更强后代模型,破解 subject-driven 的数据瓶颈,可持续放大可控性。
  2. 高一致性 in-context 合成数据流水线:diptych 模板 + FLUX in-context 直出三种高分辨率配对图;单主体→多主体渐进合成;DINOv2 粗滤 + VLM 三轮 CoT 细滤;并开源 UNO-1M(~1M 对)。
  3. UNO 架构:对 DiT 最小改动(LoRA rank 512)即统一单/多主体;渐进式跨模态对齐两阶段训练 + UnoPE 对角线位置偏移有效缓解多主体属性混淆。

影响

  • 训练/推理/权重/数据/合成流水线全开源(代码 Apache 2.0、权重 CC BY-NC 4.0),ICCV 2025 接收(2025.06.26 官宣),成为 2025 年被广泛复现/二次开发的开源 subject-driven 基线(README 列出 5 个社区 ComfyUI 节点实现)。
  • 衍生出一系列后续工作:RealCustom(伴随项目)、USO(任意主体 × 任意风格)、UMO(一对多身份 × 任意主体组合,号称更强 UNO/OmniGen2)。
  • 「DiT 自身即 image encoder + 拼 latent 做 in-context 条件 + RoPE 位置偏移防 copy-paste」成为后续多参考图定制的通用范式参考。

已知局限(作者自述)

  • 训练数据以 subject-driven 为主,编辑(editing)与风格化(stylization)配对数据有限,泛化受合成数据类型约束;
  • 论文 N=2,多于 2 主体主要靠数据随机性带来的泛化;
  • 因 FLUX 基座,虚拟试穿/身份保持/风格化等能力多为零样本「涌现」,非专门训练,仍有提升空间。

原始链接

一手源存档(sources/)