DALL-E 自制 在这篇文章中,我们将研究如何通过运行您自己的 AI 图像生成器进行设置。您需要一个带有支持 CUDA 的卡的 Linux 系统才能完成这项工作。我确实得到了在 Windows 中工作的基本 txt-2img 脚本。不幸的是,对于 7 月发布的 ,您需要 才能索引 openimages 数据集,该数据集仅在 Linux 上可用。 对我来说工作得很好。 检索增强扩散模型 scann WSL 以下是我收集到的您需要的大致内容: Linux(WSL 很好) 11.3 CUDA 图形 = 32GB 内存 50GB 磁盘空间(~30GB 没有 openimages) 3xxx 系列卡(我只是在这里猜测。这都是用 3090 FE 完成的) 潜扩散 在浏览 AI 子版块时,我偶然发现了 存储库。一些帖子提到了它,我不知道它是什么,所以我去谷歌搜索。 潜在扩散 我不是计算机科学家、数学家,也不是真正理解这里发生的事情所需的任何东西。关于新 RAD 模型的论文是可以理解和有趣的,但除此之外我还没有做太多的研究。 文本到图像与 RAD 潜在扩散有两种可能的图像生成技术。我们将安装并查看两者。 我相信我们将首先设置的 txt2-img 模型是我们习惯于使用其他在线图像生成工具的模型——它使超低分辨率图像剪辑认为是一个很好的即时匹配,并对其进行去噪和放大。 RAD 模型使用可配置的图像数据库作为参考,并像我们习惯的那样进行扩散。这似乎意味着它作为通用生成器不太好,但可以与您可以创建的特定训练集一起使用。我将来会试试这个。 RAD 还可以生成 768X768 的图像,令人印象深刻。 安装说明 文字转图像 确保你已经安装了 并且 在你的 shell 中工作。你可以 CUDA 11.3 conda 在这里得到康达 ,以免你以后陷入依赖地狱。我通过 做到了这一点,但 conda 也可以工作。 现在(重新)安装 Pytorch pip 将 repo 克隆到具有大量可用空间的驱动器 进入 repo 并运行: cd conda env create -f environment.yaml conda activate ldm 这将设置初始环境。如果您稍后遇到 Pytorch 错误并需要重新安装它,请返回 environment.yaml 并使用正确的包版本重新安装。 下载模型,只要您的 Torch 依赖项设置正确,您就可以开始使用了。 mkdir -p models/ldm/text2img-large/ wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt 您现在应该可以使用以下方法对图像进行采样: python scripts/txt2img.py --prompt "my cool image" 确保查看您可以在自述文件中设置的选项。 您可以使用此 bash 脚本来更轻松地从 shell 运行所有内容。您可以将其包含在您的 文件中并重新打开您的 shell。确保更改 3 条路径以满足您的需要。稍后我们将介绍 PLMS。 ~/.bashrc function txt2img() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --plms --n_iter 4 --ddim_eta 0.0 else python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --n_iter 4 --ddim_eta 0.0 fi } 图像默认为 512X512。您可以使用 来放大图像,效果非常好。 This Jupiter Notebook 故障排除 如果您在运行命令时遇到 CUDA 内存错误,请尝试减小批处理大小。使用 排除故障/查看内存使用情况。 htop 如果使用 WSL,请确保您的所有 RAM 都可用于 linux。 如果您遇到与 torch 相关的错误,您可能需要重新安装 Pytorch。这可能会导致软件包出现其他问题。检查 environment.yaml 并使用 和/或 手动安装正确的软件包版本(我都做了,但不确定是哪个使一切正常) pip conda RDM 您可以 阅读有关 RDM 的更多信息。如前所述,据我了解,它本质上将图像数据库与剪辑描述与现有的扩散过程相结合。这部分需要更长的时间才能运行。 在此处 请注意,这个模型,尤其是在使用 openimages 训练时,最擅长重建真实的事物,而且看起来还不是很好(目前),并且可以从扩散模型中创建我们习惯的奇怪图像。 首先让 Text-to-Image 模型正常工作 安装新包并下载训练模型。 pip install transformers==4.19.2 scann kornia==0.6.4 torchmetrics==0.6.0 pip install git+https://github.com/arogozhnikov/einops.git mkdir -p models/rdm/rdm768x768/ wget -O models/rdm/rdm768x768/model.ckpt https://ommer-lab.com/files/rdm/model.ckpt 测试到目前为止一切正常 python scripts/knn2img.py --prompt "I'm a computer" 如果一切顺利,您应该会在 shell 中看到成功文本。现在我们需要下载所有图像索引/模型。 openimages zip 为 11GB。 ArtBench 数据非常小。 mkdir -p data/rdm/retrieval_databases wget -O data/rdm/retrieval_databases/artbench.zip https://ommer-lab.com/files/rdm/artbench_databases.zip wget -O data/rdm/retrieval_databases/openimages.zip https://ommer-lab.com/files/rdm/openimages_database.zip unzip data/rdm/retrieval_databases/artbench.zip -d data/rdm/retrieval_databases/ unzip data/rdm/retrieval_databases/openimages.zip -d data/rdm/retrieval_databases/ mkdir -p data/rdm/searchers wget -O data/rdm/searchers/artbench.zip https://ommer-lab.com/files/rdm/artbench_searchers.zip unzip data/rdm/searchers/artbench.zip -d data/rdm/searchers 我们现在已经准备好使用 Artbench 模型(在我有限的测试中工作得很好),但我们真正想要的是使用大量的 openimages 模型作为我们的参考。我们下载了数据,但我们需要创建索引。 如果要测试 Artbench 数据库,请运行 python scripts/knn2img.py --prompt "A blue pig" --use_neighbors --knn 20 开放图像索引 除非你有一台超级计算机,否则 python 多处理中糟糕的内存管理(据我所知)将阻止我们使用我们使用 repo 中的脚本解压缩的 4 个文件来索引它们。我尝试过的所有其他方法都会耗尽内存。 幸运的是,我们只需要连接文件。如果您愿意,您可以在之后删除旧的零件文件。我们还需要将零件文件移出 openimages 文件夹。 cd data/rdm/retrieval_databases/openimages/ cat 2000000x768_part1.npz 2000000x768_part2.npz 2000000x768_part3.npz 2000000x768_part4.npz > 2000000x768.npz mv 2000000x768_* ~/temp cd ../../../../ 现在,当我们运行训练脚本时,我们不应该耗尽内存。我认为这是他们在训练脚本中的多文件功能中的一些问题。 python scripts/train_searcher.py 我们需要在 中更改批处理大小,这样我们就不会耗尽 GPU 内存。您可能需要降低到 1,但我可以在 3090 上设置为 2。 scripts/knn2img.py 在编辑器中打开 scripts/knn2img.py 转到第 243 行或找到“n_samples” 将默认值更改为 1 或 2 并保存 您也可以使用命令行参数执行此操作,但由于它对我不起作用,我想更改默认值。请注意,如果您将来更新存储库,这可能会被覆盖。 现在我们可以使用 openimages 数据库生成 RDM 图像: python scripts/knn2img.py --prompt "A blue pig" --database openimages --use_neighbors --knn 20 这是一个 脚本,可以方便地运行它。同样,请确保更改 3 条路径以满足您的需求: ~/.bashrc function diffuse() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 --plms else python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 fi } 加快速度 您还可以通过创建文件(在本例中为 )并使用 参数将脚本指向它来批量运行提示,如下所示 prompts.txt –from-file python scripts/knn2img.py --database openimages --from-file ./prompts.txt --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 示例 prompts.txt prompt 1 prompt 2 prompt 3 如果您运行大量查询,这应该可以节省大量时间,因为模型只加载一次。文本到图像模型没有此选项。 初始测试和 PLMS 以下是打开和关闭 PLMS 的两种模型的一些初始结果。 PLMS 应该让事情运行得更快。目前,我们不会测量速度的提高,但会主观地查看图像质量/结果。 由于 RDM 模型一次只能为我的系统制作 2 张照片,因此我为该模型包含了两张照片而不是网格。 我几乎肯定会在未来进行更具体的测试,这些模型将包含在未来的比较帖子中。 山上的木屋,风景摄影 文字转图片 没有plms 带plms RDM 没有plms 带plms 一个紫色停车标志 文字转图片 没有plms 带plms RDM 没有plms 带plms 狐狸窝,数字艺术 文字转图片 没有plms 带plms RDM 没有plms 带plms 赢得大比赛,获奖摄影 文字转图片 没有plms 带plms RDM 没有plms 带plms 一辆在沙丘上行驶的跑车 文字转图片 没有plms 带plms RDM 没有plms 带plms 一个可以调用你自己的图像生成器 有了它 - 没有更多的积分或每月限制,只需您自己的纯 AI 图像生成。一旦我弄清楚了一些调整设置并创建了我自己的图像训练数据库,我们可能会再次讨论这个问题。 希望通过一些调整和新版本/模型,这将更接近 DALL-E 的 WOW 因素。 也在 发布。 这里