此存储库托管以下各项的官方实现:
Xingqian Xu, Atlas Wang, Eric Zhang, Kai Wang, and Humphrey Shi, 多功能扩散:文本、图像和变体都在一个扩散模型中, Paper arXiv链接.
器==0.8.0
库inference.py
--fp16
inference.py
我们构建了通用扩散(VD),这是第一个统一的多流多模态扩散框架,作为迈向通用生成AI的一步。多功能扩散可以原生支持图像到文本、图像变体、文本到图像和文本变体,并且可以进一步扩展到其他应用,例如语义式解缠、图像-文本双引导生成、潜在图像到文本到图像编辑等。未来的版本将支持更多模式,如语音、音乐、视频和 3D。
通用扩散的单个流包含一个VAE、一个扩散器和一个上下文编码器,因此在一种数据类型(例如图像)和一种上下文类型(例如文本)下处理一项任务(例如,文本到图像)。多功能扩散的多流结构如下图所示:
根据Versatile Diffusion,我们进一步提出了一个通用的多流多模态框架,其中包含包含三层(即全局层,数据和上下文层)的VAE,上下文编码器和扩散器。为了在此框架中涉及新的多模式任务,我们提出了以下要求:
我们使用Laion2B-en和自定义数据过滤器作为我们的主要数据集。由于Laion2B非常大,典型的训练小于一个时期,我们通常不需要下载完整的数据集进行训练。VD也是如此。
Laion2B 的代码目录:
├── data │ └── laion2b │ └── data │ └── 00000.tar │ └── 00000.parquet │ └── 00000_stats.jsom_ │ └── 00001.tar │ └── ...
这些压缩数据是使用 img2dataset API 官方 github 链接生成的。
conda create -n versatile-diffusion python=3.8 conda activate versatile-diffusion conda install pytorch==1.12.1 torchvision=0.13.1 -c pytorch pip install -r requirement.txt
有用的预训练模型可以从HuggingFace链接下载。预训练文件夹应包含以下文件:
├── pretrained │ └── kl-f8.pth │ └── optimus-vae.pth │ └── vd-four-flow-v1-0.pth (originally named vd-official.pth) │ └── vd-four-flow-v1-0-fp16.pth
以 -fp16 命名的模型是具有 float16 参数并相应地用于评估的模型。与 float32 型号相比,float16 型号的尺寸只有其一半。
--fp16
请参阅此文档下载 VD-DC 和基准模型。
下面是单行 shell 命令,用于评估具有多个 GPU 的 VD 四流模型。
python main.py --config vd_official_eval --gpu 0 1 2 3 4 5 6 7 --eval 99999
有关相应的评估配置,请参见。配置中有有用的信息。你可以轻松自定义它并运行自己的批量评估。
./configs/experiment/vd_official_eval.yaml
对于上述命令,你还需要:
./pretrained
./log/vd_nodataset/99999_eval
此外,我们还提供了一个简单的评估脚本,支持本文中提到的所有应用程序。示例如下:
inference.py
python inference.py --gpu 0 --app text-to-image --prompt "a dream of a village in china, by Caspar David Friedrich, matte painting trending on artstation HQ" --seed 0 --save log/text-to-image.png python inference.py --gpu 0 --app image-variation --image assets/space.jpg --seed 8 --save log/image-variation.png --coloradj simple python inference.py --gpu 0 --app image-to-text --image assets/space.jpg --seed 8 python inference.py --gpu 0 --app text-variation --prompt "a pink car" --seed 8 python inference.py --gpu 0 --app disentanglement --image assets/vermeer.jpg --seed 8 --save log/disentanglement.png --coloradj simple --dislevel -2 python inference.py --gpu 0 --app dual-guided --image assets/benz.jpg --prompt "cyberpunk 2077" --seed 22 --save log/dual-guided.png --coloradj none --dgmixing 0.7 python inference.py --gpu 0 --app i2t2i --image assets/ghibli.jpg --nprompt "white house" --pprompt "tall castle" --seed 20 --save log/i2t2i.png --coloradj simple
你还可以通过向每个命令添加标签来使用 float16 进行推理。它使用半大小的预训练模型将运行速度加倍。你还需要将转换器更新到 4.24.0。下面是一个使用 float16 的示例命令:
--fp16
vd-***-fp16.pth
python inference.py --gpu 0 --app image-variation --image assets/space.jpg --seed 8 --save log/image-variation.png --coloradj simple --fp16
有关基线实验和VD-DC实验,请参阅此文档
即将推出
文本到图像
图像变化
具有语义焦点的图像变化
双导向
@article{xu2022versatile, title = {Versatile Diffusion: Text, Images and Variations All in One Diffusion Model}, author = {Xingqian Xu, Zhangyang Wang, Eric Zhang, Kai Wang, Humphrey Shi}, year = 2022, url = {https://arxiv.org/abs/2211.08332}, eprint = {2211.08332}, archiveprefix = {arXiv}, primaryclass = {cs.CV} }
部分代码重新组织/重新实现来自以下存储库的代码:LDM官方Github,它也面向DDPM官方Github。