微信扫码
与创始人交个朋友
我要投稿
视觉语言模型(VLM)这项 AI 技术所取得的突破令人振奋。它提供了一种更加动态、灵活的视频分析方法。VLM 使用户能够使用自然语言与输入的图像和视频进行交互,因此更加易于使用且更具适应性。这些模型可以通过 NIM 在 NVIDIA Jetson Orin 边缘 AI 平台或独立 GPU 上运行。本文将探讨如何构建基于 VLM 的视觉 AI 智能体,这些智能体无论是在边缘抑或是在云端都能运行。
什么是视觉 AI 智能体
借助 VLM 驱动的视觉 AI 智能体,您可以在录制或实时视频中使用自然语言来提出各种问题,并获得反映真实意图和上下文的洞察。这些智能体可以通过易于使用的 REST API 进行交互,并与其他服务甚至移动应用集成。新一代视觉 AI 智能体能够帮助总结场景、创建各种警报,并使用自然语言从视频中提炼可操作的洞察。
您可将 NVIDIA Metropolis 带来的视觉 AI 智能体工作流作为参考解决方案,加快开发 VLM 驱动的 AI 应用。这些应用无论部署在边缘,还是部署在云端,都能够通过理解上下文从视频中提炼洞察。
如果部署在云端,开发者可以使用 NVIDIA NIM(一套包含行业标准 API、特定领域代码、优化推理引擎和企业运行时的推理微服务)驱动视觉 AI 智能体。一开始可访问 API 目录,直接在浏览器上探索和试用基础模型,还可在 Metropolis NIM Workflows GitHub 页面上查看 NIM 驱动的视觉 AI 智能体示例。
本文将重点介绍 Jetson Orin 上的边缘用例实现,探讨如何使用 NVIDIA JetPack SDK 的新功能——适用于边缘部署的 Jetson 平台服务。如图 1 所示,我们将构建一个生成式 AI 驱动的应用,来检测用户在实时视频流中使用自然语言设置的事件,然后通知用户。
图 1. 在视频流中检测火灾的 AI 智能体移动应用
使用 Jetson 平台服务
为边缘构建视觉 AI 智能体
Jetson 平台服务是一套预构建微服务,它为在 NVIDIA Jetson Orin 上构建计算机视觉解决方案提供了开箱即用的基本功能。这套微服务包含支持生成式 AI 模型的 AI 服务,例如零样本检测和各种先进的 VLM 等。本文将带您了解更多有关 Jetson 平台服务主要功能的信息。
图 2. NVIDIA JetPack 6.0 堆栈
VLM 将大语言模型与视觉 transformer 相结合,实现了对输入文本和视觉图的复杂推理。凭借这种灵活性,VLM 适用于各种用例,并可通过调整提示来作出动态调整。
VILA 具有 SOTA 推理能力,并且能够通过优化每张图像的词元来提高速度,因此是 Jetson 上的首选 VLM。图 3 是 VILA 架构和基准性能的概览图。
如要进一步了解 VILA 及其在 Jetson 上的性能,请参见视觉语言智能和边缘 AI 2.0。
图 3. VILA 结合了视觉 transformer 和大语言模型
虽然尝试 VLM 并使用它在输入图像上进行交互式对话十分有趣,但将这项技术应用到实际场景中才是重点。
因此,我们必须想办法让大语言模型执行有用的任务,并将它们融入到更大的系统中。通过将 VLM 与 Jetson 平台服务相结合,我们可以创建一个基于 VLM 的视觉 AI 智能体应用,来检测实时流摄像头上的事件,并通过移动应用向用户发送通知。
该应用由生成式 AI 驱动,并使用了 Jetson 平台服务的多个组件。图 4 显示了这些组件如何通过协同工作创造出完整的系统。该应用还可与防火墙、物联网网关和云服务配合使用,实现安全远程访问。
构建基于 VLM 的
视觉 AI 智能体应用
下面将介绍使用 Jetson 平台服务构建视觉 AI 智能体系统的总体步骤。该应用的完整源代码位于 GitHub:
https://github.com/NVIDIA-AI-IOT/jetson-platform-services
VLM AI 服务
第一步是围绕 VLM 构建一个微服务。
nanoLLM 项目为 Jetson Orin 提供了对 VLM 的支持。如图 4 所示,我们可以使用 nanoLLM 程序库,通过 Python API 在 Jetson 上下载、量化和运行 VLM,并将其转化成一个微服务。
步骤如下:
使用易于调用的函数封装模型。
使用 FastAPI 添加 REST API 和 WebSocket
使用 mmj_utils 添加 RTSP 流输入和输出。
将元数据输出到所需的通道,例如 Prometheus、Websocket 或 Redis。
图 4. VLM AI 服务架构
这时,微服务已经形成了一个检索框架、更新 REST API 的提示、调用模型、输出结果的主循环。这可以用下面的伪代码来表示:
# Add REST APIapi_server = APIServer(prompt_queue)api_server.start()# Add Monitoring Metricsprometheus_metric = Gauge()prometheus.start_http_server()# Add RTSP I/Ov_input = VideoSource(rtsp_input)v_output = VideoOutput(rtsp_output)# Load ModelModel = model.load()While True: #Update Image & Promptimage = v_input.capture()prompt = prompt_queue.get()# Inference Modelmodel_output = predict(image, prompt)# Generate outputsmetadata = generate_metadata(image, model_output)overlay = generate_overlay(image, model_output)# Output to Redis, Monitoring, RTSPredis_server.xadd(metadata)Prometheus_metric.set(metadata)v_output.render(overlay)
我们在 GitHub 上提供了一个实用程序库,作为集成这些常见组件的起点,并提供了完整的参考示例。
提示工程
如图 5 所示,VLM 有三个主要的提示组件:系统提示、用户提示和输入框。我们可以调整 VLM 的系统提示和用户提示,教它如何评估实时流上的警报,并以结构化格式输出结果,以便进行解析并与其他服务集成。
图 5. 使用 VLM 生成警报流程
在本例中,我们使用系统提示来解释输出格式和模型目标。系统提示可以被告知用户提供的是一个警报列表。提示会将输入框架上的每个警报评估为“真”或“假”,并以 JSON 格式输出结果。
然后,可通过 REST API 提供用户提示。此时会开放一个端点用于查询和警报输入。用户输入的内容会与系统提示相结合,连同输入实时流中的一个帧一起提供给 VLM。VLM 对帧上的完整提示进行评估并生成一个回答。
该回答被解析后以 JSON 格式提供,我们将它与警报监控服务和 WebSockets 集成,以跟踪警报,并将警报发送到移动应用。
与 Jetson 平台服务
和移动应用集成
现在,这个完整的端到端系统已形成,并且可以与移动应用组成 VLM 驱动的视觉 AI 智能体。图 6 显示了 VLM、Jetson 平台服务、云和移动应用架构图。
图 6. 使用 Jetson 平台服务的
VLM AI 服务工作流
为获得提供给 VLM 的视频输入,Jetson 平台服务网络服务和 VST 会自动发现并提供连接网络的 IP 摄像头。这些摄像头通过 VST REST API 自动提供给 VLM 服务和移动应用使用。
移动应用可通过 API Gateway 访问 VST 开放的 API 以及 VLM 服务。现在,移动应用可以使用 VST API 获取实时流列表,并在应用主屏幕上向用户展示这些流的预览。
用户可以在应用中使用自然语言,对所选的实时流设置自定义警报,例如“是否发生火灾”等。提交后,应用将调用 VLM 服务的流来控制 API,告知其使用哪个实时流摄像头作为输入。然后,它会调用警报 API 来设置 VLM 的警报规则。在收到这两个请求后,VLM 将开始评估实时流上的警报规则。
当 VLM 确定警报为“真”时,它会在连接移动应用的 WebSocket 上输出警报状态。这将触发移动设备上的弹出通知,用户可以点击该通知进入聊天模式,并提出后续问题。
图 7. 通过移动应用进行视频直播和聊天
如图 7 所示,用户可以与 VLM 就输入的实时流进行来回聊天,甚至可以使用 VST 的 WebRTC,直接在应用中查看实时流。
通过 VLM、Jetson 平台服务和移动应用,您现在可以为连接到 Jetson 的实时流摄像头设置任何自定义警报,并获得实时通知。
视频 1. 在边缘构建生成式 AI 驱动的视频智能体演示
结论
本文讨论了如何通过结合 VLM 与 Jetson 平台服务来构建视觉 AI 智能体。开始时可访问 Jetson 平台服务产品页面。我们提供了一个启动 VLM AI 服务的预构建容器以及预构建安卓移动应用 APK。
可在 GitHub 上获取 VLM AI 服务的完整源代码。这是学习如何使用 VLM 和自行构建微服务的绝佳参考。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-03-30
2024-05-09
2024-07-07
2024-07-01
2024-06-24
2024-07-23
2024-06-08
2024-06-05
2024-06-21
2024-07-11
2024-11-12
2024-11-11
2024-10-29
2024-10-22
2024-10-18
2024-10-16
2024-10-15
2024-10-10