自学内容网 自学内容网

AIGC实践-使用Amazon Bedrock的SDXL模型进行文生图

一、Bedrock 简介

Amazon BedrockAmazon Web Services (AWS) 提供的一种生成式 AI 服务。通过 Bedrock,用户可以方便地使用多种基础模型(Foundation Models),包括 OpenAIGPTAnthropicClaude 等。这些模型可以用于各种生成式 AI 应用,包括文生图任务。本文将介绍如何使用 Amazon BedrockSDXL模型API 实现文生图。


二、开通Bedrock相应模型的使用权限

访问亚马逊官网,登录账号后,服务菜单里选择 Machine Learning,选择 Amazon Bedrock

在这里插入图片描述

选择 Stable Diffusion

在这里插入图片描述

首次使用需要开通相应模型的使用权限。点击 "请求模型访问权限"

在这里插入图片描述

点击 "启用特定模型"

在这里插入图片描述

勾选 Claude 里的 Claude 3 SonnetClaude 3 HaikuClaudeClaude Instant 四个模型。

在这里插入图片描述

再勾选 Stability Al 里的 SDXL 1.0

在这里插入图片描述

填写 Anthropic 的应用场景详细信息。

在这里插入图片描述

点击提交。

在这里插入图片描述

提交完之后,我们刚刚勾选的五个模型会变成 "正在进行" 状态,需要等待几分钟。

在这里插入图片描述

几分钟后,模型状态正常,变为 "已授予访问权限" 状态。

在这里插入图片描述


三、SDXL模型支持的几种模式

操场里点击图像,选择模型。类别选择 Stability AI,模型选择 SDXL 1.0,推理默认 按需 即可。选择好点击 应用

在这里插入图片描述

我们进入到了图像操场页面,在这里我们可以通过调整配置生成满足不同要求的图片。

在这里插入图片描述
配置解释:

操作内容
模式模型生成新图像(生成)或编辑(编辑)在参考图像中提供的图像
否定提示不希望模型生成的项目或概念,例如卡通或暴力
推理图像上传图像作为图像生成或编辑的参考
响应图像生成图像的输出设置,例如质量、方向、大小和要生成的图像数量
高级配置要传递给模型的推理参数

下面是 SDXL 1.0 模型 支持的几种模式:

1. 文生图

调整配置为:

  • 操作: 生成图像
  • 提示词: a serene beach at sunset
  • 提示强度: 10
  • 生成步骤: 30
  • 种子: 10

点击运行,生成效果如图:

在这里插入图片描述

2. 图生图

点击图片,操作里选择编辑功能。

在这里插入图片描述

可以看到右侧推理图像已经填入我们刚刚生成的图像。将 操作 选择为 生成变体

在这里插入图片描述

调整配置为:

  • 操作: 生成变体
  • 提示词: add vibrant hues to the sky, enhance reflections on the water
  • 负面提示词: dull colors, lack of sunset details, unrealistic sky gradients, poorly rendered reflections
  • 提示强度: 30
  • 生成步骤: 50
  • 种子: 321

点击运行,生成效果如图:

在这里插入图片描述

3. 图像编辑

我们重新生成一个绿色茶园的背景图。

在这里插入图片描述

操作选择 编辑 ,选择需要替换的区域,输入提示词、选择提示强度,生成图片。

比如,我们要增加一只羊。

调整配置为:

  • 操作: 编辑
  • 提示词: add a sheep
  • 提示强度: 10

在这里插入图片描述

通过 Amazon Bedrock Stability AI SDXL 1.0文生图图生图图像编辑 功能,我们可以开启简洁高效的视觉创作之旅,让创意变得触手可及。


四、调用Bedrock里Stability的API

我们使用 Jupyter 来实现 BedrockStability 的API调用。

1. 创建AWS访问密钥

AWS控制台安全凭证 里申请 安全密钥

在这里插入图片描述

保存好我们的 访问密钥

在这里插入图片描述

2. 安装相关环境

创建一个python环境,执行下面命令:

cd ~/environment/
curl 'https://dev-media.amazoncloud.cn/doc/workshop.zip' --output workshop.zip
unzip workshop.zip

在这里插入图片描述

解压完成后,安装需要的包:

pip3 install -r ~/environment/workshop/setup/requirements.txt -U

在这里插入图片描述

配置访问密钥:

aws configure

按提示输入以下信息:

  • AWS Access Key ID
  • AWS Secret Access Key
  • 默认区域名称(如 us-east-1
  • 输出格式(如 json,也可以直接为 None

在这里插入图片描述

3. 编写代码并调用

我们需要给 AWS 传一个 JSON 串,官网示例参数如下:

{
 "modelId": "stability.stable-diffusion-xl-v1",
 "contentType": "application/json",
 "accept": "application/json",
 "body": "{\"text_prompts\":[{\"text\":\"this is where you place your input text\",\"weight\":1}],\"cfg_scale\":10,\"seed\":0,\"steps\":50,\"width\":512,\"height\":512}"
}

在这里插入图片描述
其中,body 的参数含义如下:

参数含义作用
text_prompts[{ "text": "this is where you place your input text", "weight": 1 }]文本提示- "text": 输入的描述文字,模型将根据这个文字生成图像。
- "weight": 权重,控制模型对文本的关注程度。
cfg_scale10引导强度数值越高,生成的图像越严格按照文本提示进行;数值较低时生成内容更具创造性和自由度。
seed0随机种子控制生成的随机性;相同种子和相同输入生成一致图像,不同种子生成不同结果。
steps50迭代步骤数步骤数越多,生成的图像质量越高,但耗时越长。
width512图像宽度(像素)设置生成图像的横向分辨率。
height512图像高度(像素)设置生成图像的纵向分辨率。

下面我们来编写代码:

选择 workshop/labs/api/bedrock_api.py 编写代码:

import json
import boto3
import base64
import os
from PIL import Image
import io

session = boto3.Session()

bedrock = session.client(service_name='bedrock-runtime') #creates a Bedrock client

bedrock_model_id = "stability.stable-diffusion-xl-v1"  # set the foundation model
prompt =  "a beautiful mountain landscape"  # the prompt to send to the model
seed = 10

body = json.dumps({
    "text_prompts": [{"text": prompt}],
    "seed": seed,
    "cfg_scale": 10,
    "steps": 30,
})  # build the request payload

# send the payload to Bedrock
response = bedrock.invoke_model(
    body=body, modelId=bedrock_model_id, accept='application/json', contentType='application/json')

# read the response
response_body = json.loads(response.get('body').read())
base64_image_data = response_body.get("artifacts")[0]["base64"]
print(f"{base64_image_data[0:80]}...")
# Convert base64 image data to an image and save it to a file
image_data = base64.b64decode(base64_image_data)
os.makedirs("data", exist_ok=True)
image = Image.open(io.BytesIO(image_data))
image.save('data/sd_generated_image.jpg')

调用这段代码:

python3 bedrock_api.py

在这里插入图片描述

调用成功后,我们可以看到, workshop/labs/api/data/ 目录下生成了图片:sd_generated_image.jpg

在这里插入图片描述

4. 调试和优化

① 检查输入提示

生成的图片质量与输入提示(Prompt)的清晰度和详细程度密切相关。建议:

  • 描述尽可能具体,例如 “A detailed painting of a dragon flying over a mountain during sunset”。
  • 包含图片风格关键词,如 “realistic”, “abstract”, “oil painting”。

② 设置参数

根据需求,调整以下参数,可以优化生成结果:

  • 分辨率:通过设置 widthheight 参数调整图像的宽高分辨率(单位:像素)。提高分辨率(如从默认的 512x512 提升到更高值)可以增加图像细节,但可能会延长生成时间。

  • 文本提示和权重:使用 text_prompts 参数提供描述性文字(如场景或风格),并通过 weight 调整对该提示的关注程度。权重值越高,生成图像将越贴近描述。

  • 引导强度:通过 cfg_scale 控制模型对文本提示的遵循程度。较高的值(如 10 或以上)会更严格地匹配输入描述;较低的值可能允许更具创造性的生成。

  • 随机种子:设置 seed 参数固定生成的随机性,确保相同的输入条件下产生一致的图像结果。使用不同的种子值可以生成多样化的结果。

  • 迭代次数:调整 steps 参数来控制图像生成的细化过程。更多的迭代(如从 50 提升到更高)通常会提升图像质量,但可能需要更长时间。


五、总结

Amazon Bedrock 为文生图功能提供了高效且灵活的解决方案,整合了多个顶尖的基础模型(如 Stable Diffusion SDXL 1.0),能够满足从创意设计到生产应用的多样化需求。通过其直观的 API 接口,开发者可以轻松调用模型,快速实现图像生成,并结合参数优化获得高质量的输出。


原文地址:https://blog.csdn.net/weixin_41793160/article/details/144009629

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!