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

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

C++ 基础特性深度解析

目录 引言 一、命名空间(namespace) C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用(reference)​ C 中的引用​ 与 C 语言的对比​ 四、inline(内联函数…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...