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

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐)​​ 在 save_images 方法中,​​删除或注释掉所有与 metadata …...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...