计算机视觉/视频分析

基于 NVIDIA NIM 的多模态视觉 AI 智能体构建解决方案

视觉数据(从图像到 PDF 再到流式视频)呈指数级增长,这使得人工审查和分析几乎不可能实现。组织正在努力将这些数据大规模转换为切实可行的见解,从而导致错失机会并增加风险。

为了应对这一挑战,视觉语言模型(VLMs)正在成为强大的工具,将图像和视频的视觉感知与基于文本的推理相结合。与仅处理文本的 传统大语言模型 (LLMs)不同,VLMs 使您能够构建 视觉 AI 智能体 ,以便理解和处理复杂的多模态数据,并对其采取行动,从而实现实时决策和自动化。

想象一下,拥有一个智能 AI 智能体,它可以分析远程摄像头镜头以检测野火的早期迹象,或者扫描业务文档以提取隐藏在图表、表格和图像中的关键信息——这一切都可以自动完成。

借助 NVIDIA NIM 微服务 ,构建这些先进的视觉 AI 智能体比以往更容易、更高效。NIM 微服务提供灵活的自定义、简化的 API 集成和流畅的部署,使您能够根据自己的独特业务需求打造动态智能体。

在本文中,我们将指导您使用 NVIDIA NIM 微服务设计和构建智能视觉 AI 智能体。我们将介绍可用的不同类型的视觉 AI 模型,分享四个示例应用(流式视频警报、结构化文本提取、多模态搜索和 few-shot 分类),并提供 Jupyter notebook 帮助您入门。有关将这些模型变为现实的更多信息,请参阅 /NVIDIA/metropolis-nim-workflows GitHub repo。

视觉 AI 模型的类型 

要构建强大的视觉 AI 智能体,您可以使用以下核心视觉模型类型:

  • VLM
  • 嵌入模型
  • 计算机视觉 (CV) 模型

这些模型是开发智能视觉 AI 智能体的必要基础模块。虽然 VLM 是每个智能体的核心引擎,但 CV 和嵌入模型可以通过提高物体检测等任务的准确性或解析复杂文档来增强其功能。

在本文中,我们使用视觉 NIM 微服务来访问这些模型。每个视觉 NIM 微服务都可以通过简单的 REST API 轻松集成到您的工作流程中,从而对文本、图像和视频进行高效的模型推理。首先,您可以在 build.nvidia.com, 上试用托管的预览 API,而无需本地 GPU。

GIF shows the llama-3.2-vision-90b model summarizing an image.
图 1.build.nvidia.com 上的 Llama-3.2-vision-90b 模型

视觉语言模型 

VLM 通过添加视觉功能为语言模型带来了新的维度,使其成为多模态模型。这些模型可以处理图像、视频和文本,使其能够解释视觉数据并生成基于文本的输出。VLM 用途广泛,可以针对特定用例进行微调,也可以根据视觉输入为问答等任务提供提示。

NVIDIA 及其合作伙伴提供多个 VLM 作为 NIM 微服务,每个 VLM 在大小、延迟和功能方面都各不相同(表 1)。

公司 模型 尺寸 说明
NVIDIA VILA 400 亿 基于 SigLIP 和 Yi 构建的强大通用模型,适用于几乎所有的用例。
NVIDIA Neva 220 亿 结合了 NVGPT 和 CLIP 的中型模型,可提供更大的多模态模型的功能。
元数据 Llama 3.2 90 亿/11 亿 首款支持视觉的 Llama 模型,有两种尺寸,擅长处理一系列视觉语言任务,并支持更高分辨率的输入。
微软 Phi-3.5 视觉 42 亿 这是一个小型、快速的模型,擅长 OCR,并且能够处理多张图像。
微软 Florence-2 70 亿 能够使用简单的文本提示进行字幕、物体检测和分割的多任务模型。
表 1.VLM NIM 微服务

嵌入模型 

嵌入模型将输入数据(例如图像或文本)转换为特征丰富的密集向量(称为嵌入)。这些嵌入封装了数据中的基本属性和关系,从而完成相似性搜索或分类等任务。嵌入通常存储在 向量数据库 中,GPU 加速搜索可以快速检索相关数据。

嵌入模型在创建智能体方面发挥着至关重要的作用。例如,它们支持 检索增强生成 (RAG)工作流,使智能体能够从不同数据源提取相关信息,并通过上下文学习提高准确性。

公司 模型 说明 案例
NVIDIA NV-CLIP 生成文本和图像嵌入的多模态基础模型 多模态搜索、零样本分类
NVIDIA NV-DINOv2 视觉基础模型生成高分辨率图像嵌 相似性搜索、Few-shot 分类
表 2、 嵌入 NIM 微服务

计算机视觉模型 

CV 模型专注于图像分类、物体检测和光学字符识别(OCR)等专业任务。这些模型可以通过添加详细的元数据来增强 VLM,从而提高 AI 智能体的整体智能水平。

公司 模型 说明 案例
NVIDIA Grounding Dino 开放式物体检测 检测任何内容
NVIDIA OCDRNet 光学字符检测和识别 文档解析
NVIDIA ChangeNet 检测两张图像之间的像素级变化 缺陷检测、卫星图像分析
NVIDIA Retail Object Detection 经过预训练,可检测常见零售商品 损失预防
表 3、 计算机视觉 NIM 微服务

使用视觉 NIM 微服务构建视觉 AI 智能体

以下是如何应用视觉 NIM 微服务创建强大视觉 AI 智能体的真实示例。

为了使使用 NVIDIA NIM 微服务的应用开发更易于使用,我们在 GitHub 上发布了一系列示例。这些示例演示了如何使用 NIM APIs 构建应用或将其集成到您的应用中。每个示例都包括 Jupyter Notebook 教程和演示,即使没有 GPUs 也可以轻松启动。

在 NVIDIA API Catalog 中 ,选择模型页面 (例如 Llama 3.1 405B )。选择“ 获取 API 密钥 ”并 输入您的企业电子邮件 以获得 90 天的 NVIDIA AI Enterprise 许可证,或者使用您的个人电子邮件通过 NVIDIA 开发者计划 访问 NIM

在/NVIDIA/metropolis-nim-workflows GitHub 资源库中,探索 Jupyter Notebook 教程和演示。这些工作流展示了如何将视觉 NIM 微服务与其他组件(如向量数据库和 LLM)相结合,构建功能强大的 AI 代理,以解决现实世界中的问题。借助 API 密钥,您可以轻松重新创建本文中展示的工作流,获得 Vision NIM 微服务的实操体验。

以下是一些示例工作流程:

VLM 流式视频警报代理 

由于每秒都会生成大量视频数据,因此无法手动查看关键事件(例如包裹交付、森林火灾或未经授权的访问)的视频片段。

此工作流程展示了如何使用 VLM、Python 和 OpenCV 构建 AI 代理,该代理可 自动监控用户定义事件的直播 。当检测到事件时,系统会生成警报,从而节省大量手动查看视频的时间。由于 VLM 的灵活性,可以通过更改提示来检测新事件,无需为每个新场景构建和训练自定义 CV 模型。

视频 1.由 NVIDIA NIM 提供支持的视觉 AI 智能体

在图 2 中,VLM 在云端运行,而视频流管道在本地运行。此设置使演示几乎可以在任何硬件上运行,并通过 NIM 微服务将繁重的计算卸载到云端。

An architecture diagram shows the input of a video stream to frame decode and subsampling step, while a user alert creates a request for the VLM NIM microservice. The response is parsed and goes to overlay generation and a WebSocket server for the alert notification.
图 2. 流式视频警报代理架构

以下是构建此智能体的步骤:

  1. 加载和处理视频流 :使用 OpenCV 加载视频流或文件,对其进行解码,并对帧进行子采样。
  2. 创建 REST API 端点:使用 FastAPI 创建控制 REST API 端点,用户可以在其中输入自定义提示。
  3. 与 VLM API 集成:包装器类通过发送视频帧和用户提示来处理与 VLM API 的交互。它形成 NIM API 请求并解析响应。
  4. 视频叠加响应: VLM 响应叠加到输入视频上,并使用 OpenCV 进行实时观看。
  5. 触发警报: 通过 WebSocket 服务器发送经过解析的响应,以与其他服务集成,从而根据检测到的事件触发通知。

有关构建 VLM 驱动的流式视频警报代理的更多信息,请参阅 GitHub 上的 /NVIDIA/metropolis-nim-workflows notebook 教程和演示。您可以实验不同的 VLM NIM 微服务,找到适合您用例的最佳模型。

有关 VLM 如何借助 NVIDIA Jetson Jetson 平台服务改变边缘应用的更多信息,请参阅 为边缘开发生成式 AI 驱动的视觉 AI 代理 ,并在 Jetson 平台服务 页面上探索其他资源,了解 VLM 如何与 NVIDIA Jetson 和 Jetson 平台服务一起改变边缘应用。

结构化文本提取代理 

许多商业文档以图像形式存储,而非 PDF 等可搜索格式。在搜索和处理这些文档时,这构成了重大挑战,通常需要手动审查、标记和组织。

虽然光学字符检测和识别(OCDR)模型已经推出一段时间,但它们通常会返回杂乱的结果,这些结果无法保留原始格式或解释其视觉数据。在处理不规则格式的文档(例如照片 ID,形状和大小各异)时,这变得尤其具有挑战性。

传统的 CV 模型使得处理此类文档既耗时又昂贵。然而,通过将 VLM 和 LLM 的灵活性与 OCDR 模型的精度相结合,您可以构建 强大的文本提取工作流,以自动解析文档 并将用户定义的字段存储在数据库中。

An architecture diagram shows form requests and responses to and from the OCDR, VLM, and LLM NIM microservices, plus the steps of combining OCD metadata with the prompt, the LLM formatting prompt, and the parsing of the formatted response.
图 3. 结构化文本提取代理架构

以下是结构化文本提取工作流构建步骤:

  1. 文档输入: 为 OCDR 模型(例如 OCDRNet 或 Florence)提供文档图像,该模型返回文档中所有检测到的字符的元数据。
  2. VLM 集成: VLM 会处理用户的提示,指定所需字段并分析文档。它使用来自 OCDR 模型的检测字符来生成更准确的响应。
  3. LLM 格式: VLM 的响应将传递给 LLM,它将数据格式化为 JSON,并将其呈现为表格。
  4. 输出和存储: 提取的字段现在采用结构化格式,准备插入数据库或存储以供日后使用。
Screenshots of the microservice extracting text from a photo ID. The screenshots include specifying the model options for VLM, OCDR, and LLM, plus the user-defined fields and the structured output, filled out with the information from the actual ID.
图 4. 使用视觉 NIM 微服务的结构化文本提取示例 

借助预览 API,您可以组合多个模型以构建复杂的工作流,从而轻松进行实验。通过演示 UI,您可以在 build.nvidia.com 上提供的不同 VLM、OCDR 和 LLM 模型之间切换,以进行快速实验。

使用 NV-DINOv2 进行少量采样分类 

NV-DINOv2 可从高分辨率图像中生成嵌入,非常适合处理需要详细分析的任务,例如仅使用少量样本图像进行缺陷检测。该工作流演示了如何使用 NV-DINOv2 和 Milvus 向量数据库构建 可扩展的几步分类工作流

An architecture diagram shows how to embed and store few-shot examples and how to inference new images.
图 5.NV-DINOv2 的 Few-shot 分类

以下是 few-shot 分类管道的工作原理:

  1. 定义类并上传样本:用户定义类并为每个类上传一些样本图像。NV-DINOv2 根据这些图像生成嵌入,然后将这些嵌入与类标签一起存储在 Milvus 向量数据库中。
  2. 预测新类: 当上传新图像时,NV-DINOv2 会生成其嵌入,并将其与向量数据库中存储的嵌入进行比较。使用 k-NN 算法识别最近邻,并预测其中的大多数类。

使用 NV-CLIP 进行多模态搜索 

NV-CLIP 具有独特的优势:能够嵌入文本和图像,从而实现 多模态搜索 。通过将文本和图像输入转换为同一向量空间内的嵌入,NV-CLIP 有助于检索与给定文本查询相匹配的图像,从而实现高度灵活且准确的搜索结果。

GIF shows a search for school bus images using natural language prompts with NV-CLIP.
图 6. 使用 NV-CLIP 的多模态搜索(图像和文本)

在此工作流中,用户上传一个图像文件夹,这些图像嵌入并存储在向量数据库中。使用 UI,他们可以输入查询,NV-CLIP 会根据输入文本检索最相似的图像。

可以使用此方法与 VLM 一起构建更高级的智能体,以创建多模态 RAG 工作流,从而使视觉 AI 智能体能够基于过去的经验构建并改进响应。

立即开始使用视觉 AI 智能体 

准备好深入探索并开始构建自己的视觉 AI 智能体了吗?使用 NVIDIA/metropolis-nim-workflows GitHub 存储库中提供的代码作为基础,开发由 NIM 微服务提供支持的自定义工作流和 AI 解决方案。让示例激发新的应用,解决您的特定挑战。

如有任何技术问题或支持,请加入我们的社区,并在 NVIDIA Visual AI Agent 论坛 上与专家交流。

 

标签