ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

OOTDiffusion 批量出图指南:从命令行单次试穿到可复用批处理

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手头有一批模特图和服装平铺图每张都要出一版试穿效果逐张操作 Gradio 界面显然不够看。OOTDiffusionAAAI 2025OOTDiffusion: Outfitting Fusion based Latent Diffusion for Controllable Virtual Try-on把姿态估计、人体解析和双 UNet 扩散生成打包成一条固定管线入口只有两个Gradio 界面 run/gradio_ootd.py 和命令行脚本 run/run_ootd.py两者的参数和行为完全一致所以先弄懂命令行再谈复用。环境与前置条件按顺序准备五步以内能跑起来拉取代码git clone https://gitcode.com/GitHub_Trending/oo/OOTDiffusion创建 conda 环境python 3.10先装torch2.0.1 torchvision0.15.2 torchaudio2.0.2再执行pip install -r requirements.txt模型权重放进 checkpoints/ 目录包括ootd、humanparsing、openpose三组权重外加clip-vit-large-patch14checkpoints/README.txt 里写明了这一条官方仅在 Ubuntu 22.04 上验证过其他 Linux 发行版可以试但出问题先想到这里推理入口都在run/目录代码里的相对权重路径如../checkpoints/ootd是相对ootd/包目录写的不要改动目录结构界面分两个区块Half-body 只支持上衣hd 模型Full-body 支持上衣/下装/连衣裙dc 模型参数滑杆的取值范围就是脚本支持的合法范围后面会用到。输入、处理、输出一次试穿经过哪些环节整条链路可以拆成四步run/run_ootd.py 里的代码顺序就是它统一尺寸。模特图和服装图先resize((768, 1024))送进姿态和解析模型的版本再缩到384×512这是管线唯一的输入规格。提取条件。OpenPose(0)输出关键点Parsing(0)输出 18 类人体解析图两者都来自preprocess/下的封装类。生成涂抹掩码。get_mask_location定义在 run/utils_ootd.py按服装类别把解析图里的待替换区域和保护区域算出来——比如试上衣时手臂、头部、鞋会被划进保护区域并配合关键点画出袖笼最后输出二值mask和灰度mask_gray。涂抹 扩散生成。Image.composite(mask_gray, model_img, mask)把待替换区域涂灰得到masked_vton_img再连同服装图、掩码、原图一起交给OOTDiffusionHD/OOTDiffusionDC一次调用返回num_samples张结果图run_ootd.py会把它们存到run/images_output/下。命令行单次调用长这样cd run # 半身模型只支持上衣 python run_ootd.py --model_path 模特图 --cloth_path 服装图 --scale 2.0 --sample 4 # 全身模型--category 必须与服装配对0 上衣 / 1 下装 / 2 连衣裙 python run_ootd.py --model_path 模特图 --cloth_path 服装图 --model_type dc --category 2 --scale 2.0 --sample 4脚本本身没有更多逻辑关键都在下面这几个参数上参数作用推荐值/取值范围--sample单次生成图片张数直接决定显存占用4默认显存紧张时降为 1-2--step扩散采样步数20默认界面滑杆上限 40--scale图像引导强度越大越贴服装图2.0默认1.0–5.0--seed随机种子-1 表示随机取种并在控制台打印复现实验时固定为具体整数--model_type模型分支hd或dchd默认或dc--category服装类别0 上衣 / 1 下装 / 2 连衣裙hd模式强制为 0不匹配会直接报错从单次调用到可复用流程跑通一次之后你会发现 Gradio 里process_hd和process_dc两个函数已经把缩放 → 关键点 → 解析 → 掩码 → 涂抹 → 生成整条链封好了见 run/gradio_ootd.py它们的入参就是界面滑杆的原始值返回值是 PIL 图像列表。写批处理时不必重启界面直接 import 这两个函数或者自己from ootd.inference_ootd_hd import OOTDiffusionHD拿模型类组装等价流程。批处理骨架# 与 Gradio 界面同款入口返回 PIL 图像列表 from run.gradio_ootd import process_hd, process_dc def batch_tryon(pairs, out_dir): # pairs: [(model_img, garment_img), ...] for i, (model_img, garment_img) in enumerate(pairs): images process_hd(model_img, garment_img, n_samples4, n_steps20, image_scale2.0, seed-1) for j, img in enumerate(images): img.save(f{out_dir}/batch_{i:03d}_{j}.png)两个注意点模型在 import 阶段就会加载进显存界面脚本顶部直接实例化了 hd/dc 两套OpenPose、Parsing、OOTDiffusionHD/DC所以批处理脚本要么放多卡上分卡要么只保留单套模型掩码排查可以复用utils_ootd.py里的refine_mask和hole_fill它们是get_mask_location末尾的两道整形工序。下面这张示例服装图就是run/examples/garment/里的素材适合拿来做冒烟测试高频问题速查双卡分别加载 hd 和 dc 模型是必须的吗不是必须是界面脚本的写法。单卡时只初始化你要用的那一套OpenPose、Parsing、OOTDiffusionHD各一个实例显存压力小得多。怎么复现某次生成的结果seed-1会在运行时随机取一个种子并打印Initial seed: xxx把它记下来下次传同一个整数即可逐张复现。--scale调大是不是更稳不一定。1.0–5.0 之间 2.0 附近是默认平衡点数值越贴近服装原图但过高时纹理容易发糊建议固定其他参数后小范围扫一遍再定。输出规格是什么固定 768×1024 的 PNG存进run/images_output/中间产物mask.jpg也在那里出图异常时先对照它看掩码区域划得对不对。以上管线针对 VITON-HD半身与 Dress Code全身两类数据分布做适配模特姿态怪异或服装图背景杂乱时掩码质量会直接影响生成效果。下一步值得做的事是把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),仅供参考
返回列表