DressCode:基于文本引导的服装自回归缝制与生成
这个仓库是《DressCode:基于文本引导的服装自回归缝制与生成》的官方实现。
SIGGRAPH 2024 (ACM图形学会刊)
摘要
服装在人类外观中扮演着重要角色,这凸显了服装数字化对于数字人物创作的重要性。近期3D内容创作的进展对数字人物创作至关重要。然而,基于文本引导的服装生成仍处于起步阶段。我们提出了一个基于文本驱动的3D服装生成框架DressCode,旨在让新手也能轻松设计,并在时装设计、虚拟试衣和数字人物创作方面展现巨大潜力。首先,我们引入了SewingGPT,这是一种基于GPT的架构,集成了交叉注意力和文本条件嵌入,可以在文本引导下生成缝纫图案。然后,我们调整了预训练的Stable Diffusion模型,为服装生成基于瓦片的物理渲染(PBR)纹理。通过利用大型语言模型,我们的框架可以通过自然语言交互生成适用于CG的服装。它还支持图案补全和纹理编辑,通过用户友好的交互简化了设计过程。该框架通过允许创作者自由实验设计并将独特元素融入作品中来促进创新。通过全面的评估和与其他最先进方法的比较,我们的方法展示了卓越的质量和与输入提示的一致性。用户研究进一步验证了我们的高质量渲染结果,凸显了其在生产环境中的实用性和潜力。
安装
git clone git@github.com:IHe-KaiI/DressCode.git
cd DressCode
conda env create -f environment.yaml
conda activate DressCode
环境变量
- 将
./packages
添加到PYTHONPATH
以导入自定义模块。
本地路径设置
在system.json
中更新您系统的本地路径。
- 推理输出文件夹的路径(
"output"
) - 训练数据集的路径
- 缝纫图案数据集的路径(
"datasets_path"
) - 我们提供的说明文本的路径(
"caption_path"
)
- 缝纫图案数据集的路径(
- 结果模拟的路径(如果不进行模拟则留空)
- 人体模型obj文件的路径(
"human_obj_path"
) - 模拟临时信息文件的路径(
"sim_json_path"
) - HDR环境贴图的路径(
"HDR_path"
) - 本地blender.exe用于渲染的路径(
"blender_path"
) - 本地mayapy.exe用于模拟的路径(
"maya_path"
) - 模拟属性的路径(
"dataset_properties_path"
)
- 人体模型obj文件的路径(
下载Stable Diffusion 2-1
- 下载Stable Diffusion 2-1到
./models--stabilityai--stable-diffusion-2-1-base
文件夹,用于CLIP嵌入模块。
模拟所需的包
- 要模拟结果,请按照说明安装所有模拟依赖项。
训练
SewingGPT
- 从[Korosteleva and Lee 2021]下载数据集和我们提供的说明文本。如有需要,在
system.json
中更新Wandb用户名("wandb_username"
)。 - 使用
python nn/train.py -c ./models/train.yaml
训练模型。 - 我们使用Tensorboard通过
tensorboard --logdir=PATH_TO_RECORD_FOLDER
跟踪训练过程,默认情况下,我们的脚本会将训练记录保存在./tensorboard
中。
恢复训练
当在输入配置中指定run_id
时,我们的脚本会自动尝试从run_id
文件夹中的最新检查点恢复训练。
数据说明文本生成提示
- 我们分享了在GPT-4V中用于数据说明文本生成的提示。请按照此说明了解详情。
测试
-
下载我们预训练的模型。
-
下载我们预训练的SewingGPT到
./models
。 -
下载我们预训练的PBR纹理生成器模型到
./nn/material_gen
(如果只测试SewingGPT则可选)。
-
-
使用
python nn/evaluation_scripts/predict_class.py -c ./models/infer.yaml
测试SewingGPT。 -
使用我们基于Gradio的UI进行测试。
-
使用预训练模型推理缝纫图案和PBR纹理:
- 使用
python nn/UI_chat.py
测试模型。输入形状提示或形状提示/纹理提示进行推理。例如,输入提示dress, sleeveless, midi length
将只生成缝纫图案结果;输入提示dress, sleeveless, midi length/green velvet
将生成缝纫图案和PBR纹理。它还支持输入多个服装提示,用;
(无空格)分隔,例如trouser, long length/green velvet;tank top, cropped length/khaki style
。
- 使用
-
模拟和渲染预测结果(模拟仅适用于Windows):
- 更新
system.json
中的本地路径。您可能需要使用推理输出文件夹("output"
)和HDR贴图("HDR_path"
)的完整路径以进行Blender渲染。 - 使用
python nn/UI_chat.py --sim
通过我们的UI测试带有模拟的模型。提示规则与步骤1相同。
- 更新
-
使用ChatGPT作为LLM解释器,实现交互式定制服装生成:
-
在
system.json
中更新"OpenAI_API_Key"
和"https_proxy"
(如果需要)。 -
使用
python nn/UI_chat.py --sim --GPT
通过我们的UI测试模型。这次,用户可以与代理聊天并提供他们的偏好,例如I want to attend a party.
-
-
-
我们的结果还支持用户将生成的网格和纹理加载到3D服装设计软件(如Marvelous Designer)中,以进行后续模拟和动画制作。
可视化3D缝纫图案
- 我们的脚本可以可视化多个3D缝纫图案(缝合前)并输出一个组合的3D网格,使用
python nn/multiple_patterns_vis.py --folder PATH_TO_FOLDER
。输出将位于与输入文件夹相同的文件夹中。
纹理编辑
- 我们的UI支持纹理编辑。运行
nn/UI_chat.py
并生成服装后,将最后生成的服装的UV贴图复制到Gradio的第二个标签页,并在UV贴图上编辑纹理。我们的脚本将使用新纹理渲染结果。目前,我们的编辑UI一次只支持处理一件服装。
致谢
本项目基于NeuralTailor构建。一些用于缝纫图案基本操作的代码来自Sewformer。我们的数据集基于[Korosteleva and Lee 2021]。我们感谢所有作者提供的出色仓库。
引用
如果您在研究中使用此数据集,请引用我们的论文:
@article{he2024dresscode,
title={DressCode: Autoregressively Sewing and Generating Garments from Text Guidance},
author={He, Kai and Yao, Kaixin and Zhang, Qixuan and Yu, Jingyi and Liu, Lingjie and Xu, Lan},
journal={ACM Transactions on Graphics (TOG)},
volume={43},
number={4},
pages={1--13},
year={2024},
publisher={ACM New York, NY, USA}
}