闸北做网站公司,传奇类网页游戏,程序员必知的网站,网络营销网站规划建设目录
1. 引言 2. 基于Rest API 开发 2.1 前置条件 2.2 代码实现 2.3 效果演示 2.4 常见错误 3. 总结 1. 引言 Stable Diffusion作为一种强大的文本到图像生成模型#xff0c;已经在艺术、设计和创意领域引起了广泛的关注和应用。然而#xff0c;对于许多开发者来说#xff…目录
1. 引言 2. 基于Rest API 开发 2.1 前置条件 2.2 代码实现 2.3 效果演示 2.4 常见错误 3. 总结 1. 引言 Stable Diffusion作为一种强大的文本到图像生成模型已经在艺术、设计和创意领域引起了广泛的关注和应用。然而对于许多开发者来说仅仅使用模型的默认设置可能无法满足特定的需求。因此二次开发成为了实现个性化定制和性能优化的关键途径。本文将引导读者进入Stable Diffusion的二次开发世界探索如何通过插件、脚本、API二次来实现更高级的图像生成功能。 首先有必要对 Stable Diffusion 的插件、脚本、API 做个初步的认识 Stable Diffusion的插件通常是一些附加的组件或工具它们可以集成到Stable Diffusion的主程序中以提供额外的功能或改进现有功能。 例如在上一文中《Stable Diffusion插件安装的3种方法附4个插件下载地址-CSDN博客》提到的人脸修复插件、OpenPose编辑插件都插件
GitHub - Bing-su/adetailer: Auto detecting, masking and inpainting with detection model.Auto detecting, masking and inpainting with detection model. - Bing-su/adetailerhttps://github.com/Bing-su/adetailer.gitGitHub - nonnonstop/sd-webui-3d-open-pose-editor: 3d openpose editor for stable diffusion and controlnet3d openpose editor for stable diffusion and controlnet - nonnonstop/sd-webui-3d-open-pose-editorhttps://github.com/nonnonstop/sd-webui-3d-open-pose-editor.git 脚本则是一系列自动化指令的集合用于执行特定的任务或操作。通过编写脚本用户可以自动化一些繁琐或重复性的任务提高工作效率。在Stable Diffusion中脚本可能被用于自动化图像生成、参数调整、功能拓展等任务。 API应用程序接口是Stable Diffusion提供的一套强大的接口本文特指SD以RestFul形式对外提供的接口用于实现Stable Diffusion的各种功能。API允许开发者或用户通过编程的方式与Stable Diffusion进行交互从而能够定制和扩展其功能。例如通过API用户可以接入Stable Diffusion的功能将其集成到自己的应用程序或网站中实现个性化的图像生成和处理。 通过插件、脚本和API的拓展它们使得Stable Diffusion更加灵活、高效和易于使用。 本章主要对基于SD的Rest API开发进行详细介绍给您一种拓展SD的思路其他的两种开发方式可以找对应的插件源码进行分析参考。 2. 基于Rest API 开发 2.1 前置条件 如果需要使用SD的REST API需要先启用API启用位置如下图 启用接口 启用后可以访问到SD基于Swagger的接口文档在浏览器中访问http://127.0.0.1:7860/docs可以查看非常详细的接口描述以下是部分接口的截图 接口文档 如果您还没有安装SD可以看看往期文章 Stable Diffusion绘图神器2分钟极速安装教程提供安装包-CSDN博客 2.2 代码实现 这里为了方便使用python的gradio进行演示其实也可以使用其他任何语言来调用REST API也就是说使用调用Rest API的方式您可以基于SD使用任何语言来开发您的应用。
import gradio as gr
import json
import requests
import io
import base64
from PIL import Image
# 定义文生图请求
def text_to_image(text):payload {prompt: text,steps: 20}url http://127.0.0.1:7860;payload_json json.dumps(payload)# 发送POST请求response requests.post(urlf{url}/sdapi/v1/txt2img, datapayload_json).json()# response 响应包含 images、parameters 和 info,image 可能会含有多个图像 这里只取第一个图像。image Image.open(io.BytesIO(base64.b64decode(response[images][0])))return image# 创建Gradio接口实例
iface gr.Interface(fntext_to_image,inputstext,outputsimage,titleText to Image Generator,descriptionEnter some text and see the generated image.)
# 启动交互式Web应用
iface.launch(inlineTrue) # 使用inlineTrue在Jupyter notebook中运行上述代码中payload 是请求的参数体可以结合具体的接口参数传入更多配置参数
启动程序 后台输出 启动程序后根据后台输出提示在浏览器中输入对应地址进行访问出现如下界 启动后的界面 2.3 效果演示 在输入框中输入提示词点击提交按钮右边就会出现生成的结果。 演示效果 2.4 常见错误 如果点击提交按钮出现类似这样的错误index.js:170 POST http://127.0.0.1:7861/run/predict 422 (Unprocessable Entity) 根据经验可能是gradio和python的版本不对应。将python的版本切换到python3.8以上可以解决此问题。 3. 总结 至此基于Stable Diffusion 的二次开发已经介绍完毕在本教程中提供了详细的代码示例展示了如何调用SD的API。这些示例旨在为读者提供一个起点以便在实际应用中进一步探索Stable Diffusion的二次开发潜力。基于Stable Diffusion的二次开发是一个充满挑战和机遇的领域。通过不断地探索和实践相信您可以创造出更多有趣和实用的应用。