
稳定扩散是惊人的!
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 clientGeneralModel现在让我们在文件中的类中添加以下方法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未来站
