使用某中心Bedrock和某中心Nova Reel通过RAG进行视频生成
生成高质量的自定义视频仍然是一个重大挑战,因为视频生成模型受限于其预训练知识。这一限制影响了广告、媒体制作、教育和游戏等行业,这些行业中视频生成的定制化和控制至关重要。
为了解决这个问题,我们开发了一种视频检索增强生成(VRAG)多模态流水线,该流水线使用图像库作为参考,将结构化文本转换为定制视频。该解决方案利用某中心Bedrock、某中心Nova Reel、某中心OpenSearch服务向量引擎和某中心Simple Storage Service (某中心S3),将图像检索、基于提示词的视频生成和批量处理无缝集成到一个自动化工作流中。用户提供一个感兴趣的对象,解决方案从索引数据集中检索最相关的图像。然后,用户定义一个动作提示词(例如,“摄像机顺时针旋转”),该提示词与检索到的图像相结合以生成视频。来自文本文件的结构化提示词允许在一次执行中生成多个视频,为AI辅助的媒体生成创建了一个可扩展、可重用的基础。
在本文中,我们探讨了通过VRAG进行视频生成的方法,将自然语言文本提示词和图像转换为有依据的高质量视频。通过这个完全自动化的解决方案,可以从结构化的文本和图像输入中生成逼真的、由AI驱动的视频序列,从而简化视频创作过程。
解决方案概述
该解决方案旨在接收结构化文本提示词,检索最相关的图像,并使用某中心Nova Reel进行视频生成。该解决方案将多个组件集成到一个无缝工作流中:
- 图像检索与处理 – 用户提供一个感兴趣的对象(例如,“蓝天”),解决方案查询OpenSearch向量引擎,从包含预索引图像和描述的索引数据集中检索最相关的图像。最相关的图像从某中心S3存储桶中检索。
- 基于提示词的视频生成 – 用户定义一个动作提示词(例如,“摄像机向下平移”),该提示词与检索到的图像相结合,使用某中心Nova Reel生成视频。
- 多提示词批量处理 – 解决方案从
prompts.txt中读取一系列文本模板,这些模板包含占位符,用于实现多个视频生成请求的批量处理及结构化变体:<object_prompt>– 动态替换为查询的对象。<action_prompt>– 动态替换为摄像机运动或场景动作。
- 监控与存储 – 视频生成是异步的,因此解决方案会监控任务状态。完成后,视频存储在某中心S3存储桶中,并自动下载以供预览。生成的视频会显示在笔记本中,并带有相应提示词作为说明文字。
下图说明了解决方案架构。
下图说明了使用Jupyter笔记本的端到端工作流。
该解决方案可服务于以下用例:
- 教育视频 – 通过从主题知识库中拉取相关图像,自动创建教学视频。
- 营销视频 – 通过拉取与特定人群或产品功能相符的图像,创建定向视频广告。
- 个性化内容 – 通过根据用户特定兴趣检索图像,为用户定制视频内容。
先决条件
在部署此解决方案之前,请确保满足以下先决条件:
- 拥有有效的某中心账户
- 熟悉某中心SageMaker笔记本实例
部署解决方案
本文使用某中心CloudFormation模板在某东部(弗吉尼亚北部)区域部署解决方案。有关支持某中心Nova Reel的区域列表,请参阅某中心Bedrock中按区域划分的模型支持。完成以下步骤:
- 选择启动堆栈以部署堆栈。
- 输入堆栈名称,例如
vrag-blogpost,并按照步骤部署。 - 在CloudFormation控制台上,找到
vrag-blogpost堆栈并确认其状态为CREATE_COMPLETE。 - 在SageMaker AI控制台上,选择导航窗格中的笔记本。
- 在笔记本实例选项卡上,找到为本文章预置的笔记本实例
vrag-blogpost-notebook,然后选择打开JupyterLab。 - 打开
sample-video-rag文件夹以查看本文所需的笔记本。
运行笔记本
提供了七个顺序编号的笔记本(从 _00 到 _06),包含逐步说明和目标,以帮助构建对VRAG解决方案的理解。
图像处理(笔记本 _00)
在 _00_image_processing 中,使用某中心Bedrock、某中心S3和SageMaker AI执行以下操作:
- 处理并调整图像大小
- 生成Base64编码
- 将数据存储在某中心S3中
- 使用某中心Nova生成图像描述
- 创建结果可视化
该笔记本展示了以下能力:
- 自动化处理流水线:批量图像处理、智能调整大小和优化、用于API兼容性的Base64编码、图像存储。
- AI驱动分析:高级图像描述生成、基于内容的图像理解、多模态AI集成。
- 健壮的数据管理:高效的存储组织、元数据提取和索引。
图像注入(笔记本 _01)
在 _01_oss_ingestion.ipynb 中,使用某中心Bedrock(使用某中心Titan Embeddings生成嵌入)、某中心S3、OpenSearch Serverless(用于向量存储和搜索)和SageMaker AI执行以下操作:
- 处理并调整图像大小
- 生成Base64编码
- 将数据存储在某中心S3中
- 使用某中心Nova生成图像描述
- 创建结果可视化
该笔记本展示了以下能力:
- 向量数据库管理:索引创建和配置、批量数据注入、高效向量存储。
- 嵌入生成:多模态嵌入创建、维度优化、批量处理支持。
- 语义搜索能力:k-NN搜索实现、查询向量生成、结果可视化。
纯文本视频生成(笔记本 _02)
在 _02_video_gen_text_only.ipynb 中,使用某中心Bedrock(访问某中心Nova Reel)和SageMaker AI执行以下操作:
- 构建以文本为提示词的视频生成请求负载
- 使用某中心Bedrock启动异步任务
- 跟踪进度并等待完成
- 从某中心S3检索生成的视频并在笔记本中渲染
该笔记本展示了以下能力:
- 以文本为输入的自动化视频生成处理
- 具有可观测性的大规模视频生成
文本和图像提示词视频生成(笔记本 _03)
在 _03_video_gen_text_image.ipynb 中,使用某中心Bedrock和SageMaker AI执行以下操作:
- 构建以文本和图像为提示词的视频生成请求负载
- 使用某中心Bedrock启动异步任务
- 跟踪进度并等待完成
- 从某中心S3检索生成的视频并在笔记本中渲染
该笔记本展示了以下能力:
- 以文本和图像为输入的自动化视频生成处理
- 具有可观测性的大规模视频生成
多模态输入视频生成(笔记本 _04)
在 _04_video_gen_multi.ipynb 中,使用某中心Bedrock和SageMaker AI执行以下操作:
- 为输入提示词生成嵌入,并搜索OpenSearch Serverless向量集合索引
- 结合文本和检索到的图像生成视频
该笔记本展示了以下能力:
- VRAG流程
- 具有可观测性的大规模视频生成
使用图像修复更新图像(笔记本 _05)
在 _05_inpainting.ipynb 中,使用某中心Bedrock和SageMaker AI执行以下操作:
- 读取base64图像
- 使用图像修复生成图像
该笔记本展示了以下能力:
- 基于周围上下文和提示词替换和选择图像区域
- 移除不需要的对象、修复图像部分或创造性地修改图像的特定区域
使用增强图像生成视频(笔记本 _06)
在 _06_video_gen_inpainting.ipynb 中,使用某中心Bedrock和SageMaker AI执行以下操作:
- 使用自然语言查询在OpenSearch Service中搜索相关图像
- 使用显式图像掩码定义图像修复区域
- 使用增强图像生成视频
该笔记本展示了以下能力:
- 使用图像修复生成图像
- 使用增强图像生成视频
最佳实践
高效的AI视频生成过程需要数据管理、搜索优化和合规措施的 seamless 集成。该过程必须处理高质量的输入数据,同时维护优化的OpenSearch查询和某中心Bedrock集成以实现可靠处理。适当的某中心S3管理和增强的用户体验功能有助于顺畅操作,严格遵守EU AI法案准则可保持法规合规性。
在生产环境中实现最佳效果,请考虑以下关键因素:
- 数据质量 – 生成视频的质量在很大程度上取决于RAG中使用的图像数据库的质量和相关性。
- 图像字幕 – 为获得最佳结果,考虑加入图像字幕或元数据以为RAG解决方案提供额外上下文。
- 视频编辑 – 尽管RAG可以提供核心视觉元素,但可能需要额外的视频编辑技术来创建精加工的最终产品。
清理
为避免产生未来费用,请清理本文中创建的资源。
- 清空CloudFormation堆栈创建的某中心S3存储桶。
- 在CloudFormation控制台上,选择
vrag-blogpost堆栈,选择删除并确认。这将移除所有预置资源。
结论
VRAG代表了AI驱动视频创作的重大进步,将现有图像数据库与用户提示词无缝集成,以生成上下文相关的视频内容。该解决方案展示了在教育、营销、娱乐等领域的强大应用。随着视频生成技术的不断发展,VRAG为大规模创建引人入胜、具有上下文感知的视频内容提供了坚实基础。FINISHED