
MagicTryOn: 基于扩散Transformer的服装保留视频虚拟试穿
MagicTryOn 是一个基于大规模视频扩散Transformer的视频虚拟试穿框架。1) 它采用Wan2.1扩散Transformer作为骨干,2) 使用全自注意力机制来建模时空一致性,3) 引入了一种由粗到细的服装保留策略,并结合了掩码感知损失来增强服装区域的保真度。

📣 新闻
2025/12/26: 🎉 我们已更新MagicTryOn-1.3B 🤗HuggingFace。2025/06/09: 🎉 我们很高兴地宣布,MagicTryOn的代码已开源!快来查看!权重已发布!!!。您可以从 🤗HuggingFace 下载权重。2025/05/27: 我们的 ArXiv论文 已发布 🥳!
✅ MagicTryOn发布待办事项
- ✅ 发布源代码
- ✅ 发布推理Demo和14B预训练权重
- ✅ 发布定制试穿工具
- ✅ 发布MagicTryOn-1.3B权重
- [ ] 发布MagicTryOn-Turbo
🤝 社区支持
MagicTryOn的当前版本在VITON-HD、DressCode和ViViD等公共数据集上训练。如果社区对在自然场景数据集上训练MagicTryOn感兴趣,以更好地支持现实世界的虚拟试穿场景,请随时联系我们。我们很乐意提供相应的训练脚本。
😍 安装
创建conda环境 & 安装依赖
# python==3.12.9 cuda==12.3 torch==2.2
conda create -n magictryon python==3.12.9
conda activate magictryon
pip install -r requirements.txt
# 或
conda env create -f environment.yaml
如果在安装Flash Attention时遇到错误,请根据您的Python版本、CUDA版本和Torch版本,手动下载安装包,并使用`pip install flash_attn-2.7.3+cu12torch2.2cxx11abiFALSE-cp312-cp312-linux_x86_64.whl)。
使用以下命令下载权重:
cd Magic-TryOn
HF_ENDPOINT=https://hf-mirror.com huggingface-cli download LuckyLiGY/MagicTryOn --local-dir ./weights/MagicTryOn_14B_V1
😉 Demo推理
1. 图像试穿
您可以直接运行以下命令进行图像试穿Demo。如果您想修改一些推理参数,请修改predict_image_tryon_up.py文件内的内容。
CUDA_VISIBLE_DEVICES=0 python inference/image_tryon/predict_image_tryon_up.py
CUDA_VISIBLE_DEVICES=1 python inference/image_tryon/predict_image_tryon_low.py
2. 视频试穿
您可以直接运行以下命令进行视频试穿Demo。如果您想修改一些推理参数,请修改predict_video_tryon_up.py文件内的内容。
CUDA_VISIBLE_DEVICES=0 python inference/video_tryon/predict_video_tryon_up.py
CUDA_VISIBLE_DEVICES=1 python inference/video_tryon/predict_video_tryon_low.py
3. 定制试穿
在进行定制试穿前,您需要完成以下五个步骤以获取:
-
服装描述
为服装生成描述性文本,这可能用于条件化或多模态控制。我们使用 Qwen/Qwen2.5-VL-7B-Instruct 获取描述。运行前需要指定文件夹路径。python inference/customize/get_garment_caption.py -
服装线图
使用 AniLines-Anime-Lineart-Extractor 提取服装的结构线或草图。从此 链接 下载预训练模型,并放置在inference/customize/AniLines/weights文件夹。python inference/customize/AniLines/infer.py --dir_in datasets/garment/vivo/vivo_garment --dir_out datasets/garment/vivo/vivo_garment_anilines --mode detail --binarize -1 --fp16 True --device cuda:1 -
掩码
生成服装的无关掩码,这对于试穿过程中的区域控制至关重要。请 下载 获取无关掩码所需的检查点。检查点需要放置在inference/customize/gen_mask/ckpt文件夹。(1) 您需要将视频重命名为
video.mp4,然后根据以下目录结构构建文件夹。├── datasets │ ├── person | | ├── customize │ │ │ ├── video │ │ │ │ ├── 00001 │ │ │ │ │ ├── video.mp4 | | | | ├── 00002 ... │ │ │ ├── image │ │ │ │ ├── 00001 │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ ├── 0000.png | | | | ├── 00002 ...(2) 使用
video2image.py将视频转换为图像帧并保存到datasets/person/customize/video/00001/images。(3) 运行以下命令获取无关掩码。
python inference/customize/gen_mask/app_mask.py # 如果提取下半身或裙装的掩码,请修改第65行。 # if lower_body: # mask, _ = get_mask_location('dc', "lower_body", model_parse, keypoints) # if dresses: # mask, _ = get_mask_location('dc', "dresses", model_parse, keypoints)完成上述步骤后,您将在
datasets/person/customize/video/00001/masks文件夹中获得所有视频帧的无关掩码。 -
无关表示
通过移除特定服装特征来构建人物的无关表示。您可以直接运行get_masked_person.py获取无关表示。确保修改--image_folder和--mask_folder参数。生成的视频帧将保存在datasets/person/customize/video/00001/agnostic文件夹。 -
稠密姿态
使用稠密姿态获取UV映射的稠密人体坐标,以实现更好的空间对齐。(1) 安装 detectron2。
(2) 运行以下命令:
bash inference/customize/detectron2/projects/DensePose/run.sh(3) 生成的结果将保存在
datasets/person/customize/video/00001/image-densepose文件夹。
完成上述步骤后,运行image2video.py生成所需的定制视频:mask.mp4、agnostic.mp4和densepose.mp4。然后,运行以下命令:
CUDA_VISIBLE_DEVICES=0 python inference/video_tryon/predict_video_tryon_customize.py
😘 致谢
我们的代码基于 VideoX-Fun 进行修改。我们采用 Wan2.1-I2V-14B 作为基础模型。我们使用 SCHP、openpose 和 DensePose 生成掩码。我们使用 detectron2 生成稠密姿态。我们使用 Qwen/Qwen2.5-VL-7B-Instruct 生成服装描述,并使用 AniLines-Anime-Lineart-Extractor 获取服装线图。感谢所有贡献者!
😊 许可证
所有材料,包括代码、检查点和Demo,均在 知识共享署名-非商业性使用-相同方式共享 4.0国际许可协议 下提供。您可以自由复制、重新分发、混合、转换和基于本项目进行非商业性用途,只要您提供适当的署名,并以相同许可协议分发您的贡献。
⭐ Star历史
🤩 引用
@article{li2025magictryon,
title={MagicTryOn: Harnessing Diffusion Transformer for Garment-Preserving Video Virtual Try-on},
author={Li, Guangyuan and Zheng, Siming and Zhang, Hao and Chen, Jinwei and Luan, Junsheng and Ou, Binkai and Zhao, Lei and Li, Bo and Jiang, Peng-Tao},
journal={arXiv preprint arXiv:2505.21325},
year={2025}
}