当前位置:   article > 正文

文生图——python调用stable diffusionAPI生成有趣的图像_文生图免费api

文生图免费api

本文将介绍如何使用Python调用Stable Diffusion API进行图像生成,实现文生图的功能。通过详细的步骤说明和示例代码,读者将能够轻松掌握这一技术,并运用它生成独特而富有创意的图像作品。无论你是编程爱好者还是设计师,都能从中获得启发和乐趣。

stable diffusion本地的部署方法可参考文章:文生图——stable diffusion生成有趣的动漫图像

part1:文生图概念及API简介

在数字艺术和创意设计的交汇点上,文生图(Text-to-Image)技术正以其独特的魅力吸引着无数创作者。这项技术允许用户通过输入文字描述,生成与之相对应的图像,从而打破了传统图像创作的界限,为艺术家和设计师们提供了全新的创作手段。

文生图技术的核心在于深度学习和自然语言处理。通过训练大量的图像和文字数据,模型能够理解文字与图像之间的关联,进而根据文字描述生成相应的图像。这种技术的出现,不仅降低了图像创作的门槛,还极大地丰富了图像创作的可能性和多样性。

在众多文生图技术中,Stable Diffusion以其出色的图像生成质量和稳定的性能脱颖而出。Stable Diffusion是一个基于扩散模型的文本到图像生成系统,它能够根据用户提供的文本提示,生成高质量、高分辨率的图像。而Stable Diffusion API则是这一强大功能的桥梁,它允许开发者通过编程方式调用Stable Diffusion模型,实现自定义的图像生成任务。

Stable Diffusion API的设计简洁而高效,用户只需通过API接口发送包含文本描述的请求,即可获得与之对应的图像输出。这种即插即用的方式,不仅方便了开发者的集成和应用,还大大降低了技术门槛,使得更多创作者能够轻松体验到文生图的魅力。

要获得stable Diffusion API 首先,我们进入stable diffusion官网:Stable Diffusion 3 — Stability AI

进入Stability AI Developer Platform ,如左图,点击Platform API即可。进入网页后,我们首先登录自己的SD账号,点击账号,即可看到下方画面:

使用个人的API Keys,即可调用API进行创作了。在Billing界面,可以看到自己的API调用余额,调用不同的模型消耗不同

 使用不同模型消耗的Credits可以通过Stability AI - Developer Platform查看。

part2:python调用stable diffusionAPI进行绘图

我们可以通过以下代码实现文生图的API调用:

  1. import base64
  2. import os
  3. import requests
  4. engine_id = "stable-diffusion-v1-6"
  5. api_host = os.getenv('API_HOST', 'https://api.stability.ai')
  6. api_key = "skxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxWdIc"
  7. if api_key is None:
  8. raise Exception("Missing Stability API key.")
  9. response = requests.post(
  10. f"{api_host}/v1/generation/{engine_id}/text-to-image",
  11. headers={
  12. "Content-Type": "application/json",
  13. "Accept": "application/json",
  14. "Authorization": f"Bearer {api_key}"
  15. },
  16. json={
  17. "text_prompts": [
  18. {
  19. "text": "A lighthouse on a cliff"
  20. }
  21. ],
  22. "cfg_scale": 7,
  23. "height": 1024,
  24. "width": 1024,
  25. "samples": 1,
  26. "steps": 30,
  27. },
  28. )
  29. if response.status_code != 200:
  30. raise Exception("Non-200 response: " + str(response.text))
  31. data = response.json()
  32. for i, image in enumerate(data["artifacts"]):
  33. with open(f"out/v1_txt2img_{i}.png", "wb") as f:
  34. f.write(base64.b64decode(image["base64"]))

这段代码来源并修改于stable diffusion官方文档Stability AI - Developer Platform,下面,我们对代码进行一些解释:

  • engine_id代表你使用的文生图模型,用户可以根据需要选择不同的模型;
  • api_key为用户的API key,这地方直接将自己的API key复制过来就好;
  • json={ "text_prompts": [{ "text": "A lighthouse on a cliff" } ], "cfg_scale": 7, "height": 1024, "width": 1024, "samples": 1, "steps": 30, }中,我们可以对图片的输出内容进行设置, "text_prompts"即为提示词,如文中为“悬崖上的灯塔”,后边为对图片的参数设置。

 在运行上述代码前,首先在与上述python文件同目录下创建一个out文件夹,这样代码会将图片输出到out文件夹当中。

接下来,让我们实操一下上述代码吧!

part3:代码实操

首先,我们先获取一些优秀的提示词:

接着我们将这些提示词整理好放入代码中,如下方代码所示: 

  1. import base64
  2. import os
  3. import requests
  4. engine_id = "stable-diffusion-v1-6"
  5. api_host = os.getenv('API_HOST', 'https://api.stability.ai')
  6. api_key = "skxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxIc"
  7. if api_key is None:
  8. raise Exception("Missing Stability API key.")
  9. response = requests.post(
  10. f"{api_host}/v1/generation/{engine_id}/text-to-image",
  11. headers={
  12. "Content-Type": "application/json",
  13. "Accept": "application/json",
  14. "Authorization": f"Bearer {api_key}"
  15. },
  16. json={
  17. "text_prompts": [
  18. {
  19. "text": "Sunset Glow,Anime Kids,Adorable Features,Bright Eyes,Cheerful Expressions,Colorful Backpacks,School Uniforms,Chibi Style,Golden Hour,Warm Light,Long Shadows,Rustling Trees,Birds Flying,Distant Houses,Country Road,Walking Home,Chattering Friends,Laughing Faces,Innocent Joy,Youthful Energy"
  20. }
  21. ],
  22. "cfg_scale": 7,
  23. "height": 1024,
  24. "width": 1024,
  25. "samples": 1,
  26. "steps": 30,
  27. },
  28. )
  29. if response.status_code != 200:
  30. raise Exception("Non-200 response: " + str(response.text))
  31. data = response.json()
  32. for i, image in enumerate(data["artifacts"]):
  33. with open(f"out/v1_txt2img_{i}.png", "wb") as f:
  34. f.write(base64.b64decode(image["base64"]))

运行后,在out文件夹中即可获得所需要的图片:

 可以看到,图像整体风格没有太大问题,但是图片细节还是不太妙,读者可以尝试多生成几次,找到满意的图像。

Stable Diffusion模型原理简介

Stable Diffusion是一种基于扩散过程的生成模型,由多个关键组件和原理构成,以下是对其原理的详细分段介绍:

一、扩散过程

Stable Diffusion的核心思想是通过扩散过程来实现图像生成和图像修复。扩散过程是一种物理现象,描述了粒子随时间的随机运动。在Stable Diffusion中,扩散过程被应用于图像数据,通过向图像像素添加随机噪声并迭代地去除这些噪声,逐渐使图像从无序状态过渡到有序状态,最终生成符合目标分布的图像。

二、变分自编码器(VAE)

为了有效地处理图像数据,Stable Diffusion引入了变分自编码器(VAE)。VAE是一种生成模型,它能够将图像编码成一个隐变量向量,并通过解码器将其还原成图像。在编码过程中,VAE学习到数据分布的特征,从而能够生成与原始数据相似的图像。通过VAE,Stable Diffusion实现了对图像的高效压缩和编码,为后续的扩散过程提供了便利。

三、可逆网络

在Stable Diffusion中,可逆网络发挥着关键作用。可逆网络是一种特殊的神经网络结构,它允许数据在正向和反向过程中进行无损变换。在Stable Diffusion中,可逆网络被用于实现扩散过程的反向操作,即将扩散后的噪声数据还原成原始图像。通过可逆网络,模型能够在不损失信息的情况下对数据进行变换和处理,从而保证了生成图像的质量和准确性。

四、稳定性控制

Stable Diffusion通过控制扩散过程的时间步长来实现对生成图像稳定性的控制。时间步长决定了扩散过程中每一步的噪声添加量和去除量。较小的时间步长可以使扩散过程更加平稳,生成的图像更加稳定,但也会增加计算成本和生成时间。相反,较大的时间步长可以加速扩散过程,但可能会导致生成的图像出现不稳定或质量下降的情况。因此,在Stable Diffusion中需要权衡生成图像的稳定性和计算效率之间的关系。

五、条件机制与文本引导

Stable Diffusion还引入了条件机制来实现文本引导的图像生成功能。通过结合CLIP文本编码器和交叉注意力机制,模型能够根据用户提供的文本描述来调整生成图像的内容和风格。这使得Stable Diffusion能够灵活地应对不同的生成需求并提供个性化的图像生成服务。

以上是利用python调用stable diffusionAPI进行图像生成的方法, stable diffusion本地的部署方法可参考文章:文生图——stable diffusion生成有趣的动漫图像

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/530820
推荐阅读
相关标签
  

闽ICP备14008679号