← 返回 2026-04-10

FIT:面向合身感知虚拟试穿的大规模数据集与基准 FIT: A Large-Scale Dataset for Fit-Aware Virtual Try-On

Johanna Karras, Yuanhao Wang, Yingwei Li, Ira Kemelmacher-Shlizerman 📅 2026-04-09 👍 22 2026-07-13 08:36
3D服装仿真 LoRA微调 合成数据 尺寸感知 扩散模型 数据集 虚拟试穿

用1.13M合成试穿三元组与精确尺寸标签,首次教会VTO模型“衣服合不合身”。

前置知识

虚拟试穿 (Virtual Try-On, VTO)

给定一张人物图和一张服装图(通常为摊平商品图),VTO 任务要求生成该人物穿着目标服装的逼真图像,同时保留人物身份、姿态和背景。代表方法如 VITON、IDM-VTON、CatVTON、Any2AnyTryOn 等多采用扩散模型,在固定掩码下做局部 inpainting 或全图生成。

本文核心就是 VTO 的扩展:除了把衣服穿上去以外,还要让生成结果严格遵循人/衣两套测量数据,从而控制穿上之后松紧对不对。理解传统 VTO 默认只能产出合身图像,是读懂本文 motivation 的前提。

扩散模型与流匹配 (Diffusion & Flow Matching)

扩散模型通过在数据与高斯噪声间学习去噪过程生成样本;流匹配沿 $x_t=(1-t)x_0+tx_1$ 显式学习速度场 $v_\theta$。Fit-VTO 基于 rectified flow 模型 Flux.1-dev(12B 参数)。

Fit-VTO 沿用 Flux.1-dev 的整流流(rectified flow)采样与 12B 参数 MMDiT 骨干,并把 T5/CLIP 文本条件替换为自建的测量 embedding,没有扩散/flow matching 基础就无法读懂训练目标 $\hat v_t = x_\theta(z_t, t, I_p, I_g, m_p, m_g)$ 与推理 50 步的设置。

GarmentCode 与 3D 服装物理仿真

GarmentCode 是一种领域特定语言,允许以参数化方式定义服装版型(缝纫图样、领口、袖长等),并通过 Warp 物理引擎把 2D 板片披挂在 3D 人体上,模拟真实褶皱、拉伸与覆盖。本文用其批量生成 168 种体型、158K 款上衣。

本文最关键的差异化在于用 3D 物理仿真 + 合成数据绕开真实数据收集的瓶颈。理解 GarmentCode 的板片如何参数化控制尺寸、以及为什么必须做 cross-draping + box-mesh realignment 才能让 2XL 衣服穿到 XS 人身上,是读懂方法部分第 3.2 节的前提。

法线图 (Normal Map) 与几何保持的图像翻译

法线图是把每个像素表面法向量的 $(n_x, n_y, n_z)$ 编码为 RGB 颜色的图像,可视为一种轻量 3D 表示。在 sim-to-real 重纹理化中,把合成渲染的 normal 作为条件喂给扩散模型,能在保持 3D 几何不变的前提下改变纹理/外观,是连接合成与真实域的常用几何桥梁。

Fit 论文的重纹理化模型 $f_\text{texture}$ 与配对人物生成模型 $f_\text{paired}$ 都以法线图为条件($\hat I_\text{try-on} = f_\text{texture}(I_n, p)$),并通过 normal 模糊做域对齐训练;不理解法线图的语义,就读不懂为什么它能在改纹理的同时保留合身度。

LoRA (Low-Rank Adaptation) 与参数高效微调

LoRA 通过在原权重旁并联低秩矩阵 $W'=W+BA$($r\ll d$)显著降低可训练参数量。本文用 LoRA 同时微调两个模型:纹理化模型 rank=64、Fit-VTO rank=128,测量头用零初始化保证早期稳定。

理解 LoRA 是看懂如何在 12B 参数模型上做两次独立微调而不互相灾难性遗忘的关键:Fit-VTO 走 rank=128,纹理化模型走 rank=64,并配合 Prodigy 自适应优化器与零初始化测量头,是论文实现细节中工程上较精巧的部分。

研究动机

虚拟试穿(VTO)近年来在纹理迁移和姿态保持上已非常成熟,IDM-VTON、CatVTON、Any2AnyTryOn 等扩散方法几乎能以假乱真地把摊平服装贴到人物身上。然而,这些方法普遍存在一个被忽视的根本问题:它们默认输出合身结果,根本无法回答用户最关心的问题——这件衣服穿在我身上到底有多紧/多松?造成这一缺陷的核心原因是数据:现有 VTO 数据集(VITON/VITON-HD、DressCode、StreetTryOn、LAION-Garment 等)几乎全部来自电商目录图,本身只包含合身样本;SIZER、SV-VTO、Fit4Men 等少量尺寸相关数据集规模太小(1K–13K 张),且缺少精确的厘米级测量;3D 服装数据集(DeepFashion3D、Sewformer、GarmentCode 原始数据)虽然有真实几何,却又缺乏真实纹理与配对人物图,泛化困难。更糟的是,VTO 研究长期缺少同一个人穿不同衣服的真值对,只能用 VLM/VTO 蒸馏生成伪三元组来监督训练,但伪三元组本身存在蒙版不准、身份漂移和尺寸泄漏等系统性错误,导致模型继承了教师模型的伪影。

本文的目标是本文的目标是首次系统性地填补合身感知 VTO 在数据与模型两端的双重空白。具体包含三项产出:(1) 构建 FIT 数据集——1,137,282 个训练样本 + 1,000 个测试样本,覆盖 168 种体型(82 男 / 86 女,XS-3XL)、528 种姿态、158,483 款上衣设计,每条样本同时提供试穿图 $I_\text{try-on}$、配对人物图 $I_p$、摊平服装图 $I_g$、人物测量 $m_p$ 和服装测量 $m_g$ 五种模态,并显式覆盖严重不合身场景(如 3XL 服装披在 XS 人物上)。(2) 设计可扩展的合成数据生成管线,借助 GarmentCode 物理仿真与基于 Flux.1-dev 的重纹理化模型,把卡通 3D 渲染变成照片级图像,同时精确保留合身度。(3) 训练 Fit-VTO 基线模型,把精确的厘米级测量作为条件直接注入扩散过程,验证用测量代替文字描述能够学到真正可控的合身度。

与已有工作不同的是,本文切入角度与既有工作有三处本质不同。其一,把数据来源从爬电商图或艺术家手工建模换成 3D 物理仿真 + sim-to-real 重纹理化,因此首次能批量生成真实不存在但物理合理的不合身样本,且能程序化提取精确测量;这是 GarmentCode 原始数据集(卡通 3D、缺纹理)和 2D VTO 数据集(缺测量、缺不合身)都没做到的。其二,提出同姿态同人物换衣的真值配对人物图生成框架 $f_\text{paired}$,用身份图 $I_\text{id}=I_\text{try-on}\odot(\neg m_g\cap\neg m'_g)$ 联合 normal map 作为条件,把伪三元组问题变成有 3D grounding 的真值三元组,从而把 masked L1 距离从 VLM-based 4.45 压到 1.61。第三,把测量从粗标签(如宽松/紧致)或启发式几何(如 landmark 变换、body-to-cloth 比例)升级为 Fourier-feature 化的厘米级数值 embedding,从根本上避免了文字条件对数值信息建模不充分的问题。

核心方法

FIT 思路是物理仿真造数据 + 测量嵌入训模型。数据侧用 GarmentCode 生成 2D 缝纫图样与厘米级 $m_g$,cross-drape 到不同尺寸人体($m_p$)上,通过 box-mesh realignment 让 Warp 披挂出从过紧到过松的合身度,渲染 $I_s$。基于 Flux.1-dev 的 $f_\text{texture}$ 以合成 normal + VLM prompt 把 $I_s$ 变照片级 $I_\text{try-on}$,VLM 反向生成摊平服装 $I_g$。为解决同人物换衣,作者训练 $f_\text{paired}$:以 $\neg m_g\cap\neg m'_g$ 得身份图、另一件 normal 与 prompt 为条件 inpaint 出 $I_p$。Fit-VTO 以 MMDiT 为骨干 + LoRA 微调,服装与人物 latents 沿 channel 拼接,测量 $m\in\mathbb{R}^7$ 经 8 阶 Fourier feature + MLP 取代 T5/CLIP 文本条件,输出预测 $\hat v_t$。

本文的核心创新可以归纳为三点。第一,把 3D 物理仿真 + sim-to-real 重纹理化做成端到端可扩展的合成数据工厂,首次让严重不合身这种真实世界几乎拍不到的样本成为可批量生产的监督信号;这与 SIZER、SV-VTO 等小规模真实数据收集路线在规模(1.13M vs 1.5K–13K)和标注精度(精确厘米 vs 粗略标签)上形成数量级差距。第二,放弃用文字或粗几何描述合身度的旧范式,提出 Fourier-feature + MLP 的测量编码器 $E_m$,把 7 维连续测量 $m\in\mathbb{R}^7$ 升到 16 维、再投影到 MMDiT 隐藏维 3072,绕过 T5/CLIP 对数值建模的固有不擅长。第三,借助 procedural controllability 同时做衣服到真人和真人到另一件衣服两种 3D-grounded 配对生成:把 3D 渲染的 normal map 和同时蒙版两件衣服的身份图作为条件,让 $f_\text{paired}$ 既能保留身份又能严格保持 3D 一致性,从而把原本必须用伪三元组训练的 VTO 模型第一次放到了真值监督上。

方法步骤详情

训练生成分六步。第一步 GarmentCode 采样:采 1 件 T 生成图样与 mg,从 168 个 parametric body 选 A、B 得 mp。第二步 cross-draping:把 A 板片做 box-mesh realignment 贴到 B,用 Warp 分两步仿真下装与上衣。第三步 normal:渲染 Is,normal 估计器得 In,把 Nano Banana Pro 增强的头/脚 normal 缝合。第四步 f_texture 重纹理化:Flux.1-dev + LoRA (rank=64),5 万张真人图 + Prodigy 训练(lr=1.0, batch=64, 5k 步, 8×H200, ~1 天),输入 (In, p) 输出 I_try-on。第五步配对:I_id = I_try-on ⊙ (¬mg ∩ ¬m'g),f_paired 输出 Ip。第六步 Fit-VTO 训练:64×TPU-v5 + 2M 步 + batch=64 + lr=1e-4,混合 FIT 与 330,559 张无测量图。

技术新颖性

技术新颖性有五点。其一,3D 仿真 → normal → 扩散重纹理化是首次把 sim-to-real 范式完整落到 VTO 合成数据上;Sewformer 改善 GarmentCode 仍偏卡通,本文用 12B 参数基础模型把纹理与褶皱提升到照片级。其二,normal map 作为几何桥让 $f_\text{texture}$ 改外观时精确保留合身度——这是 IoU 从 COTTON 0.739、IDM-VTON 0.789 跳到 0.955 的根本原因。其三,cross-draping + box-mesh realignment 扩展 GarmentCode 到 XS-vs-3XL 极端披挂。其四,测量嵌入用 8 阶 Fourier feature + MLP + 零初始化头:Fourier 把周期性数值映射到高维易被 Transformer 学到,零初始化保证不破坏 LoRA 稳定性。其五,$f_\text{paired}$ 用双重蒙版是少见设计,使 $L_\text{id}$ 以 1.61 大幅领先 VLM 4.45、VTO 2.29、Inpainting 3.91。

FIT dataset generation
Fig. 2: FIT dataset generation
Fit-VTO architecture
Fig. 3: Fit-VTO architecture

实验结果

Fit-VTO 在 VITON-HD 取得 SSIM 0.817、FID 11.391、LPIPS 0.102、KID 0.651,略低于 IDM-VTON(SSIM 0.849);VITON-HD 微调变体 Ours_ft_vitonhd 可追平(SSIM 0.833、FID 9.320)。FIT 测试集全面领先:SSIM 0.914、FID 10.381、LPIPS 0.050、KID 0.144、IoU 0.955;对比 Any2AnyTryOn(IoU 0.783)、Nano Banana Pro(0.792)、IDM-VTON(0.789)、COTTON(0.739),IoU 提升 16.3–28.8 个百分点,FID 降低 50–65%。配对 L_id=1.61 相对 VLM 4.45 提升 63.8%、VTO 2.29 提升 29.7%、Inpainting 3.91 提升 58.8%。消融:去 FIT 数据 IoU 0.844;文字条件 0.932;只训 FIT 在 VITON-HD 上 SSIM 0.732 但 IoU 0.952。

Comparison of related datasets
Table 1: Comparison of related datasets
Quantitative comparisons
Table 2: Quantitative comparisons
Paired Image Generation Comparison
Fig. 4: Paired Image Generation Comparison
Fit-VTO Qualitative Results
Fig. 5: Fit-VTO Qualitative Results
Qualitative comparison with related works
Fig. 6: Qualitative comparison with related works
Independent garment size controllability
Fig. 7: Independent garment size controllability
查看结构化数据
任务指标本文基线提升
VITON-HD 真实世界试穿(无测量) SSIM↑ / FID↓ / LPIPS↓ / KID↓ 0.817 / 11.391 / 0.102 / 0.651 IDM-VTON 0.849/9.115/0.077/0.471;Nano Banana Pro 0.552/11.344/0.501/0.624;Any2AnyTryOn 0.758/14.186/0.152/2.413;COTTON 0.615/39.117/0.349/11.397 与 IDM-VTON 仍存在 ~3-4% 的 SSIM 差距,但已显著优于 Any2AnyTryOn 和 COTTON;用 VITON-HD 微调后变体 $Ours_\text{ft\_vitonhd}$ 把 SSIM 提到 0.833、FID 9.320,几乎追平 SOTA
FIT 测试集(合身感知试穿) SSIM↑ / FID↓ / LPIPS↓ / KID↓ / IoU↑ 0.914 / 10.381 / 0.050 / 0.144 / 0.955 Any2AnyTryOn 0.819/25.059/0.209/3.939/0.783;Nano Banana Pro 0.785/19.926/0.166/1.676/0.792;IDM-VTON 0.739/31.229/0.246/6.819/0.789;COTTON 0.759/29.716/0.207/6.269/0.739 IoU 提升 16.3–28.8 个百分点,FID 降低 48–67%,LPIPS 降低 70–80%,在尺寸感知 VTO 任务上建立新 SOTA
配对人物图生成(Section 3.4 / 5.3) Masked L1 距离 $L_\text{id}$(非服装区域,值越小越好) 1.61 VLM-based 4.45;VTO-based (CatVTON) 2.29;Inpainting-based (FLUX-Controlnet-Inpainting) 3.91 相对 VLM-based 提升 63.8%、相对 VTO-based 提升 29.7%、相对 Inpainting-based 提升 58.8%
FIT 数据 + 测量编码器消融(FIT 集 IoU) IoU↑ 0.955(完整 Fit-VTO) $Ours_\text{no FIT}$ 0.844;$Ours_\text{text}$ 0.932;$Ours_\text{FIT only}$ 0.952;$Ours_\text{ft\_vitonhd}$ 0.908 去掉 FIT 数据后 IoU 掉 11.6 个百分点;用文字条件代替测量后掉 2.3 个百分点;说明 FIT 数据是基础,测量编码器是关键
真实数据消融(VITON-HD SSIM) SSIM↑ 0.817(含 330,559 张在线时尚图) $Ours_\text{FIT only}$ 0.732;$Ours_\text{no FIT}$ 0.817 真实数据对 VITON-HD 真实域泛化贡献明显(+8.5% SSIM),但 $Ours_\text{no FIT}$ 也能保持 IoU 0.844,提示真实数据更多贡献纹理细节而非合身度

局限与改进

作者在第 6 节明确两点局限。其一,紧的连续性难以刻画:紧身与极紧身在仿真外观上几乎一致(都贴皮),数据集与 Fit-VTO 都不能很好区分不同程度紧身度(Fig. 5 左列反例)。其二,测量之间高度相关,模型难以独立改变单一维度——加宽常伴随长度和袖长也轻微变长,限制精细化控制。我的观察:(1) 范围只覆盖上半身标准化正面姿态 + 休闲姿态,缺双臂交叉、坐姿、运动模糊等长尾;(2) 结构多样性受限于 GarmentCode,多层服装(带帽外套+内搭)不支持;(3) 仿真 normal 与真实 normal 存在系统偏差(合成更光滑),随机 blur 缓解较粗糙;(4) 测试集仅 1,000 个且按分布做了 balanced 采样,可能略高估性能;(5) 训练资源极大(64×TPU-v5 × 2 天 + 8×H200 × 1 天),对中小团队是显著门槛。

独立分析的弱点

独立审视有五处可改进。第一,合身度只在 IoU 这一个 mask 级指标量化,缺少褶皱密度、衣摆堆叠、领口贴合度等细粒度评估;改进方向是引入 fit-aware perceptual distance 或 normal map 上的 MS-SSIM。第二,测量相关性强导致单维度控制困难,XS/S/M/L/XL 从同一参数化人体族采样特征天然耦合;改进方向是 disentangled representation 或训练时 random masking。第三,$f_\text{texture}$ 合成 normal 与真实 normal 存在系统偏差(合成更光滑),random blur 缓解粗糙;改进方向是对抗性 normal 域适配或 dual diffusion。第四,$f_\text{paired}$ 双重蒙版在两件衣服面积相近时遮罩过小;改进方向是 skeleton-conditioned generation。第五,72 类 prompt 远不能覆盖 158K 设计多样性;改进方向是 CLIP-based image retrieval 找相似面料参考图。

未来方向

作者明确提到下一步要把范围扩展到下装、连衣裙以及更多姿态/视角。基于此我认为有四条值得延伸的方向。第一,扩展到多件叠穿(multi-garment composition):让 $f_\text{paired}$ 同时换多件衣服并保持合理层序(如外套必须盖住内搭),这要求把层序也变成可学习 token。第二,把合身度推广到动态场景:在视频试穿中模拟布料随人物运动的形变,这需要把 GarmentCode 的 Warp 物理仿真与时间步融合,潜在方向是 FIT-Video。第三,引入更丰富的人体先验:如 SMPL/SMPL-X 体型参数、关键点、骨骼,让 Fit-VTO 同时支持姿态编辑与合身编辑,把试穿做成一个统一框架。第四,跨模态扩展:测量 embedding 目前只服务上半身 7 维,可以推广到鞋子(尺码、脚长、脚围)、眼镜(瞳距、脸宽)、首饰(指围、颈围)等,构造统一的合身感知试穿范式。第五,与推荐系统结合:基于精确测量预测替代不同尺码的试穿效果,自动给用户推荐显瘦或宽松风格,反向帮助零售业降低退货率。

复现评估

复现评估分四方面。开源:作者承诺公开所有数据与代码(项目页 https://johannakarras.github.io/FIT),论文时间点 2026 年 4 月,可预期数月内放出。依赖:GarmentCode、Flux.1-dev(商用有限制)、FLUX-Controlnet-Inpainting、CatVTON、IDM-VTON 均开源;Nano Banana Pro 是 Google 闭源(API 调用)并多处使用,其闭源对完整复现有影响。算力:$f_\text{texture}$ 8×H200 × 1 天可完成 5K 步;Fit-VTO 主模型 64×TPU-v5 × 2 天、batch=64、2M 步,投入相当大;中小团队可用更小 LoRA rank、更小 batch 做近似复现。复现难度:技术栈涉及 3D 仿真 + sim-to-real + 配对 inpaint + Flux LoRA + Fourier 测量编码器,每项都有独立门槛;box-mesh realignment 细节主要在正文简述。综合可复现性较好,完整 SOTA 数字需相当算力与工程投入。