• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 3 月 19 日下午 2 點,鎖定 NVIDIA AI 網絡中文專場。立即注冊觀看
    計算機視覺/視頻分析

    為邊緣開發生成式 AI 驅動的視覺 AI 代理

    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 工作流程 GitHub 頁面 上,可以查看 NIM 驅動的視覺 AI 代理示例。

    本博客文章重點介紹 Jetson Orin 上邊緣用例的實現,我們將探索如何使用 NVIDIA JetPack SDK 的一項新功能,即 Jetson 平臺服務,進行邊緣部署。我們將構建一個生成式 AI 驅動的應用程序,能夠檢測用戶在實時視頻流中使用自然語言設置的事件,然后通知用戶,如圖 1 所示。

    An image showing the VLM detecting a fire on a live video stream and integration with a mobile app.
    圖 1. AI Agent 移動應用程序在視頻流中檢測火災

    使用 Jetson 平臺服務,在邊緣構建視覺 AI 代理。

    Jetson 平臺服務是一套預構建的微服務,為在 NVIDIA Jetson Orin 上構建計算機視覺解決方案提供基本的開箱即用功能。這些微服務中包含 AI 服務,支持生成式 AI 模型,如零樣本檢測和先進的 VLM。要了解 Jetson 平臺服務的功能亮點,請閱讀這篇博客文章

    A diagram of the NVIDIA JetPack 6.0 stack.
    圖 2.NVIDIA JetPack 6.0 堆棧

    VLM 將大型語言模型與視覺 Transformer 相結合,可對文本和視覺輸入進行復雜推理。這使得 VLM 能夠用于各種用例。同時,這種靈活性也使得 VLM 可以通過調整提示來動態調整。

    Jetson 上的首選視覺語言模型(VLM)是 VILA,因其通過優化每張圖像的令牌而提供的 SOTA 推理能力和速度。VILA 的架構和基準測試性能概述如圖 3 所示。

    如需詳細了解 VILA 及其在 Jetson 上的性能,請參閱《Visual Language Intelligence 和 Edge AI 2.0》博文。

    A diagram of VILA architecture combining a vision transformer and a large language model. VILA benchmark results against other VLMs.
    圖 3.VILA 結合了一種視覺 Transformer 和一個大型語言模型

    雖然 VLM 在實驗和啟用輸入圖像的交互式對話方面很有趣,但是在實際場景中應用這項技術是至關重要的。

    找到讓大型語言模型執行有用任務并將其整合到大型系統中的方法非常重要。通過將 VLM 與 Jetson 平臺服務相結合,我們可以創建一個基于 VLM 的視覺 AI 代理應用,該應用可以檢測直播攝像頭上的事件,并通過移動應用向用戶發送通知。

    該應用程序由生成式 AI 提供支持,并使用 Jetson 平臺服務中的多個組件。這些組件如何協同工作以創建整個系統,圖 4 說明了這一點。同時,該應用程序還可以與防火墻、物聯網網關和云服務一起使用,以實現安全的遠程訪問。

    構建基于 VLM 的視覺 AI 代理應用

    以下部分將指導您使用 Jetson 平臺服務構建視覺 AI 代理系統的高級步驟。該應用程序的完整源代碼可以在 GitHub 上找到。

    VLM AI 服務

    第一步是圍繞 VLM 構建一個微服務。

    Jetson Orin 上的 VLM 支持由 nanoLLM 項目 提供。我們可以使用 nanoLLM 庫,通過 Python API 在 Jetson 上下載、量化和運行 VLM,然后將其轉變為微服務,如圖 4 所示。

    我們會執行以下步驟:

    1. 用易于調用的函數包裝模型。
    2. 使用 FastAPI 添加 REST API 和 WebSocket。
    3. 使用 mmj_utils 添加 RTSP 流輸入和輸出。
    4. 將元數據輸出到所需的通道中,例如輸出到 Prometheus、Websocket 或 Redis。
    Architecture diagram of the VLM microservice that shows the data flow and integration with other microservices.
    圖 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 上集成許多常見組件和完整參考示例的起點。

    提示工程

    VLM 的提示包含三個主要組件:系統提示、用戶提示和輸入幀,如圖 5 所示。我們可以調整 VLM 的系統和用戶提示,教會它如何在直播警報中進行評估,并將結果輸出為結構化格式,該格式可以被解析并與其他服務集成。

    Diagram showing how a VLM can be prompted to generate alerts.
    圖 5.使用 VLM 生成警報工作流

    在本示例中,我們使用系統提示來解釋模型的輸出格式和目標。系統提示可以被告知用戶提供了一份警報列表,該提示將對每個警報在輸入幀中進行評估,判斷其為真或假,并將結果輸出為 JSON 格式。

    然后,可以通過 REST API 提供用戶提示。系統會公開一個端點,用于支持查詢和警報輸入。用戶輸入與系統提示相結合,然后與來自輸入實時流的幀一起提供給 VLM。接著,VLM 會評估幀上的完整提示并生成響應。

    此響應會被解析并作為 JSON 提供,我們使用它與警報監控服務和 WebSockets 集成,以跟蹤并向移動應用程序發送警報。

    與 Jetson 平臺服務及移動應用程序的集成

    完整的端到端系統現在可以組合在一起,并與移動應用集成,以構建由 VLM 提供支持的視覺 AI 智能體。圖 6 顯示了 VLM、Jetson 平臺服務、云和移動應用的架構圖。

    Diagram showing end-to-end Workflow of VLM AI Service using Jetson Platform Services.
    圖 6. 使用 Jetson 平臺服務的 VLM AI 服務工作流程

    要獲取 VLM 的視頻輸入,Jetson 平臺服務的網絡服務和 VST 會自動發現并提供連接到網絡的 IP 攝像頭。然后,這些攝像頭將通過 VST 的 REST API 自動提供給 VLM 服務和移動應用程序。

    移動應用可以通過 API 網關訪問 VST 和 VLM 服務公開的 API。然后,移動應用可以使用 VST API 獲取直播列表,并在應用的主屏幕上向用戶展示直播的預覽。

    然后,用戶可以在該應用程序中使用自然語言為其所選直播設置自定義警報,例如“Is there a fire”。提交后,應用程序將調用 VLM 服務的流控制 API,告訴它使用哪個直播攝像頭作為輸入。然后,它將調用 alert API 為 VLM 設置警報規則。一旦收到這兩個請求,VLM 將開始對直播流評估警報規則。

    當 VLM 確定警報為 True 時,它會在連接到移動應用程序的 WebSocket 上輸出警報狀態。這將在移動設備上觸發彈出通知,用戶可以單擊該通知進入聊天模式,并提出后續問題。

    A screenshot of the mobile app showing how the live stream can be viewed by the user while chatting with the VLM.
    圖 7. 通過移動應用程序實現視頻直播和實時聊天功能。

    如圖 7 所示,用戶可以與 VLM 進行實時聊天,討論輸入直播流,并且可以直接在應用程序中使用 VST 中的 WebRTC 查看直播流。

    借助 VLM、Jetson 平臺服務和移動應用,現在您可以為連接到 Jetson 的直播攝像頭設置任何自定義警報,并實時接收通知。

    視頻 1. 在邊緣構建基于生成式 AI 的視頻代理演示

    結束語

    本博客文章討論了如何將 VLM 與 Jetson 平臺服務相結合,以構建視覺 AI 智能體。要開始使用,請前往 Jetson 平臺服務產品頁面。我們提供了兩個預構建的項目:一個用于啟動 VLM AI 服務的容器,以及一個適用于 Android 的預構建移動應用 APK。

    您可以在 GitHub 上獲取 VLM AI 服務的完整源代碼。這是一個了解如何使用 VLM 和構建您自己的微服務的絕佳參考資源。若您有技術問題,請訪問 論壇

    如需了解更多信息,請訪問:

    ?

    0

    標簽

    人人超碰97caoporen国产