请注意,我已经推出了“梦工厂”,这是对此的重大升级。它有一个(可选)GUI、真正的同步多 GPU 支持、具有完整 EXIF 元数据支持的集成图库以及许多其他新功能。
我放弃了 VQGAN 和 Disco Diffusion 支持,转而专注于稳定扩散,因此,如果您想要 VQGAN 和/或 Disco Diffusion,您现在应该坚持使用此选项。否则我鼓励大家迁移到梦工厂!我将继续修补此存储库上的错误修复,但我可能不会继续添加新功能。
用于在本地自动创建大批量人工智能生成的艺术品。让您的 GPU 全天候 24/7 地制作人工智能生成的艺术作品,并能够自动化结合用户选择的主题、风格/艺术家等的大型提示队列!示例图片后提供了有关哪些型号可用的更多信息。
我通过此过程创建的一些示例图像(这些是经过精心挑选和锐化的):
请注意,我没有创建或训练该项目中使用的模型,也没有参与原始编码。我只是修改了原始的 colab 版本,以便它们可以在本地运行,并添加了一些对自动化的支持。当前支持的模型,及其原始实现的链接:
您需要 Nvidia GPU,最好有足够的 VRAM。 12GB VRAM 足以支持 512x512 输出图像,具体取决于型号和设置,8GB 应该足以支持 384x384(8GB 应被视为合理的最小值!)。要生成 1024x1024 图像,您需要 ~24GB 或更多 VRAM。生成小图像,然后通过 ESRGAN 或其他一些包进行放大也能提供非常好的结果。
它应该可以在 AMD GPU 上运行,但您需要在 Linux 上安装 ROCm 版本的 Pytorch。我没有 AMD GPU 可以放入 Linux 机器中,所以我自己没有测试过。
这些指令在配备 Nvidia 3080 Ti GPU (12GB VRAM) 的 Windows 10 桌面以及配备旧版 Nvidia Tesla M40 GPU (24GB VRAM) 的 Ubuntu Server 20.04.3 系统上进行了测试。
[1]安装Anaconda,打开root终端,创建新环境(并激活):
conda create --name ai-art python=3.9
conda activate ai-art
[2]安装Pytorch:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
请注意,您可以使用此处的在线工具自定义 Pytorch 安装。
[3]安装其他需要的Python包:
conda install -c anaconda git urllib3
pip install transformers keyboard pillow ftfy regex tqdm omegaconf pytorch-lightning IPython kornia imageio imageio-ffmpeg einops torch_optimizer
[4]克隆此存储库并切换到其目录:
git clone https://github.com/rbbrdckybk/ai-art-generator
cd ai-art-generator
请注意,Linux 用户可能需要在克隆命令中将 URL 引起来单引号。
[5]克隆其他所需的存储库:
git clone https://github.com/openai/CLIP
git clone https://github.com/CompVis/taming-transformers
[6]下载默认的VQGAN预训练模型检查点文件:
mkdir checkpoints
curl -L -o checkpoints/vqgan_imagenet_f16_16384.yaml -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fconfigs%2Fmodel.yaml&dl=1"
curl -L -o checkpoints/vqgan_imagenet_f16_16384.ckpt -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fckpts%2Flast.ckpt&dl=1"
请注意,Linux 用户应将curl 命令中的双引号替换为单引号。
[7] (可选)下载其他预训练模型:
额外的型号不是必需的,但可以为您提供更多选择。这是可用的预训练模型的详细列表。
例如,如果您还想要 FFHQ 模型(在面部上训练):
curl -L -o checkpoints/ffhq.yaml -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/2021-04-23T18-19-01-project.yaml?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fconfigs%2F2021-04-23T18-19-01-project.yaml&force"
curl -L -o checkpoints/ffhq.ckpt -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/last.ckpt?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fcheckpoints%2Flast.ckpt"
[8] (可选)测试VQGAN+CLIP:
python vqgan.py -s 128 128 -i 200 -p "a red apple" -o output/output.png
您应该会看到在输出目录中创建了output.png,它应该大致类似于一个苹果。
[9]安装用于 CLIP 引导扩散的软件包(如果您只对 VQGAN+CLIP 感兴趣,您可以跳过从这里到最后的所有内容):
pip install ipywidgets omegaconf torch-fidelity einops wandb opencv-python matplotlib lpips datetime timm
conda install pandas
[10]用于 CLIP 引导扩散的克隆存储库:
git clone https://github.com/crowsonkb/guided-diffusion
git clone https://github.com/assafshocher/ResizeRight
git clone https://github.com/CompVis/latent-diffusion
[11]下载 CLIP 引导扩散所需的模型:
mkdir contentmodels
curl -L -o content/models/256x256_diffusion_uncond.pt -C - "https://openaipublic.blob.core.windows.net/diffusion/jul-2021/256x256_diffusion_uncond.pt"
curl -L -o content/models/512x512_diffusion_uncond_finetune_008100.pt -C - "http://batbot.tv/ai/models/guided-diffusion/512x512_diffusion_uncond_finetune_008100.pt"
curl -L -o content/models/secondary_model_imagenet_2.pth -C - "https://ipfs.pollinations.ai/ipfs/bafybeibaawhhk7fhyhvmm7x24zwwkeuocuizbqbcg5nqx64jq42j75rdiy/secondary_model_imagenet_2.pth"
mkdir contentmodelssuperres
curl -L -o content/models/superres/project.yaml -C - "https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1"
curl -L -o content/models/superres/last.ckpt -C - "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1"
请注意,Linux 用户应再次将curl 命令中的双引号替换为单引号,并将mkdir反斜杠替换为正斜杠。
[12] (可选)测试 CLIP 引导扩散:
python diffusion.py -s 128 128 -i 200 -p "a red apple" -o output.png
您应该会看到在输出目录中创建了output.png,它应该大致类似于一个苹果。
[13] Clone Stable Diffusion 存储库(如果你对 SD 不感兴趣,你可以跳过从这里到最后的所有内容):
git clone https://github.com/rbbrdckybk/stable-diffusion
[14]安装稳定扩散所需的附加依赖项:
pip install diffusers
[15]下载稳定扩散预训练检查点文件:
mkdir stable-diffusionmodelsldmstable-diffusion-v1
curl -L -o stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt -C - "https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt"
如果curl 命令不下载检查点,则它会在登录后被控制。您需要在此处注册(仅需要电子邮件和姓名),然后您可以在此处下载检查点文件。
下载后,您需要将 .ckpt 文件放置在上面创建的目录中,并将其命名为model.ckpt 。
[16] (可选)测试稳定扩散:
测试 SD 的最简单方法是使用!PROCESS = stablediff和单个主题创建一个简单的提示文件。有关详细信息,请参阅example-prompts.txt和下一节。假设您首先创建一个名为test.txt的简单提示文件,您可以通过运行进行测试:
python make_art.py test.txt
如果成功,图像应保存到输出目录(组织到以日期和提示文件命名的子目录中)。
[17]设置 ESRGAN/GFPGAN(如果您不打算升级图像,则可以跳过此步骤和其他所有内容):
git clone https://github.com/xinntao/Real-ESRGAN
pip install basicsr facexlib gfpgan
cd Real-ESRGAN
curl -L -o experiments/pretrained_models/RealESRGAN_x4plus.pth -C - "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth"
python setup.py develop
cd ..
你完成了!
如果您在运行时遇到 GPU VRAM 不足之外的错误,并且有一段时间没有更新您的安装,请尝试更新一些更重要的软件包,例如:
pip install transformers -U
本质上,您只需要创建一个文本文件,其中包含要用于生成图像的主题和样式。如果提示文件中有 5 个主题和 20 种风格,则总共将创建 100 个输出图像(每个主题 20 个风格图像)。
查看example-prompts.txt以了解提示文件的外观。您现在可以忽略除[主题]和[样式]区域之外的所有内容。以“#”开头的行是注释,将被忽略,以“!”开头的行是设置指令,将在下一节中进行解释。现在,只需使用您想要使用的内容修改示例主题和样式即可。
根据您的喜好填充example-prompts.txt后,您只需运行:
python make_art.py example-prompts.txt
根据您的硬件和设置,创建每个图像将需要几秒钟到几个小时(在较旧的硬件上)。如果您可以运行稳定扩散,我强烈推荐它以获得最佳结果 - 无论是速度还是图像质量。
默认情况下,输出图像在output/[当前日期]-[提示文件名]/目录中创建。输出目录将包含每个图像的 JPG 文件,该文件以用于创建它的主题和风格命名。例如,如果您将“骑摩托车的猴子”作为主题之一,并将“毕加索的作品”作为风格,则输出图像将创建为output/[当前日期]-[提示文件名]/a -monkey-on-a-motorcycle-by-picasso.jpg(文件名会根据所使用的进程而略有不同)。
您可以随时按CTRL+SHIFT+P暂停执行(暂停将在当前图像渲染完成后生效)。再次按CTRL+SHIFT+P可取消暂停。如果您在主计算机上运行此程序并且需要暂时使用 GPU 来做其他事情,那么这很有用。如果您更改了提示文件,您还可以按CTRL+SHIFT+R重新加载提示文件(当前工作队列将被丢弃,并且将从提示文件的内容构建一个新的工作队列)。请注意,键盘输入仅适用于 Windows。
默认情况下,用于创建每个图像的设置将作为元数据保存在每个输出 JPG 文件中。您可以使用任何 EXIF 实用程序读回元数据信息,或者只需右键单击 Windows 资源管理器中的图像文件并选择“属性”,然后单击“详细信息”窗格即可。 “注释”字段包含用于创建图像的命令。
指令可以包含在提示文件中,以修改其后的所有提示的设置。这些设置指令是通过将它们放在提示文件的 [subject] 区域内的自己的行上来指定的,格式如下:
![要更改的设置] = [新值]
对于[setting to change] ,有效指令是:
一些例子:
!PROCESS = vqgan
这将设定当前的人工智能图像生成过程。有效选项包括vqgan (用于 VQGAN+CLIP)、扩散(用于 CLIP 引导扩散(Disco 扩散))或stablediff (用于稳定扩散)。
!CUDA_DEVICE = 0
这将强制使用 GPU 0(默认)。如果您有多个 GPU,则很有用 - 您可以运行多个实例,每个实例都有自己的提示文件,指定唯一的 GPU ID。
!WIDTH = 384
!HEIGHT = 384
这会将输出图像大小设置为 384x384。较大的输出大小需要更多的 GPU VRAM。请注意,对于稳定扩散,这些值应为 64 的倍数。
!TRANSFORMER = ffhq
这将告诉 VQGAN 使用 FFHQ 转换器(在面部方面效果更好),而不是默认的(vqgan_imagenet_f16_16384)。您可以按照上面设置说明中的步骤 7 获取 ffhq 转换器以及其他几个转换器的链接。
无论您在此处指定什么,都必须以 .ckpt 和 .yaml 文件的形式存在于检查点目录中。
!INPUT_IMAGE = samples/face-input.jpg
这将使用样本/face-input.jpg(或您指定的任何图像)作为起始图像,而不是默认的随机噪声。输入图像的长宽比必须与输出图像相同,才能获得良好的效果。请注意,与稳定扩散一起使用时,输出图像尺寸将与输入图像相同(您的高度/宽度设置将被忽略)。
!SEED = 42
这将使用 42 作为输入种子值,而不是随机数(默认值)。对于再现性很有用 - 当所有其他参数相同时,使用相同的种子值应该在多次运行中产生相同的图像。设置为无或 -1 以重置为使用随机值。
!INPUT_IMAGE =
将这些值中的任何一个设置为空都会将其恢复为默认值。所以在这个例子中,不会使用起始图像。
!STEPS = 50
将使用稳定扩散时的步骤数(类似于迭代)设置为 50(默认值)。较高的值需要更多时间,并且可能会提高图像质量。与较低的值相比,超过 100 的值很少会产生明显的差异。
!SCALE = 7.5
将使用稳定扩散时的引导比例设置为 7.5(默认值)。较高的值(在某种程度上,超过约 25 结果可能会很奇怪)将导致输出更紧密地遵循您的提示。
!SAMPLES = 1
将使用稳定扩散时的采样次数设置为 1(默认值)。值超过 1 将导致为每个提示创建多个输出图像,每个图像会稍微节省时间。增加此值不需要 GPU VRAM 成本。
!STRENGTH = 0.75
将起始图像的影响设置为 0.75(默认值)。仅在对输入图像使用稳定扩散时相关。有效值介于 0-1 之间,1 对应于输入图像的完全破坏,0 对应于使起始图像完全完好无损。 0.25 到 0.75 之间的值往往会产生有趣的结果。
!SD_LOW_MEMORY = no
使用稳定扩散时,使用 GPU 内存要求低得多的分叉存储库(是/否)?将其设置为yes将切换为使用内存优化版本的 SD,这将允许您使用更少的 GPU 内存创建更高分辨率的图像(512x512 图像应该只需要大约 4GB 的 VRAM)。代价是,与默认的官方存储库相比,推理要慢得多。作为比较:在 RTX 3060 上,默认设置下创建 512x512 图像大约需要 12 秒;当!SD_LOW_MEMORY = yes时,相同的图像需要一分钟多的时间。建议关闭此选项,除非您的 GPU VRAM 低于 8GB,或者想要在升级之前尝试创建更大的图像。
!USE_UPSCALE = no
自动升级使用稳定扩散创建的图像(是/否)?使用 ESRGAN/GFPGAN(请参阅下面的其他设置)。
!UPSCALE_AMOUNT = 2
当!USE_UPSCALE = yes时缩放多少。默认为 2.0x;较高的值需要更多的 VRAM 和时间。
!UPSCALE_FACE_ENH = no
升级时是否使用 GFPGAN(相对于默认 ESRGAN)。 GFPGAN 对于面部可提供最佳结果,但如果用于非面部主体,则可能会提供稍差的结果。
!UPSCALE_KEEP_ORG = no
升级时保留原始未修改的图像(是/否)?如果设置为 no(默认值),原始图像将被删除。如果设置为 yes,原始图像将保存在图像输出文件夹的/original子目录中。
!REPEAT = no
当提示文件中的所有作业完成后,重新启动回到文件顶部(是/否)?默认值为“否”,这将在所有作业完成时终止执行。
TODO:完成设置示例并添加使用提示/示例,文档 random_art.py