传统视频分析应用程序及其开发工作流程通常建立在固定功能、有限的模型上,这些模型旨在检测和识别仅一组预定义的对象。
借助生成式 AI、NVIDIA NIM 微服务和基础模型,您现在可以使用更少的模型构建具有广泛感知和丰富上下文理解的应用程序。
视觉语言模型 (VLM)是一类新的生成式 AI 模型,它为视觉 AI 代理提供支持,使其能够理解自然语言提示并执行视觉问答。通过结合 VLM、LLM 和最新的 Graph-RAG 技术,您可以构建一个能够理解长篇视频的强大视觉 AI 代理。
这些视觉 AI 代理将部署在工厂、仓库、零售店、机场、交通路口等各个地方。它们将帮助运营团队利用从自然互动中产生的更丰富的见解做出更好的决策。
在本文中,我们将向您展示如何使用NVIDIA AI Blueprint for Video Search and Summarization无缝构建用于长篇视频理解的 AI 代理。您可以申请抢先体验这个新的 AI Blueprint。
发布用于视频搜索和摘要的 NVIDIA AI 蓝图
视频 1. 使用视觉语言模型构建视觉 AI 代理
由 NVIDIA NIM 提供支持的 NVIDIA AI Blueprints 是典型生成式 AI 用例的参考工作流程。NVIDIA NIM是一组微服务,包括行业标准 API、领域特定代码、优化的推理引擎和企业运行时。它提供多个 VLM 来构建视觉 AI 代理,该代理可以处理实时或存档的图像或视频,以使用自然语言提取可操作的见解。
新的视频搜索和摘要 AI 蓝图通过使用 VLM、LLM 和最新的 RAG 技术提供长篇视频理解的方法,加速了视觉 AI 代理的开发。
为了与代理进行交互,可以使用一组易于使用的 REST API 来实现视频摘要、视频互动问答以及直播流上的自定义警报以查找特定事件。REST API 可用于将代理集成到您自己的应用程序中,并由参考 UI 用于快速测试。
蓝图中使用的模型可以来自NVIDIA API 目录中的模型预览 API 和可下载的 NIM 微服务。例如,AI 蓝图使用 NVIDIA 托管的llama-3_1-70b-instruct NIM 微服务作为 NVIDIA NeMo Guardrails、Context-Aware RAG (CA-RAG) 和 Graph-RAG 模块的 LLM。您可以从API 目录中选择各种不同的 LLM 和 VLM ,无论是 NVIDIA 托管的还是本地部署的。
用于视频搜索和摘要的视觉 AI 代理
构建能够理解长视频的视觉 AI 代理需要将 VLM 和 LLM 与数据存储组合在一起。蓝图提供了一种组合所有这些组件的方法,以实现可扩展且 GPU 加速的视频理解代理,这些代理可以执行多项任务,例如摘要、问答和检测直播视频上的事件。
蓝图由以下部分组成:
流处理程序:管理与其他组件(如 NeMo Guardrails、CA-RAG、VLM 管道、分块和 Milvus Vector DB)的交互和同步。
NeMo Guardrails:过滤无效的用户提示。它利用了 LLM NIM 微服务的 REST API。
VLM 管道- 解码流处理器 生成的视频块,使用基于 NVIDIA Tensor RT 的视觉编码器模型为视频块生成嵌入,然后利用 VLM 为用户查询生成每个块的响应。它基于 NVIDIA DeepStream SDK。
VectorDB:存储中间每个块的 VLM 响应。
CA-RAG 模块:从每个块 加拿大华侨华人数据 的 VLM 响应中提取有用信息并将其聚合以生成单个统一的摘要。CA-RAG(上下文感知检索增强生成)使用 LLM NIM 微服务的 REST API。
Graph-RAG 模块:捕捉视频中存在的复杂关系,并将重要信息作为节点和边的集合存储在图形数据库中。然后由 LLM 查询以进行交互式问答。
该图显示了视觉搜索和摘要代理的架构。它包括如何处理视频以及如何使用视频生成摘要、警报和问答的数据流。
图 1.摘要视觉 AI 代理的高级架构
这里有更多关于视频提取和检索管道的信息,以及蓝图如何对直播和长视频进行总结、问答和警报。
视频提取
要总结视频或进行问答,必须构建视频的综合索引以捕获所有重要信息。这是通过结合 VLM 和 LLM 来生成密集字幕和元数据以构建视频知识图谱来实现的。此视频提取管道采用 GPU 加速,并可通过更多 GPU 进行扩展以缩短处理时间。
VLM 管道和 CA-RAG
目前,大多数 VLM 仅接受有限数量的帧,例如 8/10/100。它们也无法为较长的视频准确生成字幕。对于较长的视频(例如长达一小时的视频),采样帧之间的间隔可能为 10 秒甚至更长。这可能会导致某些细节被遗漏或动作无法被识别。
解决此问题的方法是从长 银行文件管理系统 视 频中创建较小的块,使用 VLM 单独分析这些块以生成密集字幕,然后汇总和聚合结果以生成整个文件的单个摘要。提取过程的这一部分是 VLM 管道和 CA-RAG 模块。
这种分块和字幕策略也可以应用于直播。蓝图包括一个从 RTSP 服务器接收流数据的流管道。NVIDIA AI 蓝图根据用户配置的块持续时间不断生成视频块片段。然后,VLM 管道为这些块生成字幕。
NVIDIA AI 蓝图不断从 VLM 管道收集字幕。当根据用户配置的摘要持续时间处理了足够多的块时,收集到的块将发送到 CA-RAG 进行汇总和聚合。蓝图继续处理下一个块。摘要使用 HTTP 服务器发送的事件流式传输到客户端。
知识图谱和Graph-RAG模块
为了捕获 VLM 生成的复杂信息,在视频采集期间构建并存储知识图谱。使用 LLM 将密集字幕转换为一组节点、边和相关属性。此知识图谱存储在图形数据库中。通过使用 Graph-RAG 技术,LLM 可以访问此信息以提取摘要、问答和警报的关键见解,并超越 VLM 本身的能力。
图表显示了由动作词连接的橙色和紫色圆圈。工人搬运箱子、工人放下箱子、人员检查禁区和货盘附近的箱子就是一些例子。
图 3. 从仓库短视频中生成的知识图谱
视频检索
提取视频后,CA-RAG 和 Graph-RAG 模块背后的数据库包含大量有关视频中对象、事件和描述的信息。LLM 可以查询和使用这些信息来执行多项任务,包括摘要、问答和警报。
对于每项任务,蓝图都公开了简单的 REST API,可以调用这些 API 来与您的应用程序集成。还提供了参考 UI,让您可以快速试用蓝图的功能并使用多个配置选项调整代理。
总结
当视频文件通过 API 上传到代理时,调用summarize端点以获取视频摘要。蓝图负责处理所有繁重工作,同时提供大量可配置参数。
提交summarize请求时,会出现用于调整输出的提示。这将控制 VLM 密集字幕和基于 LLM 的字幕聚合以生成最终摘要。
提示(VLM):向 VLM 发出 cg 线索 提示,以生成密集字幕。可以调整此提示,以准确告知 VLM 应注意哪些类型的对象、事件和动作。
字幕摘要 (LLM):用于合并 VLM 字幕的 LLM 提示。这可用于控制字幕的细粒度以及要包含的细节级别。
摘要汇总 (LLM):根据汇总的标题生成最终摘要输出。应调整此提示以指定输出格式、摘要长度以及应包含在输出中的任何关键信息的列表。
除了提示配置之外,根据您的使用情况调整视频分块策略也很重要。根据摘要是通过视频文件还是直播流进行,有几种不同的选项。
视频文件
chunk_duration:整个视频被分成多个chunk_duration长度的片段,从这个片段中采样N 个(VLM 相关的)帧并发送到 VLM 进行推理。片段持续时间应该足够小,以便N 个帧可以捕获事件。