Paper Deep Reading · ICLR 2025 Poster

CatVTON:
Concatenation Is All You Need

把人物与服装放进同一张空间画布,让原有 UNet 的 self-attention 直接建立跨区域对应关系。CatVTON 用 49.57M 个可训练参数完成虚拟试穿,并把 ReferenceNet、额外图像编码器、文本编码器与文本 cross-attention 从核心网络中移除。

Zheng Chong et al.arXiv:2407.15886v2ICLR 2025 Poster16 页(正文 13 页 + 附录 3 页)9 位作者 · Xiaodan Liang 通讯作者
01 · Research thesis

核心变量是“如何让两张图相互看见”

主流 diffusion VTON 常用 ReferenceNet 复制一套 UNet 提取服装特征,再经 attention 注入人物分支。CatVTON 的假设是:共享 VAE 和共享 UNet 已经提供共同特征空间,只需把人物与服装在空间维度拼成一幅联合画布,self-attention 就能承担远距离交互。

899.06M
VAE + 简化 UNet 的总参数
49.57M
只训练 self-attention,约占骨干 5.51%
73K
三数据集多任务训练的约数

Research gap

ReferenceNet 与 CLIP、DINOv2 图像编码器增加参数、显存和推理时间;服装细节保存又未必受益于为分类或语义对齐训练的压缩表示。论文寻找一种保持像素级条件、又复用预训练扩散先验的路径。

证据边界

论文验证了 VITON-HD、DressCode、DeepFashion 衣服迁移和若干 in-the-wild 样例。它没有给出人体身份、服装 logo 字符级正确率、跨种族公平性或真实电商用户研究。

CatVTON 原论文 Figure 1,服装到人物、人物到人物与野外场景试穿示例
Figure 1(原论文):覆盖上装、下装、连衣裙、连体衣、穿着者参考与复杂背景。它展示能力范围,不能替代受控定量评测。
02 · Problem formulation

输入、mask 与联合潜变量

输入与输出

目标人物图像为 \(I_p\in\mathbb{R}^{3\times H\times W}\),服装参考为 \(I_g\in\mathbb{R}^{3\times H\times W}\)。mask-based 模型还接收衣服无关二值 mask \(M\in\mathbb{R}^{H\times W}\)。输出 \(\widetilde I_p\) 保留人物身份、姿态和背景,同时把参考服装映射到指定区域。

mask 语义

论文公式用 \(I_p\otimes M\) 表示输入人物图。官方代码的白色 mask 表示需要重绘的区域,并计算 masked_image = image * (mask < 0.5)。因此代码中的 mask 与论文公式里的保留掩码采用互补约定,阅读公式时必须先确认 \(M\) 的取值语义。

人物条件图

\[ I_i= \begin{cases} I_p, & \text{mask-free},\\ I_p\otimes M, & \text{mask-based}. \end{cases} \]

mask-free 路径保留原始人物图,让模型自行判断服装区域;mask-based 路径显式遮掉待替换区域。Hadamard 乘积 \(\otimes\) 逐像素应用 mask。

空间拼接

\[ X_i=\mathcal{E}(I_i\mathbin{\Vert_s} I_g), \qquad X_i\in\mathbb{R}^{4\times H/8\times W/4}. \]

论文把 \(\Vert_s\) 定义为空间拼接,并在尺寸公式中采用宽度方向:两张 \(H\times W\) 图形成 \(H\times 2W\),VAE 下采样八倍后得到 \(4\times H/8\times W/4\)。共享 VAE 一次编码联合画布,使人物 token 与服装 token 进入同一潜空间。

论文与发布代码的方向差异。 论文公式和最终的按宽度分割采用 x 轴拼接;官方 mask-based UNet pipeline 设置 concat_dim = -2,沿高度方向得到 \(4\times H/4\times W/8\)。mask-free pipeline 使用 concat_dim = -1。附录报告 x/y 轴训练都能正常生成,且 x 轴训练模型可在推理时改用 y 轴。
03 · Architecture

九通道 inpainting 输入,跨半图 self-attention

CatVTON 原论文 Figure 3 架构图
Figure 3(原论文):VAE 编解码、简化 denoising UNet、空间拼接、通道拼接、10% 条件 dropout,以及冻结与训练模块。
01 · 预处理裁剪人物,等比例填充服装;mask-based 形成衣服无关人物图。
02 · VAE人物与服装经同一编码器进入四通道 latent。
03 · 空间拼接两块 latent 沿 x 或 y 轴组成联合画布。
04 · 通道拼接噪声、mask 和条件 latent 组合成 UNet 输入。
05 · 去噪self-attention 在人物与服装位置之间建立全局联系。
06 · 分割解码取人物半幅 latent,经 VAE decoder 得到试穿结果。

mask-based 张量

以宽度拼接记号说明:噪声 \(z_t\in\mathbb{R}^{4\times H/8\times W/4}\),拼接 mask \(M_i\in\mathbb{R}^{1\times H/8\times W/4}\),条件 \(X_i\in\mathbb{R}^{4\times H/8\times W/4}\)。沿 channel 拼接得到 9 通道,匹配 Stable Diffusion v1.5 inpainting UNet。

\[ u_t=z_t\mathbin{\Vert_c}M_i\mathbin{\Vert_c}X_i \in\mathbb{R}^{9\times H/8\times W/4}. \]

mask-free 张量

InstructPix2Pix 版本将四通道噪声与四通道联合条件沿 channel 拼接,形成 8 通道输入。它不提供显式 mask;模型从原人物与服装的联合条件中学习重绘范围。

\[ u_t=z_t\mathbin{\Vert_c}X_i \in\mathbb{R}^{8\times H/8\times W/4}. \]

注意力为何可以“跨半图搬运”

\[ Q=HW_Q,\qquad K=HW_K,\qquad V=HW_V, \] \[ \operatorname{Attn}(H)=\operatorname{softmax}\!\left(\frac{QK^{\mathsf T}}{\sqrt{d_k}}\right)V. \]

UNet transformer block 把二维特征展平成 token 序列。联合画布中的人物 token 可以对服装半幅的 key 分配高权重,再从对应 value 聚合纹理、轮廓和颜色信息。卷积 ResNet 主要提供局部建模;self-attention 提供整张联合画布的长距离交互。论文据此只训练 attn1 self-attention。

删除的组件

文本编码器完全移除;原 UNet 的 attn2 cross-attention processor 被替换为直接返回 hidden states 的 SkipAttnProcessor。CLIP/DINO 图像编码器和 ReferenceNet 均不加入核心网络,合计减少 167.02M 文本相关参数,并避免复制 UNet。

冻结的组件

VAE、UNet ResNet block、FFN、归一化层和 cross-attention 路径保持冻结或被跳过。发布 checkpoint 只加载名为 attention 的模块集合;官方工具按模块名包含 attn1 选择 self-attention。

04 · Training

只优化 self-attention 的噪声预测

标准 latent diffusion 目标

\[ \mathcal{L}_{\mathrm{LDM}} =\mathbb{E}_{\mathcal{E}(x),\,\epsilon\sim\mathcal{N}(0,I),\,t} \left[\left\|\epsilon-\epsilon_{\theta}(z_t,t)\right\|_2^2\right]. \]

\(z_t\) 是由干净 latent \(z_0\) 在时间步 \(t\) 加入 Gaussian noise 后的样本;\(\epsilon_{\theta}\) 预测已加入的噪声。CatVTON 对 mask-based 和 mask-free 模型都声明使用 MSE。论文没有明确说明 MSE 是否覆盖联合 latent 的两半,也没有发布训练代码,因此“只监督人物半幅”或“监督完整联合画布”都无法从一手材料确认。

DREAM 修正

\[ \widehat z_t=\sqrt{\overline\alpha_t}z_0+ \sqrt{1-\overline\alpha_t}\left(\epsilon+\lambda\epsilon_{\theta}\right), \qquad \overline\alpha_t=\prod_{i=1}^{t}(1-\beta_i), \]
\[ \mathcal{L}_{\mathrm{DREAM}}= \mathbb{E}\!\left[ \left\|\left(\epsilon+\lambda\epsilon_{\theta}\right)- \epsilon_{\theta}(\widehat z_t,t)\right\|_2^2 \right]. \]

DREAM 先额外前向一次得到噪声估计,再把估计误差注入训练样本。论文用 \(\lambda=10\),目标是在较少训练步内补偿高频细节;额外前向会降低单步训练速度。

单数据集定量模型

  • Base:Stable Diffusion v1.5 inpainting(mask-based)与 InstructPix2Pix(mask-free)
  • 分辨率:\(512\times384\)
  • 步数:16,000
  • 全局 batch size:128
  • 优化器:AdamW
  • 学习率:常数 \(10^{-5}\)
  • DREAM:\(\lambda=10\)

三数据集多任务模型

  • 训练数据:约 73K image pairs
  • 分辨率:\(1024\times768\)
  • 步数:48,000
  • 全局 batch size:32
  • 其余设置与单数据集模型相同
  • 硬件:8×NVIDIA A800 80GB
  • 16K steps 约 10 小时;PyTorch 2.1.2 + Diffusers

公开信息缺口

论文未报告 AdamW 的 \(\beta_1,\beta_2\)、weight decay、warmup、gradient clipping、precision、gradient accumulation、数据增强、noise scheduler 训练配置与 checkpoint 选择准则。复现时需要自行决定这些项,并把它们与论文报告结果区分。

10% 条件 dropout

训练时有 10% 概率丢弃服装条件,建立无条件分支;推理时通过 CFG 组合无条件和有条件噪声预测。这里的“条件”是服装 latent,系统没有文本 prompt。

数据集划分与配对构造

VITON-HD 包含 13,679 对上装人物与商品图,其中训练 11,647 对、测试 2,032 对。DressCode 训练 48,392 对、测试 5,400 对,覆盖上装、下装和连衣裙。DeepFashion in-shop retrieval 原始集合含 52,712 张高分辨率人物图;论文筛选其中 13,098 对用于训练、1,896 对用于测试衣服迁移。三集合训练对合计 73,137,对应论文约 73K 的描述。DressCode 与 DeepFashion 的衣服无关 mask 使用 DensePose,以及 LIP/ATR 两种 SCHP human parsing;mask-free 训练另通过 mask-based 模型生成伪配对。出处:正文 §4.1、附录 A.2。

CatVTON 原论文 Figure 4 mask-free 伪数据训练流程
Figure 4(原论文):mask-based 模型先对随机同类别人物-服装组合生成伪人物,再以“生成的人物 + 原人物 + 服装”构造 mask-free 配对。mask 使用 ATR、LIP 与 DensePose 交叉验证,并通过 convex hull 与 pooling 降低区域外信息泄漏。
05 · Inference

条件在每个时间步重复注入

mask 与去噪递推

\[ M_i=\operatorname{Interpolate}(M\mathbin{\Vert_s}O), \]
\[ z_{t-1}= \begin{cases} \operatorname{UNet}(z_t\mathbin{\Vert_c}X_i), & \text{mask-free},\\ \operatorname{UNet}(z_t\mathbin{\Vert_c}M_i\mathbin{\Vert_c}X_i), & \text{mask-based}. \end{cases} \]

\(O\) 是与人物 mask 同尺寸的全零服装半幅 mask。随机噪声 \(z_T\sim\mathcal{N}(0,I)\) 与联合条件同形状;每个 DDIM 时间步都重新沿 channel 拼接 mask 与条件 latent。

CFG 与最终分割

\[ \widehat\epsilon_t=\epsilon_{\mathrm{uncond}}+ s\left(\epsilon_{\mathrm{cond}}-\epsilon_{\mathrm{uncond}}\right), \qquad s=2.5, \]
\[ z_0^p=\operatorname{Split}_{\mathrm{person}}(z_0), \qquad \widetilde I_p=\mathcal{D}(z_0^p). \]

论文的 CFG 消融选择 \(s=2.5\)。官方 UNet pipeline 默认 DDIM 50 steps、\(\eta=1.0\)、1024×768;评测脚本默认 512×384、seed 555。生成完联合 latent 后,仅保留人物半幅并通过 VAE decoder 解码。

mask-based 所需输入

核心模型需要人物、服装和二值 mask。论文把 mask 视为输入;官方 Gradio 为便利性额外运行 DensePose 与两套 SCHP 自动生成 mask。这项预处理属于应用封装,核心网络仍可直接使用用户 mask。

mask-free 所需输入

只需人物与服装;其代价是先用 mask-based 模型构造伪配对训练数据。结果表显示 mask-free 在 DressCode paired SSIM 与 LPIPS 更好,在多数分布指标上 mask-based 更好。

论文将整个去噪递推简写为 UNet 输出下一步 latent。实际发布代码由 UNet 预测噪声,再调用 DDIMScheduler.step 计算下一步 latent;时间步与 CFG 的作用应沿该调度器流程理解。

06 · Experiments

完整主表:两个数据集、成对与非成对设置

Paired 同时比较生成图与对应真值,使用 SSIM、FID、KID、LPIPS;Unpaired 没有逐图真值,只用 FID 与 KID 比较分布。SSIM 越高越好,其余指标越低越好。

方法VITON-HDDressCode
PairedUnpairedPairedUnpaired
SSIM ↑FID ↓KID ↓LPIPS ↓FID ↓KID ↓SSIM ↑FID ↓KID ↓LPIPS ↓FID ↓KID ↓
DCI-VTON0.86209.4084.5470.060612.5315.251——————
StableVTON0.85436.4390.9420.090511.0543.914——————
StableGarment0.802915.5678.5190.104217.1158.851——————
MV-VTON0.808315.4427.5010.117117.9008.861——————
GP-VTON0.87018.7263.9440.058511.8444.3100.77119.9274.6100.180112.7916.627
LaDI-VTON0.860311.3867.2480.073314.6488.7540.76569.5554.6830.236610.6765.787
IDM-VTON0.84995.7620.7320.06039.8421.1230.87976.8212.9240.05639.5464.320
OOTDiffusion0.81879.3054.0860.087612.4084.6890.88544.6100.9550.053312.5676.627
CatVTON (Mask-Free)0.87015.8880.5130.06139.2871.1680.90164.7791.2970.04527.4002.619
CatVTON (Inpainting)0.87045.4250.4110.05659.0151.0910.89223.9920.8180.04556.1371.403

Table 1(原论文全部方法行与指标列;横向滚动查看完整 12 个指标)。粗体绿色为原表最优,下划线为原表第二名。

结果怎样读。 VITON-HD 的 inpainting 版本在全部六项指标最优;DressCode 的 mask-free 版本在 paired SSIM 0.9016 与 LPIPS 0.0452 领先,inpainting 版本在其余四项领先。作者“全部指标优于其他方法”的表述对外部 baseline 成立,但两种自家版本之间存在任务偏好差异。
CatVTON 原论文 Figure 5 定性基线对比
Figure 5(原论文):VITON-HD 与 DressCode 的纹理、文字、长度和遮挡对比。论文强调 CatVTON 对复杂图案与文本的保存;该图仍属于作者筛选的定性样例。

计算与显存

方法GFLOPs推理时间(秒)显存
\(E_{text}\)\(E_{image}\)ReferenceNetUNet512×3841024×768512×3841024×768
OOTDiffusion13.08155.62509.12547.344.7636.236854 M8892 M
IDM-VTON110.04155.621340.151163.9812.9617.3217112 M18916 M
StableVTON—155.62173.80545.2712.1736.109828 M14176 M
CatVTON———973.592.589.253276 M5940 M

Table 2。单张 NVIDIA A100、batch size 1;推理时间取同一输入 10 次平均。GFLOPs 由 calflops 计算。

方法参数(M)显存(G)额外条件
VAEUNet\(UNet_{ref}\)\(E_{text}\)\(E_{image}\)TotalTrainablePoseText
OOTDiffusion83.61859.53859.5285.06303.702191.421719.0510.20—✓
IDM-VTON83.612567.392567.39716.38303.706238.472871.0926.04✓✓
StableVTON83.61859.41361.25—303.701607.97500.737.87✓—
StableGarment83.61859.531220.7785.06—2248.971253.4911.60✓✓
MV-VTON83.61859.53361.25—316.321620.71884.667.92✓—
CatVTON83.61815.45———899.0649.574.00——

Table 3。论文据此得到总参数约减少 44%、可训练参数相对其他 diffusion baseline 减少 10 倍以上的结论。

关键消融:训练组件

训练模块PairedUnpaired参数(M)IPS ↑训练显存(M)
SSIM ↑FID ↓KID ↓LPIPS ↓FID ↓KID ↓
UNet0.86925.24960.40170.05508.81310.9559815.453.2114289
Transformers0.85585.44960.44340.05588.84231.0082267.244.109981
Self Attention + Text0.85176.57441.06900.07729.69981.668349.574.508805
Self Attention0.87045.42520.41120.05659.01511.091449.574.758451

全 UNet 在五个感知或分布指标略优;self-attention 在 SSIM、速度、训练显存和参数量占优。添加文本条件令全部六项质量指标下降。这个表支持“self-attention 是高效适配点”,尚不足以证明其他层与 VTON 无关。

DREAM \(\lambda\) 消融

\(\lambda\)PairedUnpaired
SSIM ↑FID ↓KID ↓LPIPS ↓FID ↓KID ↓
00.874010.45343.88660.069214.10455.2824
10.87168.09832.19770.064611.76523.2942
100.87045.42520.41120.05659.01511.0914
200.86335.58610.40050.06209.08771.0416
\(\infty\)(关闭 DREAM)0.86145.55610.36570.06318.91141.0049

\(\lambda=10\) 在 paired FID 与 LPIPS 最优;关闭 DREAM 在 KID 与 unpaired FID/KID 更好;\(\lambda=0\) 的 SSIM 最高。论文选择 10 是自然度与细节的经验折中,表格没有给出单一设置统治全部指标的证据。

CatVTON 原论文 Figure 7 DREAM 与 CFG 可视化消融
Figure 7(原论文):DREAM \(\lambda\) 与 CFG strength。CFG 从 0 提高到 2.5–3.5 时细节增强;超过 3.5 后出现颜色偏移与高频噪声。其余实验统一使用 2.5。

DiT 可迁移性

方法SSIM ↑FID ↓KID ↓LPIPS ↓Unpaired FID ↓Unpaired KID ↓
StableGarment0.802915.5678.5190.104217.1158.851
MV-VTON0.808315.4427.5010.117117.9008.861
LaDI-VTON0.860311.3867.2480.073314.6488.754
DCI-VTON0.86209.4084.5470.060612.5315.251
OOTDiffusion0.81879.3054.0860.087612.4084.689
GP-VTON0.87018.7263.9440.058511.8444.310
StableVITON0.85436.4390.9420.090511.0543.914
CatVTON (HunyuanDiT)0.91185.7860.9390.039310.0191.864

附录 Table 6 在 VITON-HD 上验证空间拼接可以迁移到 HunyuanDiT。作者说明 DiT 收敛更慢且尚未充分拟合;表中也没有与 UNet CatVTON 的同设定直接对照,因此它属于可迁移性证据,不能据此断言 DiT 更优。

CatVTON 原论文 Figure 6 野外场景结果
Figure 6(原论文):in-the-wild 结果及与 IDM-VTON、OOTDiffusion、OutfitAnyone 的对比。OutfitAnyone 只能在其提供人物上推理,比较条件并不完全一致。
07 · Paper vs. implementation

发布代码可以复现推理,训练过程仍有关键缺口

已核实的 UNet 路径

  • DDIMScheduler 从 base checkpoint 读取
  • VAE 使用 stabilityai/sd-vae-ft-mse
  • cross-attention processor 直接跳过
  • self-attention processor 保持标准 PyTorch scaled dot-product attention
  • 发布权重目录仅加载 attention
  • 联合 noise 每步生成完整两半,最终只解码人物半幅

应用层额外处理

Gradio 自动 mask 使用 DensePose 与 SCHP,随后对 mask 做 blur;评测脚本支持 repaint,把生成结果按高斯模糊 mask 与原人物重新混合。这些步骤会影响最终边界观感,论文表格是否使用 repaint 需要结合命令参数复现记录。

训练代码状态

官方仓库发布了推理、评测、自动 mask 与 checkpoint,没有发布论文 UNet 版本的训练代码。MSE 的空间监督范围、数据采样比例、DREAM 的具体实现、optimizer 其余参数都无法从仓库核实。

CatVTON-FLUX 的地位

仓库在 2024 年 12 月加入 FLUX.1-Fill-dev 的 37.4M LoRA 试验版。它移除 FLUX joint transformer 中的文本分支,使用图像 token 与单分支 attention;这套代码是论文之后的工程扩展,ICLR 主实验、表格和 49.57M 参数结论都对应 Stable Diffusion UNet 版本。

最关键的可复现性限制。 论文给出训练超参数与损失族,却没有提供训练脚本,也没有明确 MSE 是否覆盖人物与服装两半的完整联合 latent。该问题会直接改变服装半幅在去噪期间受到的监督,应在复现报告中单独记录。
08 · Evidence map

事实、作者解释与研究推断

Paper verified只训练 self-attention 的模型在 VITON-HD 上达到 SSIM 0.8704、paired FID 5.4252,使用 49.57M 可训练参数;Table 4 同时报告速度和显存优势。
Author claimself-attention 是试穿任务中最关键的模块。消融支持它是高效的适配位置,但缺少“只冻结 self-attention”与逐层替换实验,因果范围仍有限。
Our interpretation空间拼接把“参考特征注入”转化成同一序列内的信息路由。它特别适合一对一人物-服装映射;多件服装、分层穿搭或局部材质铺贴需要额外身份标记、区域 token 或层级约束,避免 attention 在多个参考区域之间混淆。
Research extension可以在联合画布中加入多区域 segment embedding、garment instance ID 与遮挡顺序;训练时用对应关系监督 attention map,并在推理时用 garment-region consistency reward 选择候选。该设想尚未由本文验证。
09 · Reviewer commentary

简洁结构很强,证据链仍可继续加固

Strengths

  • 用空间拼接统一人物与服装表示,结构清楚,移除了多套重复编码网络。
  • 训练模块消融同时报告质量、参数、IPS 与显存,效率主张有直接证据。
  • 主表覆盖两数据集、paired 与 unpaired 设置,baseline 范围较完整。
  • 附录公开 mask-free 伪数据、硬件软件环境、x/y 拼接与 DiT 迁移。

Weaknesses

  • 训练代码与若干关键 optimizer、监督范围未公开,完整复现受限。
  • 自动 mask 与论文“无需预处理”的表达容易混淆;mask-based 核心模型仍依赖 mask 质量。
  • 定量指标对 logo 字符、细密重复纹理与服装身份的测量不足。
  • 野外对比含不同可用输入限制,公平性有限。
  • 未报告多件服装组合、极端遮挡、手部交互和长期稳定性。

Potential improvements

下一步实验应公开完整训练脚本与 seed,明确联合 latent 的监督区域;在统一自动 mask、相同分辨率与相同 sampling steps 下重跑全部 baseline;加入 OCR accuracy、局部 patch LPIPS、DINO/CLIP garment retrieval、颜色差 \(\Delta E\) 与人工偏好;针对多件服装建立显式实例 token 和遮挡图,并用 attention 可视化验证跨半图对应是否真的承担纹理传递。

论文自身承认的限制。 512×384 下 VAE 解码可能损失细节并产生色差;错误 mask 会明显破坏结果;Stable Diffusion v1.5 的大规模预训练数据包含 NSFW 内容,保留大部分原权重会继承其偏差与安全风险。
10 · Primary sources

一手来源

  1. arXiv 2407.15886v2:论文 HTML、PDF 与 2025-02-16 版本信息。
  2. OpenReview · ICLR 2025 Poster:正式会议状态、作者顺序与通讯作者标记。
  3. 官方 GitHub 仓库:UNet 推理、评测、自动 mask、FLUX 扩展、checkpoint 说明与更新记录。
  4. 官方 Hugging Face checkpoints:mix、VITON-HD、DressCode attention 权重与 FLUX LoRA。

网页依据 ICLR 2025 / arXiv v2 的 9 位作者列表整理。官方仓库 README 底部旧 BibTeX 曾遗漏 Dongmei Jiang,身份信息以论文 PDF 与 OpenReview 为准。