Spaces:
Runtime error
Runtime error
File size: 12,406 Bytes
5fbd25d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 |
[](https://github.com/konieshadow/Fooocus-API/actions/workflows/docker-image.yml)
[ [English](/README.md) | 中文 ]
- [简介](#简介)
- [Fooocus](#fooocus)
- [Fooocus-API](#fooocus-api)
- [开始](#开始)
- [在 Replicate 上运行](#在-replicate-上运行)
- [自托管](#自托管)
- [conda](#conda)
- [venv](#venv)
- [预下载及安装](#预下载及安装)
- [已经有安装好的 Fooocus](#已经有安装好的-fooocus)
- [使用Docker启动](#使用docker启动)
- [命令行参数](#命令行参数)
- [更新日志](#更新日志)
- [Apis](#apis)
- [License](#license)
- [感谢 :purple\_heart:](#感谢-purple_heart)
> 注意:
>
> 尽管我进行了测试,但我仍建议你在正式更新前再测一遍
>
> Fooocus 2.5 包含大量更新,其中多数依赖进行了升级,因此,更新后请不要使用 `--skip-pip`. 除非你已经进行过手动更新
>
> 此外, `groundingdino-py` 可能会遇到安装错误, 特别是在中文 windows 环境中, 解决办法参考: [issues](https://github.com/IDEA-Research/GroundingDINO/issues/206)
> 和 DescribeImage 一样,GenerateMask 不会作为 task 处理而是直接返回结果
# ImageEnhance 接口的使用说明
以下面的参数为例,它包含了 ImageEnhance 所需要的主要参数,V1 接口采用和 ImagePrompt 类似的方式将 enhance 控制器拆分成表单形式:
```python
{
"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](https://github.com/lllyasviel/Fooocus) 的 API。
当前支持的 Fooocus 版本: [2.5.3](https://github.com/lllyasviel/Fooocus/blob/main/update_log.md)。
## Fooocus
**该章节来自 [Fooocus](https://github.com/lllyasviel/Fooocus) 项目。**
Fooocus 是一个图像生成软件 (基于 [Gradio](https://www.gradio.app/))。
Fooocus 是对于 Stable Diffusion 和 Midjourney 的重新思考以及设计:
- 我们学习了 Stable Diffusion 的开源、免费、离线运行。
- 我们学习了 Midjourney 的专注,不需要手动调整,专注于描述词以及图像。
Fooocus 包含了许多内部优化以及质量改进。 忘记那些复杂困难的技术参数,享受人机交互带来的想象力的突破以及探索新的思维
## Fooocus-API
可能您已经尝试过通过 [Gradio 客户端](https://www.gradio.app/docs/client) 来接入 Fooocus,但您可能发现体验并不理想。
Fooocus API 是基于 [FastAPI](https://fastapi.tiangolo.com/) 构建的一系列 `REST` 接口,它们使得利用 Fooocus 的强大功能变得简单易行。现在,您可以使用任何您喜欢的编程语言来轻松地与 Fooocus 进行交互。
此外,我们还提供了详尽的 [API 文档](/docs/api_doc_zh.md) 和丰富的 [示例代码](/examples),以帮助您快速上手和深入了解如何有效地利用 Fooocus。
# 开始
## 在 Replicate 上运行
现在你可以在 Replicate 上使用 Fooocus-API,在这儿: [konieshadow/fooocus-api](https://replicate.com/konieshadow/fooocus-api).
使用预先调整参数的:
- [konieshadow/fooocus-api-anime](https://replicate.com/konieshadow/fooocus-api-anime)
- [konieshadow/fooocus-api-realistic](https://replicate.com/konieshadow/fooocus-api-realistic)
我认为这是更简单的方法来体验 Fooocus 的强大
> 出于某些原因,上述 replicate 上的实例版本无法更新,你可以参照 [push-a-model](https://replicate.com/docs/guides/push-a-model) 部署自己专用的实例。
## 自托管
需要 Python >= 3.10,或者使用 conda、venv 创建一个新的环境
硬件需求来源于 Fooocus。 详细要求可以看[这里](https://github.com/lllyasviel/Fooocus#minimal-requirement)
### conda
按照下面的步骤启动一个 app:
```shell
conda env create -f environment.yaml
conda activate fooocus-api
```
然后,执行 `python main.py` 启动 app ,默认情况下会监听在 `http://127.0.0.1:8888`
> 如果是第一次运行,程序会自动处理完成剩余的环境配置、模型下载等工作,因此会等待一段时间。也可以预先配置好环境、下载模型,后面会提到。
### venv
和使用 conda 类似,创建虚拟环境,启动 app ,等待程序完成环境安装、模型下载
```powershell
# windows
python -m venv venv
.\venv\Scripts\Activate
```
```shell
# 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](https://pytorch.org/get-started/previous-versions/) 页面找到。
> 关于 pytorch 和 cuda 的版本,Fooocus API 使用的是 Fooocus 推荐的版本,目前是 pytorch2.1.0+cuda12.1。如果你是个 "犟种" 非要用其他版本,我测试过也是可以的,不过启动的时候记得加上 `--skip-pip`,否则程序会自动替换为推荐版本。
进入 `repositories` 的目录,下载的模型放到这个目录 `repositories\Fooocus\models`。如果你有一个已经安装完成的 Fooocus,在[这里](#已经有安装好的-fooocus)查看如何复用模型
这里是一个启动必须下载的模型列表 (也可能不一样如果 [启动参数](#命令行参数) 不同的话):
- checkpoint: 放到 `repositories\Fooocus\models\checkpoints`
+ [juggernautXL_v8Rundiffusion.safetensors](https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/juggernautXL_v8Rundiffusion.safetensors)
- vae_approx: 放到 `repositories\Fooocus\models\vae_approx`
+ [xlvaeapp.pth](https://huggingface.co/lllyasviel/misc/resolve/main/xlvaeapp.pth)
+ [vaeapp_sd15.pth](https://huggingface.co/lllyasviel/misc/resolve/main/vaeapp_sd15.pt)
+ [xl-to-v1_interposer-v3.1.safetensors](https://huggingface.co/lllyasviel/misc/resolve/main/xl-to-v1_interposer-v3.1.safetensors)
- lora: 放到 `repositories\Fooocus\models\loras`
+ [sd_xl_offset_example-lora_1.0.safetensors](https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/resolve/main/sd_xl_offset_example-lora_1.0.safetensors?download=true)
> 国内不好下的到 [这儿](https://www.123pan.com/s/dF5A-SIQsh.html)下载, 提取码: `D4Mk`
### 已经有安装好的 Fooocus
如果你已经有一个安装好的且运行正常的 Fooocus, 推荐的方式是复用模型, 只需要将 Fooocus 根目录下的 `config.txt` 文件复制到 Fooocus API 的根目录即可。 查看 [Customization](https://github.com/lllyasviel/Fooocus#customization) 获取更多细节.
使用这种方法 Fooocus 和 Fooocus API 会同时存在,独立运行互不干扰。
> 不要将已安装的 Fooocus 目录复制到 repositories 目录。
## 使用Docker启动
开始之前,先安装 [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html),这是 Docker 可以使用 GPU 的前提。
运行
```shell
docker run -d --gpus=all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-p 8888:8888 konieshadow/fooocus-api
```
一个更实用的例子:
```shell
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 命令行选项可以在[这儿](https://github.com/lllyasviel/Fooocus?tab=readme-ov-file#all-cmd-flags)找到。
# 更新日志
[CHANGELOG](./docs/change_logs_zh.md)
更早的日志可以在 [release page](https://github.com/konieshadow/Fooocus-API/releases) 找到
# Apis
你可以在[这里](/docs/api_doc_zh.md)找到所有的 API 细节
# License
This repository is licensed under the [GUN General Public License v3.0](https://github.com/mrhan1993/Fooocus-API/blob/main/LICENSE)
The default checkpoint is published by [RunDiffusion](https://huggingface.co/RunDiffusion), is licensed under the [CreativeML Open RAIL-M](https://github.com/mrhan1993/Fooocus-API/blob/main/CreativeMLOpenRAIL-M).
or, you can find it [here](https://huggingface.co/spaces/CompVis/stable-diffusion-license)
# 感谢 :purple_heart:
感谢所有为改进 Fooocus API 做出贡献和努力的人。再次感谢 :sparkles: 社区万岁 :sparkles:!
|