DressCode: 基于文本引导的自回归服装缝纫与生成
本仓库是 DressCode: 基于文本引导的自回归服装缝纫与生成 的官方实现。
Kai He, Kaixin Yao, Qixuan Zhang, Jingyi Yu*, Lingjie Liu*, Lan Xu*.
SIGGRAPH 2024 (ACM Transactions on Graphics)

摘要
服装在人类外观中的重要作用凸显了服装数字化对于数字人创建的重要性。近期在 3D 内容创作方面的进展对于数字人创建至关重要。然而,基于文本引导的服装生成仍处于起步阶段。我们提出了一种文本驱动的 3D 服装生成框架 DressCode,旨在为初学者普及设计,并在时装设计、虚拟试穿和数字人创建方面提供巨大潜力。我们首先介绍了 SewingGPT,这是一种基于 GPT 的架构,通过整合交叉注意力与文本条件嵌入,在文本引导下生成缝纫图案。然后,我们定制了一个预训练的 Stable Diffusion,用于为服装生成基于图块的基于物理的渲染(PBR)纹理。通过利用大语言模型,我们的框架通过自然语言交互生成适合 CG 的服装。它还促进了图案补全和纹理编辑,通过用户友好的交互简化了设计流程。该框架通过允许创作者自由实验设计并将其作品中的独特元素融入其中,从而促进创新。通过全面的评估和与其他最先进方法的比较,我们的方法展示了卓越的质量以及与输入提示的对齐性。用户研究进一步验证了我们高质量的渲染结果,突出了其在生产环境中的实用性和潜力。
安装
git clone https://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测试模型。输入 Shape Prompt 或 Shape Prompt/Texture Prompts 进行推理。例如,输入提示词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 渲染。 - 使用我们的 UI 通过
python nn/UI_chat.py --sim测试带模拟的模型。提示词遵循与步骤 1 相同的规则。
- 更新
-
使用 ChatGPT 作为 LLM 解释器进行交互式定制服装生成:
-
更新
system.json中的"OpenAI_API_Key"和"https_proxy"(如有需要)。 -
使用我们的 UI 通过
python nn/UI_chat.py --sim --GPT测试模型。此时,用户可以与智能体聊天并提供他们的偏好,例如I want to attend a party.
-
-
-
我们的结果还支持用户将生成的网格和纹理加载到 3D 服装设计软件(例如 Marvelous Designer)中,以进行后续的模拟和动画制作。
可视化 3D 缝纫图样
- 我们的脚本可以可视化多个 3D 缝纫图样(缝合前),并使用
python nn/multiple_patterns_vis.py --folder PATH_TO_FOLDER输出一个合并的 3D 网格。输出文件将位于与输入文件夹相同的文件夹中。
纹理编辑
- 我们的 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}
}