在本地跑通OOTDiffusion虚拟试衣:从下权重到出图的路径
在本地跑通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 虚拟试衣能把服装平铺图和人像照片组合成试穿效果图官方仓库同时给出了推理代码和示例图片。这篇文章走一遍从环境到出图的本地流程。一句话原理核心思路是给一个潜在扩散模型在低维隐空间里做去噪、再生成图像的模型比直接在像素上生成更省算力两条指引一条是服装图经 CLIP图文多模态模型编码出的特征向量告诉它穿什么另一条是用姿态检测和人像解析对人体做逐像素的部件分类切出来的遮罩区域告诉它往哪穿。只重绘遮罩内的区域遮罩外保留原图。⚙️ 动手前准备硬件显存 10GB 以上的 GPU推理全程 fp16官方只在 LinuxUbuntu 22.04上验证过环境Python 3.10 加 PyTorch 2.0.1其余依赖按 requirements.txt 安装权重下载 ootd、humanparsing、openpose、clip-vit-large-patch14 四个模型包放进 checkpoints/其中 ootd 里含 ootd_hd半身与 ootd_dc全身两套权重⚙️ 核心操作从克隆仓库到出第一张图1. 克隆仓库并搭环境git clone https://gitcode.com/GitHub_Trending/oo/OOTDiffusion cd OOTDiffusion conda create -n ootd python3.10 -y conda activate ootd pip install torch2.0.1 torchvision0.15.2 pip install -r requirements.txtcheckpoints 目录是最容易出错的地方ootd 包里含 vae、tokenizer 和两套权重每套权重下都有 unet_garm、unet_vton、vae 三个子目录其余两个模型包是预处理用的人体解析和姿态估计。整包原样放置不要拆散。示例图片已随仓库放在 run/examples/ 下可直接试跑。2. 跑半身款上衣试穿cd OOTDiffusion/run python run_ootd.py --model_path examples/model/model_1.png --cloth_path examples/garment/00055_00.jpg --scale 2.0 --sample 4入口脚本很薄实际链路是三步先用 OpenPose 关键点加人像解析生成逐像素遮罩决定原图哪些区域要被重绘再把服装图编码成 CLIP 特征向量最后由 unet_garm 和 unet_vton 两个 UNet 依次在隐空间去噪VAE 解码回 768x1024 的成图。参数方面--scale 是图像引导强度越大越贴近服装图--sample 是每次生成的张数--step 是去噪步数默认 20。输入图内部会强制缩放到 768x1024无需自己预处理。结果写到 run/images_output/中间遮罩也存为同目录的 mask.jpg可以核对重绘区域是否正好覆盖服装位置。3. 切到全身模型半身模型只支持上衣试穿下装或连衣裙要换成 dc 模型且 category 必须和服装配对0 上衣、1 下装、2 连衣裙。python run_ootd.py --model_path examples/model/model_1.png --cloth_path examples/garment/00055_00.jpg --model_type dc --category 1 避坑实录第一次跑的时候我报找不到 vae 子文件夹。原因是我把权重平铺在 checkpoints 下而代码读的是 ootd_hd/checkpoint-36000 这个路径unet_garm、unet_vton、vae 必须都在它下面的同名子目录里。正确做法就是整包原样放别自己拆。还有一次直接撞上 model_type hd requires category 0 的报错想用半身模型试穿下装。半身模型只负责上衣下装和连衣裙得换成 --model_type dc 并带上 --category。这里还有个容易忽略的坑模特图里人的姿态太偏时结果会翻车。遮罩依赖 OpenPose 关键点加人像解析人转过去、被遮挡或者手臂不可见手臂区域切得不准出图边缘会多出一层鬼影。输入图会被强制缩放到 768x1024原图长宽比偏离 3:4 太多时人体会变形选图时尽量贴近这个比例。效果与边界单人姿态清晰、服装图为干净平铺的场景下表现好半身模型的上衣衬衫、外套最稳全身模型覆盖下装与连衣裙。量级参考24GB 显存的消费级显卡上768x1024、20 步、4 张图单次运行约一分钟显存占用在 10GB 量级。不太适用的场景多人同框、复杂遮挡、带密集文字或 logo 的服装细小文字容易生成乱码以及棚拍时装大片式的换装。结果是生成式的不固定种子时每次细节略有差异加 --seed 即可复现。延伸方向想用浏览器操作run/gradio_ootd.py 里带了现成的 web 界面想调遮罩切分规则比如手臂区域怎么扩看 run/utils_ootd.py 里的 get_mask_location 函数想深入去噪主循环与双 UNet 结构代码在 ootd/pipelines_ootd/ 目录下【免费下载链接】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),仅供参考