LaDI-VTON (ACM多媒体2023)
基于潜在扩散文本反转增强的虚拟试衣
Davide Morelli*, Alberto Baldrati*, Giuseppe Cartella, Marcella Cornia, Marco Bertini, Rita Cucchiara
* 贡献相同。
🔥🔥 [2023/05/09] 训练代码发布
这是论文"LaDI-VTON: 基于潜在扩散文本反转增强的虚拟试衣"的官方代码仓库。
概述
摘要:
电子商务和元宇宙领域正在快速发展,不断寻求创新方法来提升消费者体验。同时,扩散模型的最新进展使生成网络能够创建极为逼真的图像。在这种背景下,基于图像的虚拟试衣(即生成目标模特穿着给定商店服装的新图像)尚未充分利用这些强大生成解决方案的潜力。本文提出了LaDI-VTON,这是第一个用于虚拟试衣任务的基于潜在扩散文本反转增强的模型。所提出的架构依赖于一个潜在扩散模型,并扩展了一个新的额外自动编码器模块,该模块利用可学习的跳跃连接来增强生成过程,同时保留模特的特征。为了有效保持商店服装的纹理和细节,我们提出了一个文本反转组件,可以将服装的视觉特征映射到CLIP词元嵌入空间,从而生成一组能够调节生成过程的伪词词元嵌入。在Dress Code和VITON-HD数据集上的实验结果表明,我们的方法在很大程度上优于竞争对手,为该任务取得了重要的里程碑
引用
如果您使用了我们的工作,请引用我们的论文:
@inproceedings{morelli2023ladi,
title={{LaDI-VTON: Latent Diffusion Textual-Inversion Enhanced Virtual Try-On}},
author={Morelli, Davide and Baldrati, Alberto and Cartella, Giuseppe and Cornia, Marcella and Bertini, Marco and Cucchiara, Rita},
booktitle={Proceedings of the ACM International Conference on Multimedia},
year={2023}
}
入门指南
我们建议使用Anaconda包管理器来避免依赖/可重复性问题。 对于Linux系统,您可以在这里找到conda安装指南。
安装
- 克隆仓库
git clone https://github.com/miccunifi/ladi-vton
- 安装Python依赖
conda env create -n ladi-vton -f environment.yml
conda activate ladi-vton
或者,您可以创建一个新的conda环境并手动安装所需的包:
conda create -n ladi-vton -y python=3.10
conda activate ladi-vton
pip install torch==2.0.1 torchvision==0.15.2 opencv-python==4.7.0.72 diffusers==0.14.0 transformers==4.27.3 accelerate==0.18.0 clean-fid==0.1.35 torchmetrics[image]==0.11.4 wandb==0.14.0 matplotlib==3.7.1 tqdm xformers
数据准备
DressCode
- 下载DressCode数据集
- 为了提高我们的变形模块的性能,我们发现使用白色背景的商店图像可以获得更好的结果。为了简化这个过程,我们现在提供预先提取的掩码,可用于从图像中移除背景。您可以从以下链接下载掩码:这里。下载后,请解压掩码文件并将它们放在数据集文件夹中,与相应的图像放在一起。
数据集下载完成后,文件夹结构应如下所示:
├── DressCode
| ├── test_pairs_paired.txt
| ├── test_pairs_unpaired.txt
| ├── train_pairs.txt
│ ├── [dresses | lower_body | upper_body]
| | ├── test_pairs_paired.txt
| | ├── test_pairs_unpaired.txt
| | ├── train_pairs.txt
│ │ ├── images
│ │ │ ├── [013563_0.jpg | 013563_1.jpg | 013564_0.jpg | 013564_1.jpg | ...]
│ │ ├── masks
│ │ │ ├── [013563_1.png| 013564_1.png | ...]
│ │ ├── keypoints
│ │ │ ├── [013563_2.json | 013564_2.json | ...]
│ │ ├── label_maps
│ │ │ ├── [013563_4.png | 013564_4.png | ...]
│ │ ├── skeletons
│ │ │ ├── [013563_5.jpg | 013564_5.jpg | ...]
│ │ ├── dense
│ │ │ ├── [013563_5.png | 013563_5_uv.npz | 013564_5.png | 013564_5_uv.npz | ...]
VITON-HD
- 下载VITON-HD数据集
下载数据集后,文件夹结构应如下所示:
├── VITON-HD
| ├── test_pairs.txt
| ├── train_pairs.txt
│ ├── [train | test]
| | ├── image
│ │ │ ├── [000006_00.jpg | 000008_00.jpg | ...]
│ │ ├── cloth
│ │ │ ├── [000006_00.jpg | 000008_00.jpg | ...]
│ │ ├── cloth-mask
│ │ │ ├── [000006_00.jpg | 000008_00.jpg | ...]
│ │ ├── image-parse-v3
│ │ │ ├── [000006_00.png | 000008_00.png | ...]
│ │ ├── openpose_img
│ │ │ ├── [000006_00_rendered.png | 000008_00_rendered.png | ...]
│ │ ├── openpose_json
│ │ │ ├── [000006_00_keypoints.json | 000008_00_keypoints.json | ...]
使用预训练模型进行推理
要在Dress Code或VITON-HD数据集上运行推理,请运行以下命令:
python src/inference.py --dataset [dresscode | vitonhd] --dresscode_dataroot <路径> --vitonhd_dataroot <路径> --output_dir <路径> --test_order [paired | unpaired] --category [all | lower_body | upper_body | dresses ] --mixed_precision [no | fp16 | bf16] --enable_xformers_memory_efficient_attention --use_png --compute_metrics
--dataset <字符串> 要使用的数据集,选项:['dresscode', 'vitonhd']
--dresscode_dataroot <字符串> dresscode数据集的数据根目录(当dataset=dresscode时需要)
--vitonhd_dataroot <字符串> vitonhd数据集的数据根目录(当dataset=vitonhd时需要)
--test_order <字符串> 测试设置,选项:['paired', 'unpaired']
--category <字符串> 要测试的类别,选项:['all', 'lower_body', 'upper_body', 'dresses'](默认为all)
--output_dir <字符串> 输出目录
--batch_size <整数> 批量大小(默认为8)
--mixed_precision <字符串> 混合精度(no, fp16, bf16)(默认为no)
--enable_xformers_memory_efficient_attention <store_true>
启用xformers中的内存高效注意力(默认为False)
--allow_tf32 <store_true> 允许在Ampere GPU上使用TF32(默认为False)
--num_workers <整数> 工作进程数(默认为8)
--use_png <store_true> 使用png而不是jpg(默认为False)
--compute_metrics 在推理结束时计算指标(默认为False)
由于我们通过torch.hub发布预训练模型,运行推理脚本时会自动下载模型。
指标计算
运行推理脚本并提取图像后,可以通过运行以下命令来计算指标:
python src/utils/val_metrics.py --gen_folder <路径> --dataset [dresscode | vitonhd] --dresscode_dataroot <路径> --vitonhd_dataroot <路径> --test_order [paired | unpaired] --category [all | lower_body | upper_body | dresses ]
--gen_folder <字符串> 生成图像文件夹的路径。
--dataset <字符串> 要使用的数据集,选项:['dresscode', 'vitonhd']
--dresscode_dataroot <字符串> dresscode数据集的数据根目录(当dataset=dresscode时需要)
--vitonhd_dataroot <字符串> vitonhd数据集的数据根目录(当dataset=vitonhd时需要)
--test_order <字符串> 测试设置,选项:['paired', 'unpaired']
--category <字符串> 要测试的类别,选项:['all', 'lower_body', 'upper_body', 'dresses'](默认为all)
--batch_size 批量大小(默认为32)
--workers 工作进程数(默认为8)
训练
在本节中,您将找到如何从头开始训练我们模型所有组件的说明。
1. 训练变形模块
首先,我们需要训练变形模块。要做到这一点,请运行以下命令:
python src/train_tps.py --dataset [dresscode | vitonhd] --dresscode_dataroot <路径> --vitonhd_dataroot <路径> --checkpoints_dir <路径> --exp_name <字符串>
--dataset <字符串> 使用的数据集,选项:['dresscode', 'vitonhd']
--dresscode_dataroot <字符串> dresscode数据集的数据根目录(当dataset=dresscode时必需)
--vitonhd_dataroot <字符串> vitonhd数据集的数据根目录(当dataset=vitonhd时必需)
--checkpoints_dir <字符串> 检查点目录
--exp_name <字符串> 实验名称
--batch_size <整数> 批量大小(默认为16)
--workers <整数> 工作进程数(默认为10)
--height <整数> 输入图像的高度(默认为512)
--width <整数> 输入图像的宽度(默认为384)
--lr <浮点数> 学习率(默认为1e-4)
--const_weight <浮点数> TPS约束损失的权重(默认为0.01)
--wandb_log <存储为真> 在wandb上记录训练(默认为False)
--wandb_project <字符串> wandb项目名称(默认为LaDI_VTON_tps)
--dense <存储为真> 使用密集UV图而不是关键点(默认为False)
--only_extraction <存储为真> 仅使用训练好的网络提取图像而不进行训练(默认为False)
--vgg_weight <整数> VGG损失的权重(优化网络)(默认为0.25)
--l1_weight <整数> L1损失的权重(优化网络)(默认为1.0)
--epochs_tps <整数> TPS训练的轮数(默认为50)
--epochs_refinement <整数> 优化网络训练的轮数(默认为50)
训练结束后,变形后的服装图像将保存在data/warped_cloths
和data/warped_cloths_unpaired
文件夹中。
为了节省计算时间,在接下来的步骤中,我们将使用预先提取的变形服装图像。
2. 训练EMASC
要训练EMASC模块,请运行以下命令:
python src/train_emasc.py --dataset [dresscode | vitonhd] --dresscode_dataroot <路径> --vitonhd_dataroot <路径> --output_dir <路径>
--dataset <字符串> 要使用的数据集,选项:['dresscode', 'vitonhd']
--dresscode_dataroot <字符串> dresscode数据集的数据根目录(当dataset=dresscode时需要)
--vitonhd_dataroot <字符串> vitonhd数据集的数据根目录(当dataset=vitonhd时需要)
--output_dir <字符串> 输出目录,用于保存模型预测和检查点
--pretrained_model_name_or_path <字符串>
huggingface.co/models的模型标识符(默认为stabilityai/stable-diffusion-2-inpainting)
--seed <整数> 用于可重现训练的种子(默认为1234)
--train_batch_size <整数> 训练的批次大小(默认为16)
--test_batch_size <整数> 测试的批次大小(默认为16)
--num_train_epochs <整数> 训练轮数(默认为100)
--max_train_steps <整数> 最大训练步数。如果提供,将覆盖num_train_epochs(默认为40k)
--gradient_accumulation_steps <整数>
在执行反向/更新传播之前累积的更新步数(默认为1)
--learning_rate <浮点数> 学习率(默认为1e-5)
--lr_scheduler <字符串> 学习率调度器,选项:['linear', 'cosine', 'cosine_with_restarts', 'polynomial', 'constant', 'constant_with_warmup'](默认为constant_with_warmup)
--lr_warmup_steps <整数> 学习率调度器的预热步数(默认为500)
--allow_tf32 <store_true> 允许在Ampere GPU上使用TF32(默认为False)
--adam_beta1 <浮点数> Adam优化器的beta_1值(默认为0.9)
--adam_beta2 <浮点数> Adam优化器的beta_2值(默认为0.999)
--adam_weight_decay <浮点数> Adam优化器的权重衰减值(默认为1e-2)
--adam_epsilon <浮点数> Adam优化器的epsilon值(默认为1e-8)
--max_grad_norm <浮点数> 梯度裁剪的最大梯度范数值(默认为1.0)
--mixed_precision <字符串> 混合精度训练,选项:['no', 'fp16', 'bf16'](默认为fp16)
--report_to <字符串> 指定报告指标的位置,选项:['wandb', 'tensorboard', 'comet_ml'](默认为wandb)
--checkpointing_steps <整数> 每隔多少步保存一次检查点(默认为10000)
--resume_from_checkpoint <字符串> 是否从之前的检查点恢复训练。使用"latest"自动选择最后可用的检查点。(默认为None)
--num_workers <整数> 工作进程数(默认为8)
--num_workers_test <整数> 测试数据加载器的工作进程数(默认为8)
--test_order <字符串> 测试设置,选项:['paired', 'unpaired'](默认为paired)
--emasc_type <字符串> EMASC类型,选项:['linear', 'nonlinear'](默认为nonlinear)
--vgg_weight <浮点数> VGG损失的权重(默认为0.5)
--emasc_kernel <整数> EMASC模块的核大小(默认为3)
--emasc_padding <整数> EMASC模块的填充(默认为1)
训练结束时,EMASC检查点将保存在output_dir
文件夹中。
2.5 (可选) 提取clip衣物嵌入
为了加速后续步骤的训练过程,可以考虑预先计算数据集中每张图像的CLIP衣物嵌入。
要做到这一点,请运行以下命令:
python src/utils/compute_cloth_clip_features.py --dataset [dresscode | vitonhd] --dresscode_dataroot <路径> --vitonhd_dataroot <路径>
--dataset <字符串> 要使用的数据集,选项:['dresscode', 'vitonhd']
--dresscode_dataroot <字符串> dresscode数据集的数据根目录(当dataset=dresscode时需要)
--vitonhd_dataroot <字符串> vitonhd数据集的数据根目录(当dataset=vitonhd时需要)
--pretrained_model_name_or_path <字符串>
huggingface.co/models的模型标识符(默认为stabilityai/stable-diffusion-2-inpainting)
--batch_size <整数> 批次大小(默认为16)
--num_workers <整数> 工作进程数(默认为8)
计算出的特征将保存在data/clip_cloth_embeddings
文件夹中。
在接下来的步骤中,要使用预先计算的特征,请确保使用--use_clip_cloth_features
标志。
3. 预训练反转适配器
要预训练反转适配器,请运行以下命令:
python src/train_inversion_adapter.py --dataset [dresscode | vitonhd] --dresscode_dataroot <路径> --vitonhd_dataroot <路径> --output_dir <路径> --gradient_checkpointing --enable_xformers_memory_efficient_attention --use_clip_cloth_features
--dataset <字符串> 要使用的数据集,选项:['dresscode', 'vitonhd']
--dresscode_dataroot <字符串> dresscode数据集的数据根目录(当dataset=dresscode时必需)
--vitonhd_dataroot <字符串> vitonhd数据集的数据根目录(当dataset=vitonhd时必需)
--output_dir <字符串> 模型预测和检查点将写入的输出目录
--pretrained_model_name_or_path <字符串>
huggingface.co/models的模型标识符(默认为stabilityai/stable-diffusion-2-inpainting)
--seed <整数> 用于可重复训练的随机种子(默认为1234)
--train_batch_size <整数> 训练的批量大小(默认为16)
--test_batch_size <整数> 测试的批量大小(默认为16)
--num_train_epochs <整数> 训练轮数(默认为100)
--max_train_steps <整数> 最大训练步数。如果提供,将覆盖num_train_epochs(默认为200k)
--gradient_accumulation_steps <整数>
在执行反向/更新传递之前累积的更新步数(默认为1)
--gradient_checkpointing <存储为真>
使用梯度检查点以牺牲较慢的反向传递为代价来节省内存(默认为False)
--learning_rate <浮点数> 学习率(默认为1e-5)
--lr_scheduler <字符串> 学习率调度器,选项:['linear', 'cosine', 'cosine_with_restarts', 'polynomial', 'constant', 'constant_with_warmup'](默认为constant_with_warmup)
--lr_warmup_steps <整数> 学习率调度器的预热步数(默认为500)
--allow_tf32 <存储为真> 允许在Ampere GPU上使用TF32(默认为False)
--adam_beta1 <浮点数> Adam优化器的beta_1值(默认为0.9)
--adam_beta2 <浮点数> Adam优化器的beta_2值(默认为0.999)
--adam_weight_decay <浮点数> Adam优化器的权重衰减值(默认为1e-2)
--adam_epsilon <浮点数> Adam优化器的epsilon值(默认为1e-8)
--max_grad_norm <浮点数> 梯度裁剪的最大梯度范数值(默认为1.0)
--mixed_precision <字符串> 混合精度训练,选项:['no', 'fp16', 'bf16'](默认为fp16)
--report_to <字符串> 报告指标的位置,选项:['wandb', 'tensorboard', 'comet_ml'](默认为wandb)
--checkpointing_steps <整数> 每次检查点之间的步数(默认为50000)
--resume_from_checkpoint <字符串> 是否应从先前的检查点恢复训练。使用"latest"自动选择最后可用的检查点。(默认为None)
--enable_xformers_memory_efficient_attention <存储为真>
在xformers中启用内存高效注意力(默认为False)
--num_workers <整数> 工作进程数(默认为8)
--num_workers_test <整数> 测试数据加载器的工作进程数(默认为8)
--test_order <字符串> 测试设置,选项:['paired', 'unpaired'](默认为paired)
--num_vstar <整数> 每张图像要使用的预测v*数量(默认为16)
--num_encoder_layers <整数> 反演适配器中要使用的ViT层数(默认为1)
--use_clip_cloth_features <存储为真>
使用预先计算的clip服装特征,而不是每次迭代时计算(默认为False)
训练结束时,反演适配器检查点将保存在output_dir
文件夹中。
注意:只有在之前使用src/utils/compute_cloth_clip_features.py
脚本(步骤2.5)计算了clip服装特征的情况下,才能使用--use_clip_cloth_features
标志。
4. 训练VTO
要成功训练VTO模型,请确保指定正确的预训练反演适配器检查点路径。如果省略,反演适配器将从头开始训练。另外,不要忘记包含--train_inversion_adapter
标志,以在VTO训练过程中启用反演适配器训练。
要训练VTO模型,运行以下命令:
python src/train_vto.py --dataset [dresscode | vitonhd] --dresscode_dataroot <路径> --vitonhd_dataroot <路径> --output_dir <路径> --inversion_adapter_dir <路径> --gradient_checkpointing --enable_xformers_memory_efficient_attention --use_clip_cloth_features --train_inversion_adapter
--dataset <str> 数据集选择,选项: ['dresscode', 'vitonhd']
--dresscode_dataroot <str> dresscode数据集的数据根目录(当dataset=dresscode时必填)
--vitonhd_dataroot <str> vitonhd数据集的数据根目录(当dataset=vitonhd时必填)
--output_dir <str> 模型预测结果和检查点将写入的输出目录
--inversion_adapter_dir <str> 反演适配器检查点目录路径。应与反演适配器训练脚本的`output_dir`相同。如果未指定,反演适配器将从头开始训练。(默认=None)
--inversion_adapter_name <str> 反演适配器检查点名称。要加载最新的检查点,请使用`latest`。(默认=latest)
--pretrained_model_name_or_path <str>
来自huggingface.co/models的模型标识符(默认=stabilityai/stable-diffusion-2-inpainting)
--seed <int> 用于可重现训练的种子(默认=1234)
--train_batch_size <int> 训练的批量大小(默认=16)
--test_batch_size <int> 测试的批量大小(默认=16)
--num_train_epochs <int> 训练轮数(默认=100)
--max_train_steps <int> 最大训练步数。如果提供,将覆盖num_train_epochs(默认=200k)
--gradient_accumulation_steps <int>
在执行反向/更新传递之前累积的更新步数(默认=1)
--gradient_checkpointing <store_true>
使用梯度检查点以牺牲较慢的反向传递为代价来节省内存(默认=False)
--learning_rate <float> 学习率(默认=1e-5)
--lr_scheduler <str> 学习率调度器,选项: ['linear', 'cosine', 'cosine_with_restarts', 'polynomial', 'constant', 'constant_with_warmup'](默认=constant_with_warmup)
--lr_warmup_steps <int> 学习率调度器的预热步数(默认=500)
--allow_tf32 <store_true> 允许在Ampere GPU上使用TF32(默认=False)
--adam_beta1 <float> Adam优化器的beta_1值(默认=0.9)
--adam_beta2 <float> Adam优化器的beta_2值(默认=0.999)
--adam_weight_decay <float> Adam优化器的权重衰减值(默认=1e-2)
--adam_epsilon <float> Adam优化器的epsilon值(默认=1e-8)
--max_grad_norm <float> 梯度裁剪的最大梯度范数值(默认=1.0)
--mixed_precision <str> 混合精度训练,选项: ['no', 'fp16', 'bf16'](默认=fp16)
--report_to <str> 指定报告指标的位置,选项: ['wandb', 'tensorboard', 'comet_ml'](默认=wandb)
--checkpointing_steps <int> 每隔多少步保存一次检查点(默认=50000)
--resume_from_checkpoint <str> 是否从之前的检查点恢复训练。使用"latest"自动选择最后可用的检查点。(默认=None)
--enable_xformers_memory_efficient_attention <store_true>
在xformers中启用内存高效注意力(默认=False)
--num_workers <int> 工作进程数(默认=8)
--num_workers_test <int> 测试数据加载器的工作进程数(默认=8)
--test_order <str> 测试设置,选项: ['paired', 'unpaired'](默认=paired)
--uncond_fraction <float> 无条件训练样本的比例(默认=0.2)
--text_usage <str> 使用的文本特征,选项: ['none', 'noun_chunks', 'inversion_adapter'](默认=inversion_adapter)
--cloth_input_type <str> 服装输入类型,选项: ['none', 'warped'],(默认=warped)
--num_vstar <int> 每张图像使用的预测v*数量(默认=16)
--num_encoder_layers <int> 反演适配器中使用的ViT层数(默认=1)
--train_inversion_adapter <store_true>
在VTO训练期间训练反演适配器(默认=False)
--use_clip_cloth_features <store_true>
使用预先计算的CLIP服装特征,而不是每次迭代时重新计算(默认=False)
训练结束后,检查点将保存在output_dir
文件夹中。
注意: 只有在之前使用src/utils/compute_cloth_clip_features.py
脚本(步骤2.5)计算了CLIP服装特征后,才能使用--use_clip_cloth_features
标志。
5. 使用训练好的模型进行推理
在运行推理之前,确保指定了所有训练过的检查点的正确路径。 还要确保使用与训练时一致的超参数。
要在Dress Code或VITON-HD数据集上运行推理,请执行以下命令:
python src/eval.py --dataset [dresscode | vitonhd] --dresscode_dataroot <路径> --vitonhd_dataroot <路径> --output_dir <路径> --save_name <字符串> --test_order [paired | unpaired] --unet_dir <路径> --inversion_adapter_dir <路径> --emasc_dir <路径> --category [all | lower_body | upper_body | dresses ] --enable_xformers_memory_efficient_attention --use_png --compute_metrics
--dataset <str> 要使用的数据集,选项:['dresscode', 'vitonhd']
--dresscode_dataroot <str> dresscode数据集的数据根目录(当dataset=dresscode时必需)
--vitonhd_dataroot <str> vitonhd数据集的数据根目录(当dataset=vitonhd时必需)
--output_dir <str> 生成的图像将写入的输出目录
--save_name <str> `output_dir`内生成的图像文件夹的名称
--test_order <str> 测试设置,选项:['paired', 'unpaired']
--unet_dir <str> UNet检查点目录的路径。应与VTO训练脚本的`output_dir`相同
--unet_name <str> UNet检查点的名称。要加载最新的检查点,请使用`latest`。(默认为latest)
--inversion_adapter_dir <str> 反转适配器检查点目录的路径。应与VTO训练脚本的`output_dir`相同。仅当`--text_usage`设置为`inversion_adapter`时需要。(默认为None)
--inversion_adapter_name <str> 反转适配器检查点的名称。要加载最新的检查点,请使用`latest`。(默认为latest)
--emasc_dir <str> EMASC检查点目录的路径。应与EMASC训练脚本的`output_dir`相同。当--emasc_type!=none时需要。(默认为None)
--emasc_name <str> EMASC检查点的名称。要加载最新的检查点,请使用`latest`。(默认为latest)
--pretrained_model_name_or_path <str>
来自huggingface.co/models的模型标识符(默认为stabilityai/stable-diffusion-2-inpainting)
--seed <int> 用于可复现训练的种子(默认为1234)
--batch_size <int> 批量大小(默认为8)
--allow_tf32 <store_true> 允许在Ampere GPU上使用TF32(默认为False)
--enable_xformers_memory_efficient_attention <store_true>
在xformers中启用内存高效注意力(默认为False)
--num_workers <int> 工作线程数(默认为8)
--category <str> 要测试的类别,选项:['all', 'lower_body', 'upper_body', 'dresses'](默认为all)
--emasc_type <str> EMASC的类型,选项:['linear', 'nonlinear'](默认为nonlinear)
--emasc_kernel <int> EMASC模块的核大小(默认为3)
--emasc_padding <int> EMASC模块的填充(默认为1)
--text_usage <str> 要使用的文本特征,选项:['none', 'noun_chunks', 'inversion_adapter'](默认为inversion_adapter)
--cloth_input_type <str> 服装输入类型,选项:['none', 'warped'],(默认为warped)
--num_vstar <int> 每张图像要使用的预测v*数量(默认为16)
--num_encoder_layers <int> 在反转适配器中使用的ViT层数(默认为1)
--use_png <store_true> 使用png而不是jpg(默认为False)
--num_inference_steps <int> 推理时的扩散步数(默认为50)
--guidance_scale <float> 扩散的引导比例(默认为7.5)
--use_clip_cloth_features <store_true>
使用预先计算的CLIP服装特征,而不是每次迭代时计算(默认为False)。
--compute_metrics 在推理结束时计算指标(默认为False)
生成的图像将保存在output_dir/save_name_{test_order}
文件夹中。
注意:只有在之前使用src/utils/compute_cloth_clip_features.py
脚本(步骤2.5)计算了CLIP服装特征的情况下,才能使用--use_clip_cloth_features
标志。
致谢
这项工作得到了PNRR项目"未来人工智能研究(FAIR)"和PRIN项目"CREATIVE:视觉和文本内容的跨模态理解与生成"(CUP B87G22000460001)的部分支持,这两个项目都由意大利大学和研究部共同资助,还得到了欧洲委员会欧洲地平线2020计划(拨款号101004545 - ReInHerit)的支持。
许可证
所有材料均根据知识共享署名-非商业性使用4.0国际许可协议提供。您可以出于非商业目的使用、重新分发和改编这些材料,只要您适当地引用我们的论文并指明任何您所做的更改。