首页 > 其他分享 >Fooocus 的安装和API的使用

Fooocus 的安装和API的使用

时间:2024-01-18 10:46:09浏览次数:26  
标签:github py Fooocus job API line 安装

https://github.com/lllyasviel/Fooocus 是一款基于Gradio的图像生成软件。它集成了Stable Diffusion和Midjourney的特点:

  • 向Stable Diffusion学习,该软件是离线的,开源的,免费的。
  • 从Midjourney中学到,不需要手动调整,用户只需要专注于提示和图像。

同时它 支持 api接口调用,而且给了例子。

不过目前api是基于 Gradio client 来调用 Fooocus,不太好用, 有个 https://github.com/konieshadow/Fooocus-API/ 使用 FastAPI 构建了一系列 REST API 来使用 Fooocus。

下面是安装过程中碰到的一些问题

错误:AssertionError: Torch not compiled with CUDA enabled

解决方案先装 cudatoolkit,

conda config --append channels conda-forge
conda config --append channels nvidia

conda install cudatoolkit

如果已经安装了,则卸载 Torch, 再重走流程,如下流程, 在python entry_with_update.py之前卸载Torch即可。

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

pip uninstall torch

python entry_with_update.py

参考:https://www.educative.io/answers/how-to-resolve-torch-not-compiled-with-cuda-enabled

安装 Fooocus-API 时在获取 Fooocus 时失败。

Fooocus-API 的 Fooocus 默认是安装在
./repositories/Fooocus 目录下的。 我这里自动安装一直不通过,报服务器返回的信息无效或不可识别:

Git clone failed for Fooocus: failed to read data: 服务器返回的信息无效或不可识别

Traceback (most recent call last):
  File "D:\github\Fooocus-API\main.py", line 51, in git_clone
    repo = pygit2.Repository(dir)
  File "C:\ProgramData\anaconda3\envs\fooocus-api\lib\site-packages\pygit2\repository.py", line 1759, in __init__
    path_backend = init_file_backend(path, flags)
_pygit2.GitError: Repository not found at D:\github\Fooocus-API\repositories\Fooocus

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\github\Fooocus-API\main.py", line 405, in <module>
    install_dependents(args)
  File "D:\github\Fooocus-API\main.py", line 269, in install_dependents
    download_repositories()
  File "D:\github\Fooocus-API\main.py", line 192, in download_repositories
    git_clone(fooocus_repo, repo_dir(fooocus_name),
  File "D:\github\Fooocus-API\main.py", line 79, in git_clone
    raise e
  File "D:\github\Fooocus-API\main.py", line 65, in git_clone
    repo = pygit2.clone_repository(url, dir)
  File "C:\ProgramData\anaconda3\envs\fooocus-api\lib\site-packages\pygit2\__init__.py", line 255, in clone_repository
    payload.check_error(err)
  File "C:\ProgramData\anaconda3\envs\fooocus-api\lib\site-packages\pygit2\callbacks.py", line 98, in check_error
    check_error(error_code)
  File "C:\ProgramData\anaconda3\envs\fooocus-api\lib\site-packages\pygit2\errors.py", line 65, in check_error
    raise GitError(message)
_pygit2.GitError: failed to read data: 服务器返回的信息无效或不可识别

解决方法,直接使用github desktop下载https://github.com/lllyasviel/Fooocus 到 ./repositories/Fooocus 目录, 然后启动时用下面命令:

python main.py --sync-repo=skip --host=0.0.0.0

其中的sync-repo=skip就是启动时跳过同步Fooocus这一步,需要自己手工同步。

host=0.0.0.0是为了能局域网其它机子可以访问。

API 使用的示例代码

异步发起文生图任务:

import requests
import json
import time

host = "http://192.168.1.17:8888"

def text2img(params: dict) -> dict:
    """
    文生图
    """
    result = requests.post(url=f"{host}/v1/generation/text-to-image",
                           data=json.dumps(params),
                           headers={"Content-Type": "application/json"})
    print(result.text)
    return result.json()

for i in range(50):

    result =text2img({
        "prompt": "30~40 years old, male, random hobbies, Facebook account avatar",
        "image_seed":-1,
        "async_process": True})
    print(result)
    time.sleep(30)

上述代码执行后,会获得类似如下的输出

{"job_id":"09c58c8e-45b3-47be-8b9e-505aac45c88e",
"job_type":"Text to Image",
"job_stage":"WAITING",
"job_progress":0,
"job_status":null,
"job_step_preview":null,
"job_result":null}

其中的 job_id 是这个文生图任务的ID,后面可以用这个ID来查询生成的图片情况

查询指定任务完成情况

import requests

host = "http://192.168.1.17:8888"

def taskResult(task_id: str) -> dict:
    # 获取任务状态
    task_status = requests.get(url=f"{host}/v1/generation/query-job",
                               params={"job_id": task_id,
                                       "require_step_preivew": False},
                               timeout=30)
    print(task_status.text)
    return task_status.json()

print( taskResult('6f91586a-2c1f-4b03-87b7-627cc6a3533f'))

返回的类似如下:

{'job_id': 'b86b83e6-8035-458c-8116-a04cc33766ef', 
'job_type': 'Text to Image', 
'job_stage': 'SUCCESS', 
'job_progress': 100, 
'job_status': 'Finished', 
'job_step_preview': None, 
'job_result': [{'base64': None, 
'url': 'http://127.0.0.1:8888/files/2024-01-18/90e5c349-e2b6-490c-8c6d-603b7c390e63.png', 
'seed': '445310844207292857', 
'finish_reason': 'SUCCESS'}]}

返回的 job_result中有我们要的图地址。
实际的 .\repositories\Fooocus\outputs\2024-01-18 当前日期目录下,也有这个图片文件。

标签:github,py,Fooocus,job,API,line,安装
From: https://www.cnblogs.com/ghj1976/p/17971990/fooocus-de-an-zhuang-heapi-de-shi-yong

相关文章

  • Istio从入门到精通—— 安装 —— Kubernetes 删除 istio-system namesapce 时候,出现
    Kubernetes删除istio-systemnamesapce时候,出现Terminating解决办法当你在Kubernetes中遇到无法删除处于Terminating状态的命名空间时,可能是由于该命名空间中仍有活跃的资源或服务。要解决这个问题,你可以尝试以下几个步骤:一、常规方法检查命名空间中的活跃资源:......
  • redis自动化安装
    1.ruby脚本自动化安装1.安装ruby开发环境yuminstallrubygems-y2.通过ruby包管理工具,安装操作redis的模块gemsources--removehttps://rubygems.org/gemsources--removehttp://mirrors.aliyun.com/rubygems/gemsources-ahttps://mirrors.cloud.tencent.com/ru......
  • es安装分词插件elasticsearch-analysis-ik(elasticsearch-plugin方式安装)
    环境:OS:Centos7ES:6.8.5 1.查看当前的安装的插件[root@hadoop-slave1soft]#curl-uelastic:123456-XGET"http://192.168.1.63:19200/_cat/plugins?v&s=component&h=name,component,version,description&pretty"namecomponentversiondescription 2.将分......
  • 使用 Docker 安装 MongoDB 数据库
    byemanjusakafromhttps://www.emanjusaka.top/2024/01/docker-create-mongo-db彼岸花开可奈何本文欢迎分享与聚合,全文转载请留下原文地址。Docker安装命令dockerrun-d--namemongo--restart=always--privileged=true-p27017:27017-v/opt/doc/data:/data/dbmo......
  • 数据探索之道:查询Web API数据中的JSON字符串列
    前言在当今数据驱动的时代,对数据进行探索和分析变得愈发关键。WebAPI作为广泛应用的数据源,提供了丰富的信息和资源。然而,面对包含JSON字符串列的WebAPI数据时,我们常常遇到一个挑战:如何高效灵活地处理和查询这些数据?这个问题在数据探索和提取过程中频繁出现。因此小编今天以葡萄......
  • .net 温故知新【17】:Asp.Net Core WebAPI 中间件
    一、前言到这篇文章为止,关于.NET"温故知新"系列的基础知识就完结了,从这一系列的系统回顾和再学习,对于.NETcore、ASP.NETCORE又有了一个新的认识。不光是从使用,还包括这些知识点的原理,虽然深入原理谈不上,但对于日常使用也够了,我想的是知其然,知其所以然。在实际开发过程中可能......
  • Stirling-PDF docker安装
    有时候pdf文件需要处理,有个开源工具。https://github.com/Stirling-Tools/Stirling-PDF docker安装1、下载dockerpullfrooodle/s-pdf:latest2、安装dockerrun-d\-p8380:8080\-v/Users/xxxx/Documents/Stirling-PDF/data/:/usr/share/tesseract-ocr/4.......
  • 安装GPU版本Pytorch失败:torch.cuda.is_available()为False
    问题所在检查condalist发现,实际安装的Pytorch为CPU版本(虽然安装时明确指定了cuda版本):上图中可以看出,Pytorch的描述为:py3.9_cpu_0解决办法有可能是因为环境中存在一个叫“cpuonly”的包,导致无法安装GPU版本Pytorch:卸载掉它即可,卸载它时会自动将Pytorch更新为GPU版本:如果......
  • Git必知必会基础(02):Git安装、配置
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/10854115.html安装Git只有Windows系统需要手动安装Git软件, Linux和MacOS系统都自带Git(如果linux下想自己安装,参考:https://www.cnblogs.com/uncleyong/p/10767747.html)官网下载:https://git-scm.com/downloads......
  • 无涯教程-SQLite - 安装步骤
    SQLite以其出色的零配置功能而闻名,这意味着不需要复杂的设置或管理,本章将引导您完成在Windows,Linux和MacOSX上设置SQLite的过程。在Windows上安装步骤1-转到SQLite下载页面,并从Windows部分下载预编译的二进制文件。步骤2-下载sqlite-shell-win32-*.zip和sqlite-dll-win......