AnyDoor: 零样本对象级图像定制
陈熙
·
黄亮华
·
刘宇
·
沈俞俊
·
赵德立
·
赵恒双
香港大学 | 阿里巴巴集团 | 蚂蚁集团
新闻
- [2023.12.17] 发布训练、推理和演示代码,以及预训练检查点。
- [2023.12.24] 🔥 支持在 ModelScope 和 HuggingFace 上的在线演示。
- [即将推出] 发布新版本论文。
- [进行中] 扩大训练数据规模并发布更强大的模型,作为下游区域到区域生成任务的基础模型。
- [进行中] 为下游任务(如虚拟试衣、换脸、文本和标志转移等)发布专门设计的模型。
安装
使用 conda
安装:
conda env create -f environment.yaml
conda activate anydoor
或使用 pip
:
pip install -r requirements.txt
此外,对于训练,您需要安装 panopticapi、pycocotools 和 lvis-api。
pip install git+https://github.com/cocodataset/panopticapi.git
pip install pycocotools -i https://pypi.douban.com/simple
pip install lvis
下载检查点
下载 AnyDoor 检查点:
注意: 我们包含了 Adam 的所有优化器参数,因此检查点很大。您可以只保留 "state_dict" 以使其变小得多。
下载 DINOv2 检查点并修改 /configs/anydoor.yaml
中的路径(第 83 行)
如果您想从头开始训练,请下载 Stable Diffusion V2.1。
推理
我们在 run_inference.py
中提供了推理代码(从第 222 行开始),用于单张图像推理和数据集推理(VITON-HD 测试)。您应该修改数据路径并运行以下代码。生成的结果会保存在 examples/TestDreamBooth/GEN
中(单张图像),以及 VITONGEN
中(VITON-HD 测试)。
python run_inference.py
VITON 测试的推理结果将如下所示 [服装、真实图像、生成图像]。
请注意,AnyDoor 不包含任何针对试衣的特定设计/调整,我们认为添加骨骼信息或扭曲的服装,并在试衣数据上进行调整会使其变得更好 :)
我们用于 DreamBooth 和 COCOEE 评估的数据可以在 Google Drive 上下载:
- 链接:[待发布]
Gradio 演示
目前,我们支持本地 Gradio 演示。要启动它,您首先应该修改 /configs/demo.yaml
中预训练模型的路径,以及 /configs/anydoor.yaml
中 DINOv2 的路径(第 83 行)。
之后,运行脚本:
python run_gradio_demo.py
Gradio 演示的界面如下所示:
-
📢 此版本要求用户标注目标对象的掩码,太粗糙的掩码会影响生成质量。我们计划在演示中添加掩码优化模块或交互式分割模块。
-
📢 我们提供了一个分割模块来优化用户标注的参考掩码。我们可以通过在
/configs/demo.yaml
中设置use_interactive_seg: False
来禁用它。
训练
准备数据集
- 下载
/configs/datasets.yaml
中列出的数据集,并修改相应的路径。 - 您可以根据
./datasets
中文件的格式准备自己的数据集。 - 如果您使用 UVO 数据集,需要按照
./datasets/Preprocess/uvo_process.py
处理 json 文件。 - 您可以参考
run_dataset_debug.py
来验证您的数据是否正确。
准备初始权重
- 如果您想从头开始训练,请通过运行以下命令将下载的 SD 权重转换为控制副本:
sh ./scripts/convert_weight.sh
开始训练
-
根据您的训练资源,修改
run_train_anydoor.py
第 26-34 行的训练超参数。我们验证使用 2 个 A100 GPU,批量累积=1,可以在 300,000 次迭代后获得令人满意的结果。 -
执行以下命令开始训练:
sh ./scripts/train.sh
🔥 社区贡献
@bdsqlsz
- Windows 版 AnyDoor:https://github.com/sdbds/AnyDoor-for-windows
- 剪枝模型:https://modelscope.cn/models/bdsqlsz/AnyDoor-Pruned/summary
致谢
本项目基于 ControlNet 的代码库开发。我们感谢这项伟大的工作!
引用
如果您发现这个代码库对您的研究有用,请使用以下条目。
@article{chen2023anydoor,
title={Anydoor: Zero-shot object-level image customization},
author={Chen, Xi and Huang, Lianghua and Liu, Yu and Shen, Yujun and Zhao, Deli and Zhao, Hengshuang},
journal={arXiv preprint arXiv:2307.09481},
year={2023}
}