当前位置: 首页 > news >正文

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 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”。

② 设置参数

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

  • 分辨率:通过设置 widthheight 参数调整图像的宽高分辨率(单位:像素)。提高分辨率(如从默认的 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计算 黄色代表显存 解决办法:重计算和流水线切分策略 重计算策略: 流水线切分策略:…...

费曼路径积分简单示例

费曼路径积分简单示例 费曼路径积分是量子力学中的一种计算方法,它通过对所有可能路径的贡献进行积分,来计算粒子从一个点到另一个点的概率幅。与经典力学不同,经典力学中粒子沿着使作用量最小的路径运动,而在量子力学中&#xf…...

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。 随着嵌入式硬件技术的快速发展,高速板设计逐渐成为嵌入式系统设计中的核心技术之一。高速板的设计要…...

亚信安全携手飞书“走近先进” 与保隆科技探索制造业数字化转型

亚信安全携手飞书组织举办“走近先进”活动。近日活动“走近”了中国汽车供应链百强、上海市制造业五十强企业——上海保隆汽车科技股份有限公司(以下简称“保隆科技”)。活动围绕“突破桎梏 加速升级”的主题,聚焦企业数字化转型的核心议题&…...

【C++篇】排队的艺术:用生活场景讲解优先级队列的实现

文章目录 须知 💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍 点赞、收藏与分享:觉得这篇文章对你有帮助吗&#xff1…...

VTK的基本概念(一)

文章目录 三维场景的基本要素1.灯光2.相机3.颜色4.纹理映射 三维场景的基本要素 1.灯光 在三维渲染场景中,可以有多个灯光的存在,灯光和相机是三维渲染场景的必备要素,如果没有指定的话,vtkRenderer会自动创建默认的灯光和相机。…...

error LNK2001: 无法解析的外部符号 memcpy strcmp strlen

0>LIBMY_static.lib(pixdesc.obj) : error LNK2001: 无法解析的外部符号 __imp_abort 10>LIBMY_static.lib(random_seed.obj) : error LNK2001: 无法解析的外部符号 __imp_abort 10>postprocess.obj : error LNK2001: 无法解析的外部符号 __imp_abort 10>LIBMY_sta…...

打造智能扩容新纪元:Kubernetes Custom Metrics深度解析

自定义指标:Kubernetes Auto Scaling的革命 1. 引言 1.1 Kubernetes与Auto Scaling Kubernetes作为当今容器编排的事实标准,提供了强大的自动化能力,其中Auto Scaling(自动扩缩容)是其核心特性之一。Auto Scaling允许Kubernetes集群根据当前负载动态调整资源,以应对不…...

【K8s】专题十五(4):Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】(全…...

Unity类银河战士恶魔城学习总结(P141 Finalising ToolTip优化UI显示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ UI部分暂时完结!!! 本章节优化了UI中物品描述的显示效果,技能描述的显示效果 并且可以批…...

c++(入门)

1. 引用 引用的定义 引用是另一个变量的别名,它在声明时必须被初始化,并且一旦初始化后,它就始终引用那个变量。 引用的语法 引用的声明方式是在变量名前加上&符号。 引用的特点 引用必须在声明时初始化。引用一旦初始化后&#x…...

【优选算法】前缀和

目录 一、[【模板】前缀和](https://www.nowcoder.com/practice/acead2f4c28c401889915da98ecdc6bf?tpId230&tqId2021480&ru/exam/oj&qru/ta/dynamic-programming/question-ranking&sourceUrl%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595…...

Spring Bean 的生命周期详解

所谓万物皆对象,对于一个 bean 而言,从出生到死亡,他要经历哪些阶段呢? 生命周期 理解对象的生命周期,可以帮助我们更好的做一些扩展。 一个对象从被创建到被垃圾回收,可以大致分为这 5 个阶段&#xff1a…...