SuperAPI AI 工具集

aphantasia

Aphantasia 是一个基于 CLIP 模型和 Lucent 库的文本到图像/视频生成工具集合,采用 FFT/DWT/RGB 参数化方法,无需 GAN。它支持生成高分辨率(全高清/4K 及以上)的详细纹理,可处理复杂查询(文本和/或图像提示),并支持连续模式处理短语列表以生成视频。该项目由 eps696 开发,在 GitHub 上开源。

访问官网

工具介绍

Aphantasia 是一个文本到图像/视频生成工具集合,源自同名艺术作品。它基于 OpenAI 的 CLIP 模型和 Lucent 库,使用 FFT/DWT/RGB 参数化器,无需 GAN 即可生成图像。该项目已更新,将旧的深度估计方法替换为 Depth Anything 2,并在 Python 3.7-3.11 和 PyTorch 1.7.1 至 2.3.1 上测试通过。

主要能力

  • 生成大量详细纹理,类似 deepdream 效果。
  • 支持全高清/4K 及以上分辨率。
  • 支持多种 CLIP 模型。
  • 连续模式处理短语列表(例如为歌词配图)。
  • 支持平移/缩放运动,具有平滑插值。
  • 直接 RGB 像素优化(非常稳定)。
  • 基于 Depth Anything 2 的 3D 外观。
  • 复杂查询:文本和/或图像作为主要提示,可分别设置风格提示和要减去(避免)的主题提示。
  • 可从保存的参数或图像开始/恢复生成过程。

使用方式 安装 CLIP 等依赖后,可通过命令行生成图像。例如,从文本提示生成图像(可设置尺寸):

python aphantasia.py --in_txt "prompt" --size 512

重现图像:

python aphantasia.py --in_img image.jpg

如果 --sync X 参数大于 0,会添加 LPIPS 损失以保持构图与原始图像相似。可以组合文本和图像提示。对于非英语语言,使用 --translate(谷歌翻译)。

设置更具体的查询:

python aphantasia.py --in_txt "good prompt :1 | also good prompt :1 | bad prompt :-0.5"

其他选项:

  • --model M 选择 CLIP 视觉模型:ViT-B/32(默认)、ViT-B/16、RN50、RN50x4、RN50x16、RN101。也可设置 --dualmod 同时使用 ViT-B/32 和 ViT-B/16(推荐)。
  • --dwt 切换到 DWT(小波)生成器而非 FFT。有几种方法,由 --wave X 选择,例如 db2、db3、coif1、coif2 等。
  • --align XX 关于构图(或采样分布):uniform 可能最合适;overscan 可制作半无缝可平铺纹理。
  • --steps N 设置迭代次数。100-200 足够入门;500-1000 会更精细。
  • --samples N 设置每步处理的图像切割(样本)数量。样本越多,可用更少迭代达到类似结果(反之亦然)。200/200 是不错的猜测。注意:GPU 内存主要被此数量消耗(而非分辨率)!
  • --aest X 通过美学损失增强整体可爱度。尝试各种值(可能为负)。
  • --decay X(构图柔和度)、--colors X(饱和度)和 --contrast X 可能有用,尤其对 ResNet 模型(它们容易烧色)。
  • --sharp X 可能有助于增加锐度,如果增加 decay 后图像变得“近视”。它会影响其他颜色参数,最好一起调整!当前默认值:--decay 1.5 --colors 1.8 --contrast 1.1 --sharp 0。
  • --transform X 应用一些增强,通常能提升结果(但更慢)。有几种选择;fast 似乎最优。
  • --optimizer 可以是 adam、adamw、adam_custom 或 adamw_custom。自定义选项更嘈杂但稳定;纯 adam 更柔和,但可能倾向于彩色模糊。
  • --invert 反转整个标准,如果你想检查“完全相反”。
  • --save_pt myfile.pt 保存 FFT/DWT 参数,以便下次查询用 --resume myfile.pt 恢复。也可以直接从图像文件开始/恢复。
  • --opt_step N 告诉每第 N 帧保存(对高迭代有用,默认 1)。
  • --verbose(默认开启)启用一些打印输出和实时图像预览。

一些实验性技巧(效果不太确定):

  • --enforce X 通过增强两个并行样本之间的相似性来添加更多细节。好的起始值约 0.1。
  • --expand X 通过强制前/后样本之间的差异来增加多样性。好的起始值约 0.3。
  • --noise X 向参数添加一些噪声,可能使构图不那么堵塞(在一定程度上)。
  • --macro X(0 到 1)将生成转向更大的形式和更少分散的构图。不应太接近 1,因为质量取决于样本的多样性。
  • --prog 设置渐进学习率(从 lrate 设置的 0.1 倍到 2 倍)。在某些情况下可能促进宏观形式的创建。
  • --lrate 控制学习率。范围相当宽(至少在 0.001 到 10 之间测试过)。

文本到视频 [连续模式] 有两种从文本文件制作视频的方法,逐行处理,一次完成。

新方法:将主题插值为恒定流,具有永久平移/缩放运动和可选的 3D 外观。 从两个文本文件制作视频,逐行处理,每行渲染 100 帧:

python aphantasia.py --in_txt file1.txt --in_txt2 file2.txt --steps 100

从两个短语制作视频,总长度 500 帧:

python aphantasia.py --in_txt "phrase1" --in_txt2 "phrase2" --steps 500

前缀(-pre)、后缀(-post)和“停用词”(--in_txt0)也可以作为短语或文本文件加载。所有文本输入都理解带权重的语法,如 good prompt :1 | also good prompt :1 | bad prompt :-0.5(在一行内)。也可以使用图像作为参考,通过 --in_img 参数。探索其他参数以获得更明确的控制。此方法最适合直接 RGB 像素优化,但也可用于 FFT 参数化:

python aphantasia.py --in_txt file.txt --dwt

要添加 3D 外观,在命令中添加 --depth 0.01。

为每个文本行生成单独的图像(带有序列和训练视频,如上面的单图像模式),然后从这些图像渲染最终视频(在 FFT 空间中混合图像),长度为 duration 秒。 从文本文件制作视频,逐行处理:

python aphantasia.py --in_txt file.txt --steps 100 --duration 10

有 --keep X 参数,控制下一行/图像生成跟随前一个的程度。0 表示随机初始化,越高则越严格保持原始构图。安全值为 1~2(更高的数字可能导致图像卡住)。 从保存的 *.pt 快照目录制作视频(仅插值):

python aphantasia.py --in_pt dir

其他生成器

  • VQGAN from Taming Transformers:颜色/色调/细节的最佳方法之一(尤其是新的 Gumbel-F8 模型);但分辨率相当有限(在 Colab 上最大约 800x600)。
  • CPPN + 导出到 HLSL 着色器:最早的方法之一,可导出到 TouchDesigner、vvvv、Shadertoy 等。
  • SIREN + 傅里叶特征调制:另一种早期方法,本身不太有趣。

适用场景

  • 生成大量详细纹理,类似 deepdream 效果。
  • 制作全高清/4K 及以上分辨率的图像。
  • 为歌词等短语列表配图,生成连续视频。
  • 需要复杂查询(文本和/或图像提示)的图像生成。
  • 从保存的参数或图像恢复生成过程。

限制

  • 需要安装 CLIP 等依赖,具体安装步骤未在资料中提供。
  • 测试环境为 Python 3.7-3.11 和 PyTorch 1.7.1 至 2.3.1,其他版本可能不兼容。
  • GPU 内存消耗主要受 --samples 数量影响,而非分辨率。
  • 某些实验性技巧效果不确定。
  • VQGAN 生成器分辨率有限。

致谢 基于 OpenAI 的 CLIP 模型(论文)。FFT 编码取自 Lucent 库,3D 深度处理由 deKxi 完成。感谢 Ryan Murdock、Jonathan Fly、Hannu Toyryla、@eduwatch2、torridgristle 提供的想法。