AIGC实践-使用Amazon Bedrock的SDXL模型进行文生图
一、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 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_scale | 10 | 引导强度 | 数值越高,生成的图像越严格按照文本提示进行;数值较低时生成内容更具创造性和自由度。 |
| seed | 0 | 随机种子 | 控制生成的随机性;相同种子和相同输入生成一致图像,不同种子生成不同结果。 |
| steps | 50 | 迭代步骤数 | 步骤数越多,生成的图像质量越高,但耗时越长。 |
| width | 512 | 图像宽度(像素) | 设置生成图像的横向分辨率。 |
| height | 512 | 图像高度(像素) | 设置生成图像的纵向分辨率。 |
下面我们来编写代码:
选择 workshop/labs/api/bedrock_api.py 编写代码:
import json
import boto3
import base64
import os
from PIL import Image
import iosession = boto3.Session()bedrock = session.client(service_name='bedrock-runtime') #creates a Bedrock clientbedrock_model_id = "stability.stable-diffusion-xl-v1" # set the foundation model
prompt = "a beautiful mountain landscape" # the prompt to send to the model
seed = 10body = 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”。
② 设置参数
根据需求,调整以下参数,可以优化生成结果:
-
分辨率:通过设置
width和height参数调整图像的宽高分辨率(单位:像素)。提高分辨率(如从默认的512x512提升到更高值)可以增加图像细节,但可能会延长生成时间。 -
文本提示和权重:使用
text_prompts参数提供描述性文字(如场景或风格),并通过weight调整对该提示的关注程度。权重值越高,生成图像将越贴近描述。 -
引导强度:通过
cfg_scale控制模型对文本提示的遵循程度。较高的值(如10或以上)会更严格地匹配输入描述;较低的值可能允许更具创造性的生成。 -
随机种子:设置
seed参数固定生成的随机性,确保相同的输入条件下产生一致的图像结果。使用不同的种子值可以生成多样化的结果。 -
迭代次数:调整
steps参数来控制图像生成的细化过程。更多的迭代(如从50提升到更高)通常会提升图像质量,但可能需要更长时间。
五、总结
Amazon Bedrock 为文生图功能提供了高效且灵活的解决方案,整合了多个顶尖的基础模型(如 Stable Diffusion SDXL 1.0),能够满足从创意设计到生产应用的多样化需求。通过其直观的 API 接口,开发者可以轻松调用模型,快速实现图像生成,并结合参数优化获得高质量的输出。
相关文章:
AIGC实践-使用Amazon Bedrock的SDXL模型进行文生图
一、Bedrock 简介 Amazon Bedrock 是 Amazon Web Services (AWS) 提供的一种生成式 AI 服务。通过 Bedrock,用户可以方便地使用多种基础模型(Foundation Models),包括 OpenAI 的 GPT、Anthropic 的 Claude 等。这些模型可以用于各…...
【源码】Sharding-JDBC源码分析之SQL中分片键路由ShardingSQLRouter的原理
Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 6、【…...
初学 flutter 环境变量配置
一、jdk(jdk11) 1)配置环境变量 新增:JAVA_HOMEC:\Program Files\Java\jdk-11 //你的jdk目录 在path新增:%JAVA_HOME%\bin2)验证是否配置成功(cmd运行命令) java java -version …...
蓝牙 AVRCP 协议详解
前言 随着无线音频设备的普及,蓝牙已经成为智能设备间通信的主流方式之一。除了传输音频流的 A2DP 协议外,AVRCP(Audio/Video Remote Control Profile,音频/视频远程控制协议)为用户提供了对蓝牙音频设备的控制能力&am…...
在 Ubuntu 18.04 上安装 MySQL 5.7和MySQL 8
1.Ubuntu安装MySQL 5.72.Ubuntu安装MySQL 8 在 Ubuntu 18.04 上安装 MySQL 5.7,可以按照以下步骤操作: 1. 更新系统包列表 运行以下命令以确保系统包列表是最新的: sudo apt update2. 检查默认 MySQL 版本 Ubuntu 18.04 默认提供 MySQL 5.…...
第4章 Spring Boot自动配置
自动配置概述 SpringBoot的两大核心 Spring Boot 框架的两大核心特性可以概括为“启动器”(Starter)和“自动配置”(Auto-configuration)。 启动器(Starter): Spring Boot 提供了一系列的 Star…...
显存:存储,GPU:计算;Pipeline Parallelism(管道并行)
目录 显存:存储,GPU:计算 流水线切分策略:(数据并并,多头并行,单头MLP切片) 存储(显存)和计算(GPU)负载不均衡的问题 1,2,3,4,5指的计算任务(数据切分) 大方块代表GPU计算 黄色代表显存 解决办法:重计算和流水线切分策略 重计算策略: 流水线切分策略:…...
费曼路径积分简单示例
费曼路径积分简单示例 费曼路径积分是量子力学中的一种计算方法,它通过对所有可能路径的贡献进行积分,来计算粒子从一个点到另一个点的概率幅。与经典力学不同,经典力学中粒子沿着使作用量最小的路径运动,而在量子力学中…...
40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)
【实战】并发安全的配置管理器(功能扩展) 一、扩展思考 分布式配置中心 实现配置的集中管理支持多节点配置同步实现配置的版本一致性 配置加密 敏感配置的加密存储配置的安全传输访问权限控制 配置格式支持 支持YAML、TOML等多种格式配置格式自动…...
麒麟安全增强-kysec
DAC: 自主访问控制是linux下默认的接入控制机制,通过对资源读、写、执行操作,保证系统安全 MAC:安全接入控制机制,由操作系统约束的访问控制,默认情况下,MAC不允许任何访问,用户可以自定义策略规则制定允许什么 ,从而避免很多攻击。 MAC强制访问控制常见的实现方式:…...
shell编程(8)
目录 一、until循环 示例 until 和 while 的区别 二、case语句 基本语法 示例 1. 简单的 case 语句 2. 使用通配符 3. 处理多个匹配 case 和 if 的比较 case 语句: if 语句: 三、基本函数 基本函数定义和调用 1. 定义一个简单的函数 2. …...
高级java每日一道面试题-2024年11月24日-JVM篇-说说对象分配规则?
如果有遗漏,评论区告诉我进行补充 面试官: 说说对象分配规则? 我回答: 在Java高级面试中,对象分配规则是一个核心考点,它涉及到JVM的内存管理、对象的创建和初始化等多个方面。以下是对Java对象分配规则的详细解释: 一、内存分配区域 J…...
进程间通信5:信号
引入 我们之前学习了信号量,信号量和信号可不是一个东西,不能混淆。 信号是什么以及一些基础概念 信号是一种让进程给其他进程发送异步消息的方式 信号是随时产生的,无法预测信号可以临时保存下来,之后再处理信号是异步发送的…...
性能测试及调优
一、性能测试介绍 1、什么叫做性能测试? (1)通过某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试 (2)指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指…...
实战基于LangChain和ChatGLM私有化部署聊天机器人
本文主要阐述了如何使用第二代6B模型进行对话训练,以及如何通过微调来提高大模型的性能。文中提到了在8501端口上启动第二代6B模型,并使用极简模板进行请求。与第一代模型相比,第二代6B模型具有更强的对话能力,并且可以通过微调来…...
利用adb工具安装卸载安卓平板(手机)软件
参考链接: 1、ADB 操作命令详解及用法大全 2、全面掌握Android调试工具箱:ADB与实用程序实战 平时使用小米手机没有感觉,miui系统做的确实好。最近买了个水货学习系统平板(主要看重硬件配置,性价比很高,但…...
基于docker进行任意项目灵活发布
引言 不管是java还是python程序等,使用docker发布的优势有以下几点: 易于维护。直接docker命令进行管理,如docker stop、docker start等,快速方便无需各种进程查询关闭。环境隔离。项目代码任何依赖或设置都可以基本独立&#x…...
Datatables:监听行内文本框,进行行内数据修改;计算行总和
一、监听行内文本框,进行行内数据修改 效果 修改数量、单价会自动计算金额(金额数量*单价) 实现 1、增加行的class 2、数据监听、修改数值 "initComplete": function() {// 监听数量和单价输入框的变化$(document).on(input, .…...
对于某些原型或UI软件的个人看法(2024/11)
由于我这几天,一边敲代码,一边进行页面布局设计与编码,发现可能就一个卡片,我都得调很久样式,觉得这样改很累也没效率,页面也不是很美观。所以我想到了ui设计,我可以先进行ui设计,然…...
嵌入式硬件实战提升篇(二)PCB高速板设计 FPGA核心板带DDR3 PCB设计DDR全面解析
引言:设计一款高速板,供读者学习,FPGA核心板,带一颗DDR3内存,FPGA型号:XC6SLX16-2FTG256C。 随着嵌入式硬件技术的快速发展,高速板设计逐渐成为嵌入式系统设计中的核心技术之一。高速板的设计要…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
