亚马逊AI图像模型Nova深度体验(含源代码)(上)

在本系列的上篇中,我们介绍了如何利用Amazon Nova Canvas进行创意图片内容生成,并使用Amazon Bedrock的InvokeModel API进行文本到图像(文生图)的生成。并且介绍了Nova Canvas提供的广泛的功能,包括图像修复、画布扩展、颜色引导等,使其成为强大的AI创意工具。接下来下篇中我们将继续介绍我们上篇中的方案,利用Nova生成一个完整的故事书插画。

调整Nova Canvas的生成结果

编辑提示词(Edit Prompt)

如果生成的图像没有达到预期,或者缺少某些特征,可以通过修改提示词(prompt)来调整结果。例如:

prompt = """
A rundown house with a light, the front door of the house is swung wide open
and a warm fire in a chimney can be seen.
"""

重新运行代码后,会生成符合新描述的图像。

修改随机种子(Change Seed)

如果当前提示词生成的图像不错,但想要探索一些变化,可以更改种子值(seed),以生成不同版本的图像:

seed: 23423423

这将创建一个具有相似风格但不同细节的新图像。

调整cfgScale参数

如果模型生成的图像未能严格按照提示词执行,大家可以调整 cfgScale 参数:

cfgScale: 8.5
  • 值越高(最大10.0):模型会更加严格遵循提示词的描述。
  • 值越低(最小1.1):生成的图像会带有更多随机性,可能出现创造性的变化。

负面提示词(Negative Text )

如果想要去除特定元素,可以使用 negativeText 属性。例如,要生成一张没有窗户的房屋:

negative_prompt = "window, window with light"# ..."textToImageParams": {"text": prompt,"negativeText": negative_prompt
},

这将告诉模型不要生成包含这些元素的图片,再次运行将生成以下图片。

大家现在已经掌握了调整Nova Canvas输出的各种方法,包括修改提示词、调整随机种子、配置cfgScale参数,以及使用负面提示词去除特定元素。

如需了解更多关于提示词优化(Prompt Optimization)和输出调整(Output Tweaking)的详细信息,请参考Nova官方文档。

生成最终输出 - 故事板(Storyboard)

现在,大家已经掌握了Nova Canvas的调整技巧,接下来可以继续生成多个图像并把他们组合生成PDF故事图画集。

大家可以选择一个故事情节,设计图片分镜布局,然后使用Python代码自动生成一个故事图画集,并导出为单页PDF。

更新 requirements.txt

请确保 requirements.txt 文件包含以下依赖项:

boto3
fpdf2

在本地 IDE 或 SageMaker Jupyter Notebook 安装依赖

如果大家使用的是SageMaker Jupyter Notebook,可以在Notebook的第一个代码单元格中运行:

!pip install boto3
!pip install fpdf2

代码示例

该代码将会生成一个完整的故事图画集PDF,包含三幅由Nova Canvas生成的插图。

# Required imports
import base64
import io
import json
import boto3
from PIL import Image
from botocore.config import Config
import time
from fpdf import FPDF# Create the client instance (5 minute timeout)
bedrock = boto3.client(service_name='bedrock-runtime',region_name="us-east-1",config=Config(read_timeout=300)
)# Define the default generated image width and height
DEFAULT_IMG_WIDTH = 480
DEFAULT_IMG_HEIGHT = 480# Cells are used for page layout, this is the size of one cell
CELL_WIDTH = DEFAULT_IMG_WIDTH / 6# Define a page layout of cells, 1 or 2 cell spans per row, 3 rows per page
page_layout = [[7,5], [12], [8,4]]# Define the story for each cell
story = ["""Two bears entering a dark, ominous wood, walking along a grassy path. Seen from behind.""","""Two bears in a dark, ominous wood, a small, rundown house with a light on is in front of them. Seen from behind.""","""A rundown house with a light, the door of the house is open and a warm fire and pot can be seen through the door.""","""A rundown house with a light, the door of the house is open and a warm fire and pot can be seen through the door. A shadowy figure is standing at the door""","""A rundown house with a light, the door of the house is open and a warm fire and pot can be seen through the door. A man is standing at the door with an axe. Two bears are running from the house towards the viewer."""
]def image_from_text(text, width, height, file):body = json.dumps({"taskType": "TEXT_IMAGE","textToImageParams": {"text": text},"imageGenerationConfig": {"numberOfImages": 1,"width": width,"height": height,"cfgScale": 8.0,"seed": 0}})response = bedrock.invoke_model(body=body, modelId="amazon.nova-canvas-v1:0", accept="application/json", contentType="application/json")response_body = json.loads(response.get("body").read())base64_image = response_body.get("images")[0]base64_bytes = base64_image.encode('ascii')image_bytes = base64.b64decode(base64_bytes)image = Image.open(io.BytesIO(image_bytes))image.save(file)return filedef generate_story(story, page_layout):outputs = []cells = [cell for row in page_layout for cell in row]for idx, text in enumerate(story):if idx > 0:time.sleep(20)file = image_from_text(text, int(CELL_WIDTH * cells[idx]), DEFAULT_IMG_HEIGHT, f"story-{idx}.jpg")outputs.append(file)return outputsdef build_pdf(images, page_layout, file):pdf = FPDF(orientation="portrait")pdf.set_margin(0)pdf.add_page()row_height = pdf.eph / len(page_layout)cell_width = pdf.epw / 12print(f"{pdf.epw} {cell_width} {cell_width*7}")# full page height, half page width pdf.epw/2img_idx = 0for r_idx, row in enumerate(page_layout):  cursor_y = r_idx * row_heightfor c_idx, cell in enumerate(row):    cursor_x = 0 if c_idx == 0 else cell_width * row[c_idx - 1]pdf.set_y(cursor_y)pdf.image(images[img_idx], h=row_height, w=cell_width * cell, x=cursor_x)        img_idx += 1pdf.output(file)images = generate_story(story, page_layout)
build_pdf(images, page_layout, "storyboard.pdf")

Nova模型生成的完整故事图片故事集如下:

 

调整图片生成风格

假如客户对以上的生成结果很满意,但建议将风格修改为卡通风格。我们可以再次利用Nova Canvas,以内可以通过其调整提示词实现不同的图像风格。

我们修改如下代码中的修改提示词部分,再次运行生成图片。

# ...
# existing code from previous exampledef generate_story_with_style(style, story, page_layout, prefix):outputs = []cells = [cell for row in page_layout for cell in row]for idx, text in enumerate(story):if idx > 0:time.sleep(20)file = image_from_text(style + text, int(CELL_WIDTH * cells[idx]), DEFAULT_IMG_HEIGHT, f"{prefix}-story-{idx}.jpg")outputs.append(file)return outputsstyle = "A cartoon style image. "
prefix="cartoon"styled_images = generate_story_with_style(style, story, page_layout, prefix)
build_pdf(styled_images, page_layout, f"{prefix}-storyboard.pdf")

然后重新运行脚本,便可以生成卡通化的故事图片集。

结论

  • Nova Canvas提供了多种方法调整生成的图像,包括修改提示词、调整种子值、配置 cfgScale 以及负面提示词。
  • 可以批量生成图像,并将其组合成PDF故事图片集,用于快速展示电影、产品、图像、文本等方面的创意概念。
  • 可通过修改提示词风格(如"cartoon style")来快速匹配客户的不同图片生成需求。

通过Nova以上强大的功能,我们就可以仅需几秒就可以生成高质量的图片故事集,极大提高在商品海报、活动营销策划、产品概念展示等方面的工作效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21785.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】第八弹---全面解析数据库表的增删改查操作:从创建到检索、排序与分页

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】 目录 1 表的增删改查 1.1 Create 1.1.1 单行数据 全列插入 1.1.2 多行数据 指定列插入 1.1.3 插入否则更新 1.1.4 替…

标量化rknn的输入输出向量转换处理

这是一篇技术探索。yolo11模型生成后,我发现它无法在rknn环境正确识别出目标对象。而在宿主机上,或者直接调用.pt转换过的.onnx模型是可以得到正确结果的。这篇文章对应近乎一天的工作。最终的结论就是。这是一个模型量化的问题,与yolo的版本…

边缘安全加速(Edge Security Acceleration)

边缘安全加速(Edge Security Acceleration,简称ESA)是一种通过将安全功能与网络边缘紧密结合来提升安全性和加速网络流量的技术。ESA的目标是将安全措施部署到接近用户或设备的地方,通常是在网络的边缘,而不是将所有流…

图表控件Aspose.Diagram入门教程:使用 Python 将 VSDX 转换为 PDF

将VSDX转换为PDF可让用户轻松共享图表。PDF 文件保留原始文档的布局和设计。它们广泛用于演示文稿、报告和文档。在这篇博文中,我们将探讨如何在 Python 中将 VSDX 转换为 PDF。 本文涵盖以下主题: Python VSDX 到 PDF 转换器库使用 Python 将 VSDX 转…

两相四线步进电机的步距角为什么是1.8度

机缘 在CSDN查了好多文章,发现都是用公式来解释1.8的步距角(Q=360/MZ),因为转子是50齿,4拍一个循环,所以θ360度/(50x4)1.8度。估计第一次接触步进电机的什么…

Helix——Figure 02发布通用人形机器人控制的VLA:一组神经网络权重下的快与慢双系统,让两个机器人协作干活

前言 过去一周,我花了很大的心思、力气,把deepseek的GRPO、MLA算法的代码解析通透,比如GRPO与PPO的详细对比,再比如MLA中,图片 公式 代码的一一对应 2.20日晚,无意中刷到figure 02发布Helix的一个演示视频…

Unity游戏制作中的C#基础(2)变量与数据类型

1.变量 (1)变量的定义:变量是用于存储数据的容器。 (2)变量的作用:在程序运行过程中,我们可以将各种类型的数据存储在变量中,方便后续使用和操作。 (3)变量…

革新之力:数字科技——重塑未来的超越想象之旅

在21世纪的科技浪潮中,数字科技如同一股不可阻挡的洪流,正以前所未有的速度和广度改变着我们的生活、工作乃至整个社会的结构。它不仅是技术的简单迭代,更是对人类社会认知边界的拓宽,对经济模式、社会治理、文化形态等多方面的深…

python pandas下载

pandas pandas:就是一个可以处理数据的 python 库 核心功能: 数据的清洗:处理丢失值,重复值数据分析:计算和统计信息,或分组汇总数据可视化:结合 图标库(Matplotlib)完成数据可视化…

将Google文档导入WordPress:简单实用的几种方法

Google文档是内容创作者非常实用的写作工具。它支持在线编辑、多人协作,并能够自动保存内容。但当我们想把Google文档中的内容导入WordPress网站时,可能会遇到一些小麻烦,比如格式错乱、图片丢失等问题。本文将为大家介绍几种简单实用的方法&…

java面试场景问题

还在补充,这几天工作忙,闲了会把答案附上去,也欢迎各位大佬评论区讨论 1.不用分布式锁如何防重复提交 方法 1:基于唯一请求 ID(幂等 Token) 思路:前端生成 一个唯一的 requestId(…

【笔记ing】C语言补充、组成原理数据表示与汇编实战、操作系统文件实战(高级阶段)

【第19节 C语言语法进阶】 【19.1 条件运算符与逗号运算符】 1 条件运算符 条件运算符是C语言中唯一的一种三亩运算符。三目运算符代表有三个操作数;双目运算符代表有两个操作数,如逻辑运算符就是双目运算符;弹幕运算符代表有一个操作数&a…

GAMES101-现代计算机图形学入门笔记

主讲老师:闫令琪,此处仅做个人笔记使用。如果我的分享对你有帮助,请记得点赞关注不迷路。 课程链接如下:GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili 课程分为四部分:光栅化、几何、光线追踪、模拟 图形…

激光工控机在自动化生产线中有什么关键作用?

激光工控机作为自动化生产线的核心设备,通过高精度控制、快速响应和智能化集成,在提升效率、保障质量、实现柔性制造等方面发挥着不可替代的作用。以下是其关键作用的具体分析: 一、实现高效连续生产: 1.高速加工能力&#xff1…

高等数学(上)题型笔记(六)定积分的应用

目录 1 三角函数定积分的结论 2 定积分的微元法(元素法) 2.1 使用条件 2.2 使用步骤 3 定积分的几何应用 3.1 平面图形的面积 3.1.1 直角坐标系的情形 3.1.1.1 X型 3.1.1.2 Y型 3.1.1.3 双型 3.1.1.4 复合:分割型 3.1.1.5 引入参…

QT项目——天气预报

文章目录 前言一、项目介绍二、项目基础知识1. 软件开发网络通信架构1.1 CS架构 / BS架构1.1.1 CS架构(客户端-服务器架构)1.1.2 BS架构(浏览器-服务器架构) 1.2 HTTP 基本概念 2. QT 下 HTTP 编程2.1 类的解析2.2 示例程序 3. JS…

最优化方法-牛顿法

牛顿法 泰勒级数 泰勒级数展开 $$ \begin{aligned} f(x)&\lim\limits_{n\rightarrow \infin}\sum\limits_{i1}n\frac{1}{n!}f{(n)}(x_0)(x-x_0)^n\ &f(x_0)f’(x_0)(x-x_0)\frac{f’(x_0)}{2!}(x-x_0)2\cdots\frac{1}{n!}fn(x_0)(x-x_0)^n\ &\quad~ O\left[(x-x_…

论文笔记(七十二)Reward Centering(二)

Reward Centering(二) 文章概括摘要2 简单的奖励中心 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.0…

halcon机器视觉深度学习对象检测,物体检测

目录 效果图操作步骤软件版本halcon参考代码本地函数 get_distinct_colors()本地函数 make_neighboring_colors_distinguishable() 效果图 操作步骤 首先要在Deep Learning Tool工具里面把图片打上标注文本, 然后训练模型,导出模型文件 这个是模型 mod…

MySQL修改JSON格式数据示例

最近发现有个数据是用JSON格式直接存到表格里面的,大概就是下面这样的 然后需要修改里面某个属性的值,一开始我想的是 REPLACE 替换 UPDATE test_1 SET content REPLACE(content, {"age": 15, "name": "w5"}, {"ag…