图像生成 AI

Fooocus:基于AI技术的图像生成软件

Fooocus是一款图像生成软件,和Midjourney一样简单但提供了更多高级功能。

2023年12月21日
fooocus-1
分享
非精选的随机结果只需输入两个单词“森林精灵”即可
没有任何参数调整,没有任何奇怪的提示标签。
另请参阅此处、此处此处非精选泛化和多样性测试。
在整个开源社区中,只有 Fooocus 的非精选能够达到这种质量水平。

Fooocus 是一款图像生成软件(基于Gradio)。

Fooocus 是对 Stable Diffusion 和 Midjourney 设计的重新思考:

  • 学习自Stable Diffusion,该软件是离线、开源、免费的。
  • 从Midjourney了解到,不需要手动调整,用户只需关注提示和图像即可。

Fooocus 包含并自动化了许多内部优化和质量改进。用户可以忘记所有那些困难的技术参数,只享受人与计算机之间的交互,“探索新的思维媒介,扩展人类的想象力”。

Fooocus 简化了安装。在按下“下载”和生成第一张图像之间,所需的鼠标点击次数严格限制在 3 次以内。最低 GPU 内存要求为 4GB (Nvidia)。

安装Fooocus

从Midjourney来到Fooocus

使用 Fooocus 和 Midjourney 一样简单(可能比 Midjourney 更容易)——但这并不意味着我们缺乏功能。

Fooocus 还开发了许多“fooocus独有的”功能,供高级用户获得完美的结果。单击此处浏览高级功能。

下载

Windows

您可以直接下载Fooocus:

>>>点击此处下载<<<

下载文件后,请将其解压缩,然后运行“run.bat”。

fooocus-2

第一次启动软件时,它会自动下载模型:

  1. 它将根据不同的预设将默认模型下载到文件夹“Fooocus\models\checkpoints”。如果您不想自动下载,可以提前下载。
  2. 注意,如果你使用inpaint,第一次修复图像时,它会从这里下载Fooocus自己的inpaint控制模型,文件为“Fooocus\models\inpaint\inpaint_v26.fooocus.patch”(该文件的大小为1.28GB)。

在 Fooocus 2.1.60 之后,您还有run_anime.batrun_realistic.bat。它们是不同的模型预设(并且需要不同的模型,但它们会自动下载)。请查看此处了解更多详细信息

fooocus-3

如果您已经有这些文件,可以将它们复制到上述位置以加快安装速度。

请注意,如果您看到"MetadataIncompleteBuffer" 或 "PytorchStreamReader",则您的模型文件已经损坏。请重新下载模型。

下面是在一台具有16GB 系统内存6GB 显存的相对低端的笔记本电脑(Nvidia 3060 笔记本电脑)上进行的测试。这台机器上的速度约为每次迭代花费 1.35 秒。令人印象相当深刻——如今配备 3060 的笔记本电脑的价格已经很亲民了。

fooocus-4

此外,最近许多其他软件报告称 Nvidia 532 以上的驱动程序有时比 Nvidia 驱动程序 531 慢 10 倍。如果您的生成时间很长,请考虑下载Nvidia Driver 531 LaptopNvidia Driver 531 Desktop

请注意,最低要求是4GB Nvidia GPU 内存8GB 系统内存。这需要使用 Microsoft 的虚拟交换技术,在大多数情况下,Windows 安装会自动启用该技术,因此您通常不需要对此执行任何操作。但是,如果您不确定,或者您手动将其关闭(真的有人会这样做吗?),或者如果您看到任何“RuntimeError:CPUAllocator”字样,您可以在此处启用它:

fooocus-5

如果您使用类似的设备但仍然无法达到可接受的性能,请发布问题。

请注意,不同平台的最低要求是不同的。

另请参阅此处的常见问题和疑难解答。

Colab

(上次测试时间 - 2023 年 12 月 12 日)

在 Colab 中,对 Fooocus 的 Default/Anime/Realistic 版本,您可以将最后一行修改为!python entry_with_update.py --share!python entry_with_update.py --preset anime --share!python entry_with_update.py --preset realistic --share

请注意,此 Colab 默认情况下会禁用精简器,因为免费 Colab 的资源相对有限(并且一些“大”功能(如图像提示)可能会导致免费 Colab 断开连接)。我们需要确保基本的文本到图像始终可以在免费 Colab 上运行。

Linux(使用 Anaconda)

如果你想使用Anaconda/Miniconda,你可以

git clone https://github.com/lllyasviel/Fooocus.git
cd Fooocus
conda env create -f environment.yaml
conda activate fooocus
pip install -r requirements_versions.txt

然后下载模型:将默认模型下载到文件夹“Fooocus\models\checkpoints”。或者让 Fooocus使用启动器自动下载模型:

conda activate fooocus
python entry_with_update.py

或者,如果您想打开远程端口,请使用

conda activate fooocus
python entry_with_update.py --listen

Fooocus 的 Anime/Realistic 版本使用python entry_with_update.py --preset animepython entry_with_update.py --preset realistic

Linux(使用Python Venv)

你的 Linux 需要安装Python 3.10,假设你的 Python 可以在 venv 中使用命令python3调用,你可以

git clone https://github.com/lllyasviel/Fooocus.git
cd Fooocus
python3 -m venv fooocus_env
source fooocus_env/bin/activate
pip install -r requirements_versions.txt

有关模型下载,请参阅上述部分。您可以通过以下方式启动该软件:

source fooocus_env/bin/activate
python entry_with_update.py

或者,如果您想打开远程端口,请使用

source fooocus_env/bin/activate
python entry_with_update.py --listen

Fooocus 的 Anime/Realistic 版本使用python entry_with_update.py --preset animepython entry_with_update.py --preset realistic

Linux(使用本机系统的Python)

如果您知道自己在做什么,并且您的 Linux 已经安装了Python 3.10,并且您的 Python 可以使用命令python3调用(以及使用pip3调用 Pip ),那么您可以

git clone https://github.com/lllyasviel/Fooocus.git
cd Fooocus
pip3 install -r requirements_versions.txt

有关模型下载,请参阅上述部分。您可以通过以下方式启动该软件:

python3 entry_with_update.py

或者,如果您想打开远程端口,请使用

python3 entry_with_update.py --listen

Fooocus 的 Anime/Realistic 版本使用python entry_with_update.py --preset animepython entry_with_update.py --preset realistic

Linux(AMD GPU)

请注意,不同平台的最低要求是不同的。

与上述说明相同。您需要将torch更改为AMD版本

pip uninstall torch torchvision torchaudio torchtext functorch xformers
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.6

AMD 并未经过深入测试。AMD 支持处于测试阶段。

Fooocus 的 Anime/Realistic 版本使用python entry_with_update.py --preset animepython entry_with_update.py --preset realistic

Windows(AMD GPU)

请注意,不同平台的最低要求是不同的。

与 Windows 相同。下载软件,编辑run.bat

.\python_embeded\python.exe -m pip uninstall torch torchvision torchaudio torchtext functorch xformers -y
.\python_embeded\python.exe -m pip install torch-directml
.\python_embeded\python.exe -s Fooocus\entry_with_update.py --directml
pause

然后运行run.bat​​。

AMD 并未经过深入测试。AMD 支持处于测试阶段。

对于 AMD,Fooocus 的 Anime/Realistic 版本使用python entry_with_update.py --directml --preset animepython entry_with_update.py --directml --preset realistic

Mac

请注意,不同平台的最低要求是不同的。

Mac 没有经过深入测试。以下是使用 Mac 的非官方指南。有问题可以在这里讨论。

您可以在Apple Mac 芯片(M1 或 M2)和 macOS“Catalina”或更新版本的系统上安装 Fooocus。Fooocus 通过PyTorch MPS 设备加速在 Apple 芯片的计算机上运行。Mac 芯片的计算机不配备专用显卡,因此与配备专用显卡的计算机相比,图像处理时间显着延长。

  1. 每晚安装 conda 包管理器和 pytorch。请阅读 Apple 开发人员指南上的 在 Mac 上加速 PyTorch 训练。确保 pytorch 能够识别您的 MPS 设备。
  2. 打开 macOS 终端应用程序并使用git clone https://github.com/lllyasviel/Fooocus.git下载仓库。
  3. 进入 Fooocus 目录cd Fooocus.
  4. 创建一个新的 conda 环境,conda env create -f environment.yaml.
  5. 激活您的新 conda 环境,conda activate fooocus.
  6. 安装 Fooocus 所需的软件包pip install -r requirements_versions.txt.
  7. 运行 python entry_with_update.py启动 Fooocus。(某些 Mac M2 用户可能需要python entry_with_update.py --disable-offload-from-vram加快模型加载/卸载速度。)首次运行 Fooocus 时,它将自动下载 Stable Diffusion SDXL 模型,并且会花费大量时间,具体取决于您的互联网连接。

Fooocus 的 Anime/Realistic 版本使用python entry_with_update.py --preset animepython entry_with_update.py --preset realistic

下载以前的版本

请参阅此处的指南。

故障排除

请参阅此处的常见问题。

默认型号

考虑到不同的目标,Fooocus的默认模型和配置是不同的:

任务视窗Linux 参数主要型号精炼师配置一般的运行.batjuggernautXL v6_RunDiffusion不曾用过这里实际的运行现实.bat--预设现实现实库存照片不曾用过这里日本动画片运行动画.bat--预设动画蓝铅笔_v50dreamharper_v8 (SD1.5)这里

请注意,下载是自动的 - 如果互联网连接正常,您无需执行任何操作。但是,如果您已经有(或从其他地方移动它们),则可以手动下载它们。

“隐藏”技巧列表

下面的东西已经在软件内部了,用户不需要对这些做任何事情

  1. 基于GPT2的提示扩展为动态风格“Fooocus V2”。(类似于 Midjourney 的隐藏预处理和“原始”模式,或 LeonardoAI 的 Prompt Magic)。
  2. 本机精炼器在一个 k 采样器内进行交换。优点是,现在细化器模型可以重用从 k 采样收集的基础模型动量(或 ODE 的历史参数),以实现更一致的采样。在Automatic1111的高分辨率修复和ComfyUI的节点系统中,基础模型和细化器使用两个独立的k采样器,这意味着动量被大量浪费,并且采样连续性被破坏。Fooocus 使用自己先进的 k 扩散采样,确保精炼机设置中的无缝、原生和连续交换。(8 月 13 日更新:实际上,几天前我与 Automatic1111 讨论过这个问题,似乎“单个 k-sampler 内的本机精炼器交换”已合并到 webui 的 dev 分支中。太棒了!)
  3. ADM 负面指导。由于 XL Base 的最高分辨率级别没有交叉注意力,因此 XL 最高分辨率级别的正负信号在 CFG 采样过程中无法获得足够的对比度,导致结果在某些情况下看起来有点塑料或过于平滑。幸运的是,由于XL的最高分辨率级别仍然以图像长宽比(ADM)为条件,因此我们可以修改正/负侧的ADM,以补偿最高分辨率级别中CFG对比度的不足。(8 月 16 日更新,IOS 应用程序Drawing Things将支持 Negative ADM Guidance。太棒了!)
  4. 我们参照“使用自注意力指导提高扩散模型的样本质量”第 5.1 节实现了一个精心调整的变体。权重设置得很低,但这是Fooocus的最终保证,以确保XL永远不会产生过于光滑或塑料的外观(示例在此处)。这几乎可以消除所有即使在 ADM 指导为负的情况下 XL 仍然偶尔会产生过于平滑结果的情况。(2023 年 8 月 18 日更新,SAG 的高斯内核更改为各向异性内核,以实现更好的结构保留和更少的伪影。)
  5. 我们稍微修改了样式模板并添加了“电影默认版本”。
  6. 我们测试了“sd_xl_offset_example-lora_1.0.safetensors”,似乎当lora权重低于0.5时,结果总是比没有lora的XL更好。
  7. 采样器的参数经过仔细调整。
  8. 由于 XL 使用位置编码来生成分辨率,因此由多个固定分辨率生成的图像看起来比任意分辨率生成的图像要好一些(因为位置编码不太擅长处理训练期间看不到的 int 数字)。这表明 UI 中的分辨率可能会被硬编码以获得最佳结果。
  9. 针对两个不同文本编码器的单独提示似乎没有必要。基本模型和细化器的单独提示可能有效,但效果是随机的,我们不会实现这一点。
  10. DPM 系列似乎非常适合 XL,因为 XL 有时会生成过于平滑的纹理,但 DPM 系列有时会生成过于密集的纹理细节。它们的联合效应看起来是中性的,并且对人类的感知很有吸引力。
  11. 精心设计的系统,用于平衡多种风格并快速扩展。
  12. 使用automatic1111的方法来规范提示增强。当用户直接从 civitai 复制提示时,这会显著改善结果。
  13. 精炼师的联合互换系统现在也无缝支持img2img和upscale。
  14. 当 CFG 大于 10 时,CFG 比例和 TSNR 校正(针对 SDXL 进行调整)。

定制化

第一次运行 Fooocus 后,将在Fooocus\config.txt生成一份配置文件。可以编辑该文件以更改模型路径或默认参数。

例如,编辑后的文件Fooocus\config.txt(该文件将在首次启动后生成)可能如下所示:

{
  "path_checkpoints": "D:\\Fooocus\\models\\checkpoints",
  "path_loras": "D:\\Fooocus\\models\\loras",
  "path_embeddings": "D:\\Fooocus\\models\\embeddings",
  "path_vae_approx": "D:\\Fooocus\\models\\vae_approx",
  "path_upscale_models": "D:\\Fooocus\\models\\upscale_models",
  "path_inpaint": "D:\\Fooocus\\models\\inpaint",
  "path_controlnet": "D:\\Fooocus\\models\\controlnet",
  "path_clip_vision": "D:\\Fooocus\\models\\clip_vision",
  "path_fooocus_expansion": "D:\\Fooocus\\models\\prompt_expansion\\fooocus_expansion",
  "path_outputs": "D:\\Fooocus\\outputs",
  "default_model": "realisticStockPhoto_v10.safetensors",
  "default_refiner": "",
  "default_loras": [["lora_filename_1.safetensors", 0.5], ["lora_filename_2.safetensors", 0.5]],
  "default_cfg_scale": 3.0,
  "default_sampler": "dpmpp_2m",
  "default_scheduler": "karras",
  "default_negative_prompt": "low quality",
  "default_positive_prompt": "",
  "default_styles": [
    "Fooocus V2",
    "Fooocus Photograph",
    "Fooocus Negative"
  ]
}

许多其他密钥、格式和示例都在Fooocus\config_modification_tutorial.txt文件中(该文件将在首次启动后生成)。

在真正更改配置之前请三思。如果您发现自己搞坏了,只需删除Fooocus\config.txt。Fooocus 将恢复默认状态。

一个更安全的方法就是尝试“run_anime.bat”或“run_realistic.bat” - 它们应该已经足以胜任不同的任务。

所有命令行参数

entry_with_update.py [-h] [--listen [IP]] [--port PORT]
                     [--disable-header-check [ORIGIN]]
                     [--web-upload-size WEB_UPLOAD_SIZE]
                     [--external-working-path PATH [PATH ...]]
                     [--output-path OUTPUT_PATH] [--temp-path TEMP_PATH]
                     [--cache-path CACHE_PATH] [--in-browser]
                     [--disable-in-browser] [--gpu-device-id DEVICE_ID]
                     [--async-cuda-allocation | --disable-async-cuda-allocation]
                     [--disable-attention-upcast] [--all-in-fp32 | --all-in-fp16]
                     [--unet-in-bf16 | --unet-in-fp16 | --unet-in-fp8-e4m3fn | --unet-in-fp8-e5m2]
                     [--vae-in-fp16 | --vae-in-fp32 | --vae-in-bf16]
                     [--clip-in-fp8-e4m3fn | --clip-in-fp8-e5m2 | --clip-in-fp16 | --clip-in-fp32]
                     [--directml [DIRECTML_DEVICE]] [--disable-ipex-hijack]
                     [--preview-option [none,auto,fast,taesd]]
                     [--attention-split | --attention-quad | --attention-pytorch]
                     [--disable-xformers]
                     [--always-gpu | --always-high-vram | --always-normal-vram | --always-low-vram | --always-no-vram | --always-cpu]
                     [--always-offload-from-vram] [--disable-server-log]
                     [--debug-mode] [--is-windows-embedded-python]
                     [--disable-server-info] [--share] [--preset PRESET]
                     [--language LANGUAGE] [--disable-offload-from-vram]
                     [--theme THEME] [--disable-image-log]

高级功能

单击此处浏览高级功能。

Fooocus 也有很多社区派生版本,就像 SD-WebUI 的vladmandic/automaticanapnoe/stable-diffusion-webui-ux一样,适合想要尝试的热心用户!

Fooocus 的派生版本:

fenneishi/Fooocus-Control
runew0lf/RuinedFooocus
MoonRide303/Fooocus-MRE
metcai/SimpleSDXL
等等...

另请参阅关于派生和派生版本升级

本地化/翻译/I18N

您可以将 json 文件放入language文件夹中来翻译用户界面。

例如,以下是Fooocus/language/example.json的内容:

{
  "Generate": "生成",
  "Input Image": "入力画像",
  "Advanced": "고급",
  "SAI 3D Model": "SAI 3D Modèle"
}

如果添加--language example参数,Fooocus 将读取Fooocus/language/example.json并翻译 UI。

例如,您可以将 Windows 的run.bat的结束行编辑为

.\python_embeded\python.exe -s Fooocus\entry_with_update.py --language example

或者run_anime.bat的结束行编辑为

.\python_embeded\python.exe -s Fooocus\entry_with_update.py --language example --preset anime

或者run_realistic.bat的结束行编辑为

.\python_embeded\python.exe -s Fooocus\entry_with_update.py --language example --preset realistic

您可以创建自己的文件,例如Fooocus/language/jp.jsonFooocus/language/cn.json,然后使用标志--language jp--language cn。显然,这些文件现在并不存在。

请注意,如果没有指定--language并且Fooocus/language/default.json同时存在,Fooocus 将始终加载Fooocus/language/default.json进行翻译。默认情况下,该文件Fooocus/language/default.json不存在。

更多文章

让我们使用名为GPT爬虫的新开源项目在短短两分钟内创建一个自定义 GPT。

2023年12月20日 · GPT 爬虫
screenshot-to-code
这个简单的应用程序可以将屏幕截图转换为代码(HTML/Tailwind CSS、React、Vue 或 Bootstrap)。
2023年12月18日 · GPT-4