一、Bedrock 简介
Amazon Bedrock 是 Amazon Web Services (AWS) 提供的一种天生式 AI 服务。通过 Bedrock,用户可以方便地利用多种基础模型(Foundation Models),包括 OpenAI 的 GPT、Anthropic 的 Claude 等。这些模型可以用于各种天生式 AI 应用,包括文生图使命。本文将介绍怎样利用 Amazon Bedrock 的 SDXL模型 的 API 实现文生图。
二、开通Bedrock相应模型的利用权限
访问亚马逊官网,登录账号后,服务菜单里选择 Machine Learning,选择 Amazon Bedrock。
选择 Stable Diffusion。
初次利用需要开通相应模型的利用权限。点击 "请求模型访问权限"。
点击 "启用特定模型"。
勾选 Claude 里的 Claude 3 Sonnet、Claude 3 Haiku、Claude、Claude 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 来实现 Bedrock 里 Stability 的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 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')
复制代码 调用这段代码:
调用成功后,我们可以看到, 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”。
② 设置参数
根据需求,调解以下参数,可以优化天生结果:
- 分辨率:通过设置 width 和 height 参数调解图像的宽高分辨率(单位:像素)。提高分辨率(如从默认的 512x512 提升到更高值)可以增加图像细节,但可能会延长天生时间。
- 文本提示和权重:利用 text_prompts 参数提供形貌性文字(如场景或风格),并通过 weight 调解对该提示的关注程度。权重值越高,天生图像将越贴近形貌。
- 引导强度:通过 cfg_scale 控制模型对文本提示的遵循程度。较高的值(如 10 或以上)会更严格地匹配输入形貌;较低的值可能答应更具创造性的天生。
- 随机种子:设置 seed 参数固定天生的随机性,确保相同的输入条件下产生同等的图像结果。利用差异的种子值可以天生多样化的结果。
- 迭代次数:调解 steps 参数来控制图像天生的细化过程。更多的迭代(如从 50 提升到更高)通常会提升图像质量,但可能需要更长时间。
五、总结
Amazon Bedrock 为文生图功能提供了高效且灵活的解决方案,整合了多个顶尖的基础模型(如 Stable Diffusion SDXL 1.0),可以或许满意从创意设计到生产应用的多样化需求。通过其直观的 API 接口,开发者可以轻松调用模型,快速实现图像天生,并团结参数优化获得高质量的输出。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |