OOTDiffusion 快速上手指南:从环境配置到虚拟试穿推理的完整步骤
【免费下载链接】OOTDiffusion[AAAI 2025] Official implementation of "OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on"项目地址: https://gitcode.com/GitHub_Trending/oo/OOTDiffusion
OOTDiffusion 是 AAAI 2025 论文 "OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on" 的官方开源实现,一个基于服装融合潜在扩散的可控虚拟试穿工具。给定一张人物图和一张服装图,它就能输出人物穿上目标服装后的效果图。项目提供半身、全身两套预训练模型,以及完整的推理代码和 Gradio 网页演示,权重下载齐全后即可运行。
OOTDiffusion 是什么:一套结合姿态与人体解析的试穿流水线
动手前了解内部流程,排查问题时会更从容。项目分为两段。
第一段是预处理。人物图先经 OpenPose 做姿态估计,再经人体解析模型(ONNX 格式,parsing_atr.onnx)得到 19 类语义分割图,覆盖头部、上装、下装、四肢、鞋等区域。两者结合计算出"哪些区域要替换、哪些区域要保留"的掩码 mask。
第二段是生成。把打掩码后的人物图与服装图送入基于 Stable Diffusion 的潜在扩散管线,输出多张试穿候选图。
两种模型类型需要区分:
- hd(半身):在 VITON-HD 上训练,仅支持上身服装;
- dc(全身):在 Dress Code 上训练,支持上装、下装、连衣裙,但必须显式指定类别。
环境准备与模型权重下载
项目只在 Linux(Ubuntu 22.04)上验证过。先克隆仓库:
git clone https://gitcode.com/GitHub_Trending/oo/OOTDiffusion然后建 Python 3.10 环境。PyTorch 版本有固定要求,需要先装,再装其余依赖:
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pip install -r requirements.txtdiffusers 0.24.0、onnxruntime 1.16.2、gradio 4.16.0 等版本都已在 requirements.txt 中固定,无需自己管理版本。
第二步是权重。仓库 checkpoints/README.txt 写明了 checkpoints/ 目录需要放入四部分:ootd(扩散模型权重)、humanparsing(解析模型,含 parsing_atr.onnx 与 parsing_lip.onnx)、openpose(姿态模型)、clip-vit-large-patch14。任一文件缺失都会在启动时直接报错,建议逐项核对到位。
一条命令推理:半身与全身模型的虚拟试穿
推理入口是 run/run_ootd.py。半身试穿命令:
cd OOTDiffusion/run python run_ootd.py --model_path <人物图> --cloth_path <服装图> --scale 2.0 --sample 4生成 4 张候选图,写入 run/images_output/(out_hd_0.png 等);中间产物 mask.jpg 是区域掩码,结果不对时打开它能看出问题出在哪。
全身模型需要加两个参数 --model_type dc 和 --category:
python run_ootd.py --model_path <人物图> --cloth_path <服装图> --model_type dc --category 2 --scale 2.0 --sample 4常用参数如下:
| 参数 | 含义 | 说明 |
|---|---|---|
| --model_type | 模型类型 | hd 半身 / dc 全身 |
| --category | 服装类别 | 0 上装、1 下装、2 连衣裙 |
| --scale | 引导强度 | 默认 2.0 |
| --step | 去噪步数 | 默认 20,越大越慢 |
| --sample | 候选图数量 | 1~4 |
| --seed | 随机种子 | -1 为随机 |
一条硬性规则:hd 模型只接受 category 0,传 1 或 2 会直接报错。
网页界面:启动 Gradio 演示
不想敲命令的话,项目自带 Web 界面(run/gradio_ootd.py):
cd OOTDiffusion/run && python gradio_ootd.py页面默认监听 7865 端口,分半身、全身两个标签页,每页都内置 run/examples/ 下的人物与服装示例图,可直接点选测试。滑块可调节输出张数(1~4)、步数(20~40)、引导强度(1.0~5.0)和种子;全身页多一个服装类别下拉框,需与服装匹配选择。
注意:演示会把 hd 和 dc 两套模型分别加载到 GPU 0 和 GPU 1,需要双卡显存充足;单卡机器建议用命令行模式。
常见坑与排查
实践中容易遇到的问题:
- 启动即报文件找不到:基本是 checkpoints/ 目录不全,对照 ootd、humanparsing、openpose、clip-vit-large-patch14 四项逐一检查。
- hd 模型报 ValueError:几乎都是 category 不为 0 导致,半身模型只能试穿上装。
- 输入图被拉变形:代码会把人物图和服装图统一强制缩放到 768×1024,选竖构图、留白少的图作输入,避免过度拉伸。
- 首张图等待偏长:人体解析走 onnxruntime 的 CPU 执行器,不吃 GPU;这一段是耗时大头,属正常现象。
- 显存不足:先把 --sample 降到 1、--step 保持 20,再改用单样本的命令行模式。
另外,README 的 TODO 列表显示训练代码尚未放出,若目标是微调自有数据,需要先读论文。
建议先用 run/examples/ 内置示例图跑通全流程,确认各环节无误后再换成自己的图片,能省下不少排查时间。
【免费下载链接】OOTDiffusion[AAAI 2025] Official implementation of "OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on"项目地址: https://gitcode.com/GitHub_Trending/oo/OOTDiffusion
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考