为边缘开发由生成式 AI 赋能的视觉 AI 智能体
视觉语言模型(VLM)带来的突破,确实让人眼前一亮。它让视频分析这件事,从“死板搜索”变成了“智能对话”。过去,我们得预设好规则、写好脚本,才能从视频中捞点有价值的信息。现在,直接问就行——“画面里有没有消防车?”“停车场还剩几个空位?”——自然语言就能搞定。而且,这些模型跑在
NVIDIA Jetson Orin
什么是视觉AI智能体
说到视觉 AI 智能体,本质上就是给视频装上了“理解力”。它让你能用自然语言跟实时或录制的视频画面互动,问出真实意图,拿到有上下文洞察的结果。这些智能体对外提供简单的 REST API,很容易集成到其他服务里,甚至可以跟手机 App 联动。
新一代的视觉 AI 智能体,能干的可不止是“识别”。总结场景、设置告警规则,然后用自然语言从视频里提炼出可执行的洞察——这才是它的核心竞争力。如果你正在搭建这类应用,
NVIDIA Metropolis
在云端部署时,开发者可以借助
NVIDIA NIM
本文的重点,当然还是边缘侧。我们会在 Jetson Orin 上展开,用
NVIDIA JetPack SDK
图 1. 在视频流中检测火灾的 AI 智能体移动应用
使用Jetson平台服务为边缘构建视觉AI智能体
Jetson 平台服务
图 2. NVIDIA JetPack 6.0 堆栈
VLM 之所以特别,在于它把大语言模型和视觉 transformer 结合在了一起。对输入的文本和视觉画面都能进行复杂的推理。这意味着它的适应性很强,只要调整一下提示词,就能适配各种不同的场景。
在 Jetson 上,
VILA
图 3. VILA 结合了视觉 transformer 和大语言模型
在输入图像上跟 VLM 对话确实有意思,但真正的价值在于把这项技术用到实际场景里去。所以,我们需要让大语言模型执行有用的任务,并且把它融入到更大的系统里。把 VLM 和 Jetson 平台服务结合起来,就能创建一个智能体应用:实时检测网络摄像头上的事件,再通过手机 App 把通知推送给用户。图 4 展示了这个应用中各组件的协同工作方式。
另外,这个应用可以跟防火墙、物联网网关、云服务配合使用,实现安全的远程访问。
构建基于VLM的视觉AI智能体应用
下面来看看具体的构建步骤。完整的源代码可以在 GitHub 仓库 “jetson-platform-services” 里找到。
VLM AI 服务
第一步,围绕 VLM 构建一个微服务。Jetson Orin 上的 VLM 支持,主要依赖
nanoLLM
- 用一个函数封装模型,方便调用;
- 用 FastAPI 添加 REST API 和 WebSocket 服务;
- 用 mmj_utils 处理 RTSP 流的输入输出;
- 把元数据输出到你需要的目标——比如 Prometheus、Websocket 或 Redis。
图 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 的提示词主要包含三个部分:系统提示、用户提示和输入框。通过调整系统提示和用户提示,我们可以教会模型如何对实时流上的警报进行评估,并且要求它用结构化的格式输出结果——这样后续的服务才能方便地解析和集成。
图 5. 使用 VLM 生成警报流程
举个例子:系统提示用来解释输出格式和模型目标。我们可以告诉模型,用户会提供一个警报列表。模型的任务是把输入的每个警报评估为“真”或“假”,最终以 JSON 格式输出结果。而用户提示则通过 REST API 动态提供。一个端点负责接收查询和警报输入,用户输入的内容会和系统提示组合起来,再和实时流中的一帧画面一起喂给 VLM。模型对完整的提示评估后,生成一个回答。
回答被解析成 JSON 格式后,我们把它和警报监控服务、WebSockets 集成,这样就可以追踪警报状态,并且实时推送到移动应用上。
与Jetson平台服务和移动应用集成
现在,一个完整的端到端系统就已经成型了。图 6 展示了 VLM、Jetson 平台服务、云端和移动应用之间的架构关系。
图 6. 使用 Jetson 平台服务的 VLM AI 服务工作流
视频输入由 Jetson 平台服务中的“网络服务”和 VST 组件自动发现和管理。连接网络的 IP 摄像头会被自动识别,并通过 VST 的 REST API 统一提供给 VLM 服务和移动应用。移动应用通过 API Gateway 访问 VST 和 VLM 的服务。
在应用中,用户可以看到 VST 提供的实时流列表,并进行预览。接着,用户可以用自然语言对选中的实时流设置自定义警报——比如“是否发生火灾”。提交后,应用会调用 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 构建微服务的绝佳参考资料。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名