为边缘开发由生成式 AI 驱动的视觉 AI 智能体

news2024/11/24 17:22:21

为边缘开发由生成式 AI 驱动的视觉 AI 智能体


文章目录

  • 为边缘开发由生成式 AI 驱动的视觉 AI 智能体
    • 什么是可视化 AI 智能体?
    • 使用 Jetson 平台服务为边缘构建视觉 AI 智能体
    • 构建基于 VLM 的视觉 AI 智能体应用程序
      • VLM AI 服务
      • 提示工程
      • 与 Jetson 平台服务和移动应用程序集成

AI 技术的一项令人振奋的突破——视觉语言模型 (VLM)——为视频分析提供了一种更加动态和灵活的方法。VLM 使用户能够使用自然语言与图像和视频输入进行交互,从而使该技术更易于访问和适应。这些模型可以在 NVIDIA Jetson Orin 边缘 AI 平台或通过 NIM 在独立 GPU 上运行。这篇博文探讨了如何构建可以从边缘运行到云的基于 VLM 的可视化 AI 智能体。

什么是可视化 AI 智能体?

可视化 AI 智能体由 VLM 提供支持,您可以在其中用自然语言提出广泛的问题,并获得反映录制或直播视频中真实意图和背景的见解。这些智能体可以通过易于使用的 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 Platform Services 进行边缘部署。我们将构建一个生成式 AI 应用程序,该应用程序能够检测用户在实时视频流中以自然语言设置的事件,然后通知用户,如下图所示。

使用 Jetson 平台服务为边缘构建视觉 AI 智能体

Jetson 平台服务是一套预构建的微服务,可提供在 NVIDIA Jetson Orin 上构建计算机视觉解决方案的基本开箱即用功能。这些微服务中包含支持生成 AI 模型(例如零样本检测和最先进的 VLM)的 AI 服务。在此博客文章中了解有关 Jetson 平台服务功能亮点的更多信息。

VLM 将大型语言模型与视觉转换器相结合,从而能够对文本和视觉输入进行复杂的推理。这种灵活性使 VLM 能够用于各种用例,并且可以通过调整提示进行动态调整。

Jetson 上首选的 VLM 是 VILA,因为它具有 SOTA 推理能力,并且通过优化每个图像的标记来提高速度。下图显示了 VILA 架构和基准性能的概述。

在文章“视觉语言智能和边缘 AI 2.0”中了解有关 VILA 及其在 Jetson 上的性能的更多信息。

虽然 VLM 很有趣,可以用于实验并实现对输入图像的交互式对话,但将这项技术应用于实际场景至关重要。

找到让大型语言模型执行有用任务的方法并将其整合到更大的系统中非常重要。通过将 VLM 与 Jetson Platform Services 相结合,我们可以创建一个基于 VLM 的视觉 AI 智能体应用程序,该应用程序可检测直播摄像头上的事件并通过移动应用程序向用户发送通知。

该应用程序由生成式 AI 提供支持,并使用 Jetson Platform Services 中的多个组件。图 4 说明了这些组件如何协同工作以创建完整的系统。它还可以与防火墙、IoT 网关和云服务一起使用,以实现安全的远程访问。

构建基于 VLM 的视觉 AI 智能体应用程序

以下部分将介绍使用 Jetson Platform Services 构建视觉 AI 智能体系统的高级步骤。此应用程序的完整源代码位于 GitHub 上。

VLM AI 服务

第一步是围绕 VLM 构建微服务。

nanoLLM 项目提供了 Jetson Orin 上的 VLM 支持。我们可以使用 nanoLLM 库通过 Python API 在 Jetson 上下载、量化和运行 VLM,并将其转换为微服务,如图 4 所示。

我们采取以下步骤:

  • 将模型包装在易于调用的函数中。

  • 使用 FastAPI 添加 REST API 和 WebSocket。

  • 使用 mmj_utils 添加 RTSP 流输入和输出。

  • 将元数据输出到所需的通道,例如 Prometheus、Websocket 或 Redis。

然后,微服务有一个主循环,用于检索帧、从 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 上提供完整的参考示例。

提示工程

VLM 提示有三个主要组件:系统提示、用户提示和输入框,如下图所示。我们可以调整 VLM 的系统和用户提示,教它如何评估直播中的警报,并以可解析和与其他服​​务集成的结构化格式输出结果。

在此示例中,我们使用系统提示来解释模型的输出格式和目标。系统提示可以告知用户正在提供警报列表。提示将在输入帧上将每个警报评估为真或假,并以 JSON 格式输出结果。

然后可以通过 REST API 提供用户提示。将公开一个端点,以启用查询和警报输入。用户输入与系统提示相结合,并与来自输入实时流的帧一起提供给 VLM。然后,VLM 评估帧上的完整提示并生成响应。

此响应被解析并以 JSON 形式提供,我们使用它与警报监控服务和 WebSockets 集成,以跟踪和向移动应用程序发送警报。

与 Jetson 平台服务和移动应用程序集成

完整的端到端系统现在可以整合在一起并与移动应用程序集成,以构建由 VLM 驱动的 Visual AI 智能体。下图显示了 VLM、Jetson 平台服务、云和移动应用程序的架构图。

为了获取 VLM 的视频输入,Jetson Platform Services 网络服务和 VST 会自动发现并提供服务到网络的 IP 摄像头。这些通过 VST REST API 自动提供给 VLM 服务和移动应用程序。

移动应用程序通过 API 网关访问 VST 和 VLM 服务公开的 API。移动应用程序现在可以使用 VST API 获取直播流列表,并在应用程序的主屏幕上向用户显示它们的预览。

然后,用户可以从应用程序中以自然语言设置自定义警报,例如在他们选择的直播流上设置“有火吗”等警报。提交后,应用程序将从 VLM 服务调用流控制 API,告诉它使用哪个直播摄像头作为输入。然后,它将调用警报 API 来设置 VLM 的警报规则。收到这两个请求后,VLM 将开始评估直播流上的警报规则。

当 VLM 确定警报为 True 时,它​​会在连接到移动应用程序的 WebSocket 上输出警报状态。这将在移动设备上触发一个弹出通知,用户可以点击该通知进入聊天模式并询问后续问题。

如上图所示,用户可以与 VLM 来回聊天,讨论输入的直播流,甚至可以使用 VST 的 WebRTC 直接在应用程序中查看直播流。

借助 VLM、Jetson 平台服务和移动应用程序,您现在可以在连接到 Jetson 的直播摄像头上设置任何自定义警报并获取实时通知。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1951188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

针对网络延迟与弱网下的测试

学习的时候看见大佬这样的回复 作为一个测试小白,我心想,这我不得上手试一试 大佬说的工具模拟,大概是指Charles和fiddler两个软件,都可以模拟弱网,但是Charles收费,我拿fiddler练手 另一个故意引入固定百…

21-C语言的结构体尺寸——地址对齐问题

21-C语言的结构体尺寸——地址对齐问题 文章目录 21-C语言的结构体尺寸——地址对齐问题一、CPU 字长二、 地址对齐2.1 原理和原因2.2 地址对齐的主要思想2.3 示例代码说明地址对齐 三、普通变量的M值M值的计算规则例子 四、手动干预M值4.1 规则4.2 例子 五、结构体的M值5.1 例…

每天一个设计模式之职责链模式(第一天)

特别感谢刘伟老师,看他的书我学到了很多东西,从今天开始我要开始更新啦! 在csdn个人博客来总结知识,把他们变成自己的能力。 对三,要不起,张三李四王五几个人在玩斗地主,过过过,一…

谷粒商城实战笔记-错误记录-启动失败

文章目录 一,lombok报错二,Output directory is not specified 一,lombok报错 java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled. Your processor is: com.sun.proxy.$Proxy8 Lombok …

靶场实战 _ ATTCK 实战 Vulnstack 红队

环境配置 网络拓扑图 (仅供参考) 攻击机:kali ip:192.168.111.5靶机:web-centos 外网ip:192.168.111.10 内网ip:192.168.93.100web1-ubuntu ip: 192.168.93.120PC ip: 192.168.93.30win 2008 ip:192.168.93.20win 2012 ip:192.168.93.10 信息搜集 端口…

【QT】常用控件(概述、QWidget核心属性、按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)

一、控件概述 Widget 是 Qt 中的核心概念,英文原义是 “小部件”,此处也把它翻译为 “控件”。控件是构成一个图形化界面的基本要素。 像上述示例中的按钮、列表视图、树形视图、单行输入框、多行输入框、滚动条、下拉框都可以称为 “控件”。 Qt 作为…

世界渲染大赛含金量高吗?含金量怎么样?水平要求?

世界渲染大赛,作为全球3D艺术与渲染领域的顶级赛事,以其高含金量和专业水平要求而闻名。这一赛事不仅吸引了世界各地的专业3D艺术家、设计师和技术爱好者的积极参与,更以其严格的评审标准和创新性的主题设置,确保了参赛作品的高质…

C#初级——条件判断语句、循环语句和运算符

条件判断语句 简单的条件判断语句&#xff0c;if()里面进行条件判断&#xff0c;如果条件判断正确就执行语句块1&#xff0c;如果不符合就执行语句块2。 if (条件判断) { 语句块1 } else { 语句块2 } int age 18;if (age < 18){Console.WriteLine("未…

一天搞定React(3)——Hoots组件【已完结】

Hello&#xff01;大家好&#xff0c;今天带来的是React前端JS库的学习&#xff0c;课程来自黑马的往期课程&#xff0c;具体连接地址我也没有找到&#xff0c;大家可以广搜巡查一下&#xff0c;但是总体来说&#xff0c;这套课程教学质量非常高&#xff0c;每个知识点都有一个…

git sendemail使用

教程参考&#xff1a; git-send-email - 以电子邮件形式发送补丁集 1、安装git-email 2、配置 SMTP 服务器 git config --global sendemail.smtpserver smtp.163.com git config --global sendemail.smtpserverport 465 git config --global sendemail.smtpuser xxxxxx163.c…

Godot入门 04平台设计

新建创景&#xff0c;添加AnimatableBody2D节点。 添加Sprite2D节点 拖动图片 剪裁图片&#xff0c;吸附模式&#xff1a;像素吸附 添加CollisionShape2D&#xff0c;设置实际形状为矩形 重命名AnimatableBody2D节点为Platform&#xff0c;保存场景&#xff0c;拖动platform场景…

Docker NameSpace隔离

1、dd命令&#xff1a;dd 可从标准输入或文件中读取数据&#xff0c;根据指定的格式来转换数据&#xff0c;再输出到文件、设 备或标准输出 功能&#xff1a;用于读取、转换并输出数据 语法&#xff1a;dd OPTION 参数 1、 if文件名&#xff1a;输入文件名&#xff0c;默认为…

【第四天】计算机网络知识 HTTP1.0,HTTP1.1与HTTP2.0的区别 HTTP3.0

HTTP1.0&#xff0c;HTTP1.1与HTTP2.0的区别 HTTP1.0 默认是短链接&#xff0c;可以强制开启长连接。HTTP1.1默认长连接。HTTP2.0采用多路复用。 HTTP1.0&#xff1a; 默认使用短链接&#xff0c;每次请求都需要建立一个TCP连接。它可以设置&#xff1a;Connection: keep-aliv…

内网对抗-隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线

知识点&#xff1a; 1、隧道技术篇-传输层-工具项目-Frp&Nps&Chisel 2、隧道技术篇-传输层-端口转发&Socks建立&C2上线Frp Frp是专注于内网穿透的高性能的反向代理应用&#xff0c;支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过…

H264编码标准环路滤波原理

方块效应产生原因 原因 1&#xff1a;最重要的一个原因是基于块的帧内和帧间预测残差的 DCT 变换。变换系数的量化过程相对粗糙&#xff0c;因而反量化过程恢复的变换系数带有误差&#xff0c;会造成在图像块边界上的视觉不连续。原因 2&#xff1a;其次原因自于运动补偿预测。…

FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程

源码见&#xff1a;"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 加入课程 我们先看下加入课程 1.是否登录 2.课程是否存在 3.是否已经存在 4.添加 首先实现逻辑 def get_student_course(db: Session, course: int…

4.Jmeter接口性能测试

性能测试的指标: 多:并发量(用户数-系统用户数-影响到磁盘、在线用户数、并发用户数) 系统用户数:软件系统注册的用户总数(要注意初始化环境) 在线用户数:某段视角内访问用户数,这些用户只是咋先,不一定同时做某一件事情。(初始化环境(warm up热机:让…

DL/T645、IEC104转BACnet网关实现实时数据采集

BA102网关是钡铼技术专为实现电力协议DL/T645、IEC104与楼宇自控协议BACnet相互转化而研发的。它下行采集支持Modbus RTU、Modbus TCP、DL/T645、IEC104等协议&#xff0c;上行转发则支持BACnet IP和BACnet MS/TP协议&#xff0c;从而实现了电力协议与楼宇自控协议之间的相互转…

CJS与ESM:CJS

模块化方案 历史上&#xff0c;JavaScript 一直没有模块&#xff08;module&#xff09;体系&#xff0c;无法将一个大程序拆分成互相依赖的小文件&#xff0c;再用简单的方法拼装起来。其他语言都有这项功能&#xff0c;比如 Ruby 的require、Python 的import&#xff0c;甚至…

【算法】分布式共识Paxos

一、引言 在分布式系统中&#xff0c;一致性是至关重要的一个问题。Paxos算法是由莱斯利兰伯特&#xff08;Leslie Lamport&#xff09;在1990年提出的一种解决分布式系统中一致性问题的算法。 二、算法原理 Paxos算法的目标是让一个分布式系统中的多个节点就某个值达成一致。算…