[ English | 中文 ]
注意:
尽管我进行了测试,但我仍建议你在正式更新前再测一遍
Fooocus 2.5 包含大量更新,其中多数依赖进行了升级,因此,更新后请不要使用
--skip-pip
. 除非你已经进行过手动更新此外,
groundingdino-py
可能会遇到安装错误, 特别是在中文 windows 环境中, 解决办法参考: issues
和 DescribeImage 一样,GenerateMask 不会作为 task 处理而是直接返回结果
以下面的参数为例,它包含了 ImageEnhance 所需要的主要参数,V1 接口采用和 ImagePrompt 类似的方式将 enhance 控制器拆分成表单形式:
{
"enhance_input_image": "",
"enhance_checkbox": true,
"enhance_uov_method": "Vary (Strong)",
"enhance_uov_processing_order": "Before First Enhancement",
"enhance_uov_prompt_type": "Original Prompts",
"save_final_enhanced_image_only": true,
"enhance_ctrlnets": [
{
"enhance_enabled": false,
"enhance_mask_dino_prompt": "face",
"enhance_prompt": "",
"enhance_negative_prompt": "",
"enhance_mask_model": "sam",
"enhance_mask_cloth_category": "full",
"enhance_mask_sam_model": "vit_b",
"enhance_mask_text_threshold": 0.25,
"enhance_mask_box_threshold": 0.3,
"enhance_mask_sam_max_detections": 0,
"enhance_inpaint_disable_initial_latent": false,
"enhance_inpaint_engine": "v2.6",
"enhance_inpaint_strength": 1,
"enhance_inpaint_respective_field": 0.618,
"enhance_inpaint_erode_or_dilate": 0,
"enhance_mask_invert": false
}
]
}
- enhance_input_image:需要增强的图像,如果是 v2 接口,可以提供一个图像 url,必选
- enhance_checkbox:总开关,使用 enhance image 必须设置为 true
- save_final_enhanced_image_only:图像增强是一个管道作业,因此会产生多个结果图像,使用该参数仅返回最终图像
有三个和 UpscaleVary 相关的参数,其作用是执行增强之前或完成增强之后执行 Upscale 或 Vary
- enhance_uov_method:和 UpscaleOrVary 接口一样,Disabled 是关闭
- enhance_uov_processing_order:在增强之前处理还是处理增强后的图像
- enhance_uov_prompt_type:我也不知道具体作用,对着 WebUI 研究研究🧐
enhance_ctrlnets
元素为 ImageEnhance 控制器对象列表,该列表最多包含 3 个元素,多余会被丢弃。参数和 WebUI 基本一一对应,需要注意的参数是:
- enhance_enabled:参数控制该 enhance 控制器是否工作,如果没有开启的 enhance 控制器,任务会被跳过
- enhance_mask_dino_prompt:该参数必选,表示需要增强的部位,如果该参数为空,即便 enhance 控制器处于开启状态,也会跳过
使用 FastAPI 构建的 Fooocus 的 API。
当前支持的 Fooocus 版本: 2.5.3。
该章节来自 Fooocus 项目。
Fooocus 是一个图像生成软件 (基于 Gradio)。
Fooocus 是对于 Stable Diffusion 和 Midjourney 的重新思考以及设计:
-
我们学习了 Stable Diffusion 的开源、免费、离线运行。
-
我们学习了 Midjourney 的专注,不需要手动调整,专注于描述词以及图像。
Fooocus 包含了许多内部优化以及质量改进。 忘记那些复杂困难的技术参数,享受人机交互带来的想象力的突破以及探索新的思维
可能您已经尝试过通过 Gradio 客户端 来接入 Fooocus,但您可能发现体验并不理想。
Fooocus API 是基于 FastAPI 构建的一系列 REST
接口,它们使得利用 Fooocus 的强大功能变得简单易行。现在,您可以使用任何您喜欢的编程语言来轻松地与 Fooocus 进行交互。
此外,我们还提供了详尽的 API 文档 和丰富的 示例代码,以帮助您快速上手和深入了解如何有效地利用 Fooocus。
现在你可以在 Replicate 上使用 Fooocus-API,在这儿: konieshadow/fooocus-api.
使用预先调整参数的:
我认为这是更简单的方法来体验 Fooocus 的强大
出于某些原因,上述 replicate 上的实例版本无法更新,你可以参照 push-a-model 部署自己专用的实例。
需要 Python >= 3.10,或者使用 conda、venv 创建一个新的环境
硬件需求来源于 Fooocus。 详细要求可以看这里
按照下面的步骤启动一个 app:
conda env create -f environment.yaml
conda activate fooocus-api
然后,执行 python main.py
启动 app ,默认情况下会监听在 http://127.0.0.1:8888
如果是第一次运行,程序会自动处理完成剩余的环境配置、模型下载等工作,因此会等待一段时间。也可以预先配置好环境、下载模型,后面会提到。
和使用 conda 类似,创建虚拟环境,启动 app ,等待程序完成环境安装、模型下载
# windows
python -m venv venv
.\venv\Scripts\Activate
# linux
python -m venv venv
source venv/bin/activate
然后执行 python main.py
如果想要手动配置环境以及放置模型,可以参考下面的步骤
在创建完 conda 或者 venv 环境之后,按照下面的步骤手动配置环境、下载模型
首先,安装 requirements: pip install -r requirements.txt
然后安装 pytorch+cuda: pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu121
更多安装信息在 pytorch 官方的 previous-versions 页面找到。
关于 pytorch 和 cuda 的版本,Fooocus API 使用的是 Fooocus 推荐的版本,目前是 pytorch2.1.0+cuda12.1。如果你是个 "犟种" 非要用其他版本,我测试过也是可以的,不过启动的时候记得加上
--skip-pip
,否则程序会自动替换为推荐版本。
进入 repositories
的目录,下载的模型放到这个目录 repositories\Fooocus\models
。如果你有一个已经安装完成的 Fooocus,在这里查看如何复用模型
这里是一个启动必须下载的模型列表 (也可能不一样如果 启动参数 不同的话):
-
checkpoint: 放到
repositories\Fooocus\models\checkpoints
-
vae_approx: 放到
repositories\Fooocus\models\vae_approx
-
lora: 放到
repositories\Fooocus\models\loras
国内不好下的到 这儿下载, 提取码:
D4Mk
如果你已经有一个安装好的且运行正常的 Fooocus, 推荐的方式是复用模型, 只需要将 Fooocus 根目录下的 config.txt
文件复制到 Fooocus API 的根目录即可。 查看 Customization 获取更多细节.
使用这种方法 Fooocus 和 Fooocus API 会同时存在,独立运行互不干扰。
不要将已安装的 Fooocus 目录复制到 repositories 目录。
开始之前,先安装 NVIDIA Container Toolkit,这是 Docker 可以使用 GPU 的前提。
运行
docker run -d --gpus=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-p 8888:8888 konieshadow/fooocus-api
一个更实用的例子:
mkdir ~/repositories
mkdir -p ~/.cache/pip
docker run -d --gpus=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-v ~/repositories:/app/repositories \
-v ~/.cache/pip:/root/.cache/pip \
-p 8888:8888 konieshadow/fooocus-api
这里把 repositories
和 pip cache
映射到了本地
你还可以添加 -e PIP_INDEX_URL={pypi-mirror-url}
选项来更换 pip 源
0.4.0.0 版本开始,镜像包含完整运行环境,因此只需要根据需要将
models
或者项目根目录进行映射即可 比如:docker run -d --gpus all \ -v /Fooocus-API:/app \ -p 8888:8888 konieshadow/fooocus-api
-h, --help
显示本帮助并退出--port PORT
设置监听端口,默认:8888--host HOST
设置监听地址,默认:127.0.0.1--base-url BASE_URL
设置返回结果中的地址,默认是: http://host:port--log-level LOG_LEVEL
Uvicorn 中的日志等级,默认:info--skip-pip
跳过启动时的 pip 安装--preload-pipeline
启动 http server 之前加载 pipeline--queue-size QUEUE_SIZE
工作队列大小,默认是 100 ,超过队列的请求会返回失败--queue-history QUEUE_HISTORY
保留的作业历史,默认 0 即无限制,超过会被删除,包括生成的图像--webhook-url WEBHOOK_URL
通知生成结果的 webhook 地址,默认为 None--persistent
持久化历史记录到SQLite数据库,默认关闭--apikey APIKEY
设置 apikey 以启用安全api,默认值:无
从 v0.3.25 开始, Fooocus 的命令行选项也被支持,你可以在启动时加上 Fooocus 支持的选项
比如(需要更大的显存):
python main.py --all-in-fp16 --always-gpu
完成的 Fooocus 命令行选项可以在这儿找到。
更早的日志可以在 release page 找到
你可以在这里找到所有的 API 细节
This repository is licensed under the GUN General Public License v3.0
The default checkpoint is published by RunDiffusion, is licensed under the CreativeML Open RAIL-M.
or, you can find it here
感谢所有为改进 Fooocus API 做出贡献和努力的人。再次感谢 ✨ 社区万岁 ✨!