稳定扩散是惊人的!
Stable Diffusion 无疑是市场上最好的文本转图像模型之一。并且是为数不多的开源软件之一。因此,在某些情况下,值得选择它并使您的项目多样化。多亏了 StabilityAI 的 API/SDK,这非常容易。如果您想了解我是如何做到的,请阅读本教程!
计划变更
从计划我们的更改开始是个好主意。在本教程中,我将使用 GPT-3 Streamlit Boilerplate。我希望它不仅能生成文本,还能根据插入的提示生成图片。它会出现在生成的文本下方。
SD/稳定性 API
在这种情况下,它将使用 StabilityAI 的 Python SDK 来访问 Stable Diffusion API。要访问,您需要登录并在您的帐户中生成一个 API 密钥。我们现在不会使用它,保存以备后用。
开始吧!
克隆存储库
首先,我们需要克隆存储库。
git clone https://github.com/nextgrid/streamlit_gpt3_boilerplate
然后进入该目录并创建一个虚拟环境。
cd streamlit_gpt3_boilerplatepython3 -m venv venv
让我们激活虚拟环境。
对于 Windows 用户:
./venv/Scripts/activate
对于 Mac 和 Linux 用户:
source venv/bin/activate
安装所需的依赖项
现在我们需要安装所需的依赖项。
pip install -r requirements.txt
安装新的依赖项
让我们安装额外的依赖 – Stability SDK。
pip install stability-sdk
添加必要的更改
现在我们需要对代码进行一些更改。首先,我们需要添加访问 API 的可能性。让我们导入必要的库。
import ioimport stability_sdk.interfaces.gooseai.generation.generation_pb2 as generationfrom PIL import Imagefrom stability_sdk import client
GeneralModel
现在让我们在文件中的类中添加以下方法model.py
。
def stability_generation(self, inp, api_key): stability_api = client.StabilityInference( key=api_key, verbose=True, # Print debug messages. engine="stable-diffusion-512-v2-1", ) # Create a request. result = stability_api.generate( prompt=inp, steps=40, samples=1, sampler=generation.SAMPLER_K_DPMPP_2M ) for response in result: for artifact in response.artifacts: if artifact.type == generation.ARTIFACT_IMAGE: img = Image.open(io.BytesIO(artifact.binary)) # return 1st image return img
此方法将根据输入的提示生成图像。它将返回生成图像列表中的第一张图像。
现在让我们来处理我们的仪表板。我们必须添加一个新的文本输入,以允许用户提供他们的 Stability API 密钥。我将在使用 OpenAI API Key 的输入下添加它。我还将使用 OpenaAI Key 重命名变量。
openai_api_key = st.sidebar.text_input("OpenAI API Key", type="password")stability_api_key = st.sidebar.text_input("StabilityAI API Key", type="password")
请记住在您的代码中的任何地方使用 OpenAI Key 更改变量的名称。
此时我们可以添加一个函数来触发照片的生成。
def process_prompt_stability(inp): img = pred.stability_generation(inp=inp.strip(), api_key=stability_api_key) return img
我还将有条件地生成应用程序的内容 – 如果同时提供了 OpenAI 和 Stability API 密钥。
此外,在文本生成之后添加照片生成也很重要。
添加这两个东西后,我的代码将如下所示:
if openai_api_key and stability_api_key: st.title("Write a poem based on these words") s_example = "Birds, flowers, love, sun" inp = st.text_area( "Use the example below or input your own text in English", value=s_example, max_chars=150, height=100, ) if st.button("Submit Poem"): with st.spinner(text="In progress"): report_text = process_prompt(inp) st.markdown(report_text) result_img = process_prompt_stability(inp) if result_img: st.image(result_img, caption="Generated Image")
测试
让我们检查一下是否一切正常。我们可以通过运行以下命令来启动我们的应用程序:
streamlit run gpt_app.py
然后我们可以输入我们的 API 密钥并生成诗歌和照片。
结论
如您所见,将 Stable Diffusion 添加到您的项目中并不难,最重要的是了解我们为什么要在我们的项目中使用它并做好计划!
如果您想详细了解如何使用 Stable Diffusion,我们邀请您查看我们在 lablab.ai 上的其他 AI 教程。这些工具很棒而且是开源的,这意味着随着社区不断开发新的工具、模型和解决方案,您肯定会找到适合您项目的工具!
如果您想在现实世界中测试您学到的所有 Stable Diffusion 技能,您可以参加即将举行的 Stable Diffusion AI 黑客马拉松,并在短短 7 天内创建基于 AI 的应用程序原型!也许使用 New Native 的弹弓加速器程序将它推向一个新的水平?
你还在等什么?加入AIHubPro.cn社区,报名参加Stable Diffusion AI Hackathon,用AI的力量改变世界!就这么简单。
感谢您的时间!– AI未来百科 ; 探索AI的边界与未来! 懂您的AI未来站