AnyDoor:零样本对象级图像定制

陈曦 · 黄良华 · 刘宇 · 沉宇军 · 赵德利 · 赵恒爽 香港大学 | 阿里巴巴集团| 蚂蚁集团

AnyDoor换衣移除物品局部重绘零样本对象级图像定制A卡+N卡整合包

消息

  • [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 行)

  • 网址: https: //github.com/facebookresearch/dinov2? tab=readme-ov-file

如果您想从头开始训练,请下载 Stable Diffusion V2.1。

  • 网址: https: //huggingface.co/stabilityai/stable-diffusion-2-1/tree/main

推理

我们在run_inference.py(第 222 行 - )中提供了推理单图像和推理数据集(VITON-HD 测试)的推理代码。您应该修改数据路径并运行以下代码。examples/TestDreamBooth/GEN生成的结果在单个图像和VITONGENVITON-HD 测试中提供。

python run_inference.py

VITON-Test 的推断结果将类似于 [服装、地面实况、生成]。

注意到 AnyDoor 不包含任何针对试穿的特定设计/调整,我们认为添加骨架信息或扭曲的服装,并调整试穿数据以使其更好:)

AnyDoor换衣移除物品局部重绘零样本对象级图像定制A卡+N卡整合包

我们对 DreamBooth 和 COCOEE 的评测数据可以在 Google Drive 下载:

  • 网址:[待发布]

广播演示

目前,我们支持本地渐变演示。要启动它,您应该首先修改/configs/demo.yaml预训练模型的路径和/configs/anydoor.yamlDINOv2 的路径(第 83 行)。

然后,运行脚本:

python run_gradio_demo.py

渐变演示的 UI 如下所示:

  • 📢 该版本要求用户注释目标对象的掩模,太粗糙的掩模会影响生成质量。我们计划在演示中添加掩模细化模块或交互式分割模块。

  • 📢我们提供了一个分割模块来细化用户注释的参考掩模。我们可以选择通过设置来禁用 use_interactive_seg: False/configs/demo.yaml

AnyDoor换衣移除物品局部重绘零样本对象级图像定制A卡+N卡整合包

火车

准备数据集

  • 下载中存在的数据集/configs/datasets.yaml并修改相应的路径。
  • 您可以根据 中文件的格式准备自己的数据集./datasets
  • 如果使用UVO数据集,则需要处理以下json./datasets/Preprocess/uvo_process.py
  • 您可以参考一下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}
}