视觉语言模型(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,并将其转化成一个微服务。
步骤如下:
图 4. VLM AI 服务架构
这时,微服务已经形成了一个检索框架、更新 REST API 的提示、调用模型、输出结果的主循环。这可以用下面的伪代码来表示:
# Add REST API
api_server = APIServer(prompt_queue)
api_server.start()
# Add Monitoring Metrics
prometheus_metric = Gauge()
prometheus.start_http_server()
# Add RTSP I/O
v_input = VideoSource(rtsp_input)
v_output = VideoOutput(rtsp_output)
# Load Model
Model = model.load()
While True:
#Update Image & Prompt
image = v_input.capture()
prompt = prompt_queue.get()
# Inference Model
model_output = predict(image, prompt)
# Generate outputs
metadata = generate_metadata(image, model_output)
overlay = generate_overlay(image, model_output)
# Output to Redis, Monitoring, RTSP
redis_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 和自行构建微服务的绝佳参考。如有技术问题,请访问论坛。
更多信息,请访问:
文章来源“ZENTEK信弘”,作者“NVIDIA”
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0
【开源免费】VideoChat是一个开源数字人实时对话,该项目支持支持语音输入和实时对话,数字人形象可自定义等功能,首次对话延迟低至3s。
项目地址:https://github.com/Henry-23/VideoChat
在线体验:https://www.modelscope.cn/studios/AI-ModelScope/video_chat
【开源免费】Streamer-Sales 销冠是一个AI直播卖货大模型。该模型具备AI生成直播文案,生成数字人形象进行直播,并通过RAG技术对现有数据进行寻找后实时回答用户问题等AI直播卖货的所有功能。
项目地址:https://github.com/PeterH0323/Streamer-Sales