傳統的視頻分析應用程序及其開發工作流通常基于固定功能且受限的模型構建,這些模型旨在僅檢測和識別一組選定的預定義對象。
借助生成式 AI、NVIDIA NIM 微服務和基礎模型,您現在可以使用更少的模型構建具有廣泛感知和豐富語境理解的應用程序。
新型生成式 AI 模型即視覺語言模型 (VLM) 為視覺 AI 智能體提供支持,這些智能體可以理解自然語言提示并執行視覺問答。視覺 AI 智能體 解鎖了完全的應用可能性,顯著簡化了應用開發工作流程,并提供了變革性的新感知功能,如圖像或視頻摘要、交互式視覺問答和視覺警報。
這些視覺 AI 智能體將部署在工廠、倉庫、零售商店、機場、交通交叉路口等地。它們將幫助運營團隊使用從自然交互中生成的更豐富的見解做出更明智的決策。
NVIDIA NIM 和 NVIDIA VIA 微服務旨在加速視覺 AI 代理的開發。在本文中,我們將向您展示如何使用這兩種技術和一個摘要微服務無縫構建 AI 代理,以幫助處理大量視頻,并使用 VLM 和 NIM 微服務生成精選摘要。
NVIDIA VIA 默認使用 OpenAI GPT-4o 模型作為默認的 VLM。
發布 NVIDIA VIA 微服務
NVIDIA VIA 微服務,是 NVIDIA Metropolis 微服務的擴展,是云原生構建塊,可以加速由 VLM 和 NIM 提供支持的視覺 AI 代理的開發,無論部署在邊緣還是云端。NVIDIA VIA 微服務已經在開發者預覽版中提供下載。
NVIDIA VIA 為新用例構建視覺 AI 代理的機會無窮。這些模塊化微服務使您能夠靈活地構建視覺 AI 代理,并對其進行定制,以添加復雜的功能。
NVIDIA VIA 微服務提供模塊化架構和可定制的模型支持。它支持錄制的視頻和直播,并具有可輕松集成到現有系統中的 REST API,以及用于快速試用的用戶界面(UI)。
每個 NVIDIA VIA 微服務都是單個容器,無需依賴其他容器或微服務。NVIDIA VIA 可以輕松部署到獨立機器、本地環境、云或任何云服務提供商(CSPs).
NVIDIA VIA 微服務集成與 NVIDIA NIM
NVIDIA VIA 微服務可輕松與 NVIDIA NIM 集成。您可以靈活地使用 NVIDIA API Catalog 中的模型預覽 API 和可下載的 NVIDIA NIM 微服務中的任何 LLM 或 VLM 模型NVIDIA API Catalog。
默認情況下,NVIDIA VIA 使用 OpenAI GPT-4o 模型作為 VLM。在本文中,我們使用 NVIDIA VITA-2.0 模型作為 NGC 中提供的 VLM。
NVIDIA VIA 使用 NVIDIA 托管的 Llama 3 70B NIM 微服務作為 NVIDIA NeMo Guardrails 和 Context-Aware RAG (CA-RAG) 模塊的 LLM。您可以從 API 目錄中選擇各種不同的 LLM 和 VLM,從 NVIDIA 托管或本地部署的選項中進行選擇。
NVIDIA NIM 是一套微服務,包含行業標準的 API、特定于領域的代碼、優化的推理引擎和企業運行時。它提供多個 Visual Language Models(VLM),用于構建視覺 AI 代理,該代理可以處理實時或存檔的圖像或視頻,從而使用自然語言提取可行的見解。
Visual AI 代理使用 VIA 微服務構建用于匯總
如今,大多數 VLM 僅接受有限數量的幀,例如 8/10/100 幀。它們也無法為更長的視頻準確生成字幕。例如,對于一小時的視頻,采樣幀可能相距 10 秒,甚至更長,這可能會導致某些細節被忽略或操作無法被識別。
此問題的解決方案是,從長視頻中創建較小的數據塊,使用 VLMs 單獨分析數據塊,然后匯總和聚合結果,為整個文件生成單個摘要。

摘要代理由以下組件組成:
- NVIDIA VIA 流處理程序:管理與其他組件(例如 NeMo Guardrails、CA-RAG、VLM 管線、chunking 和 Milvus Vector DB)的交互和同步。
- NeMo Guardrails:過濾掉無效的用戶提示。它利用 LLM NIM 微服務的 REST API。
- VLM 工作流 – 對流處理程序生成的視頻塊進行解碼,使用基于 NVIDIA Tensor RT 的視覺編碼器模型為視頻塊生成嵌入,然后利用 VLM 為用戶查詢生成每塊響應。它基于 NVIDIA DeepStream SDK。
- VectorDB:存儲每個塊的中間 VLM 響應。
- CA-RAG 模塊:從每個塊的 VLM 響應中提取有用信息,并將其聚合以生成單個統一摘要。CA-RAG (Context-Aware Retrieval-Augmented Generation) 使用 LLM NIM 微服務的 REST API。
NVIDIA VIA 微服務具有以下特點:
- 視頻和直播摘要
- 多個 GPUs 上的最佳且高度可擴展的實現
- 借助 CA-RAG 模塊實現更好的總結
- 支持對任何用例進行總結
視頻和直播摘要
借助 NVIDIA VIA,您可以使用 REST API 輕松總結長視頻文件和直播流。NVIDIA VIA 在提供大量可配置參數的同時,還處理所有繁重的工作。
對于文件摘要,NVIDIA VIA 會根據用戶配置的 chunk 持續時間、chunk overlap 持續時間和文件持續時間,將輸入文件拆分為 chunks。
例如,對于一個時長為 1 小時、塊時長為 1 分鐘的文件,它會生成 60 個 chunks。這些 chunks 由 VLM pipeline 并行處理。當所有 chunk captions 可用時,CA-RAG 會匯總和聚合這些 captions,以生成文件的單個最終摘要。
對于直播,流式傳輸工作流會從 RTSP 服務器接收串流數據。NVIDIA VIA 微服務會根據用戶配置的 chunk 持續時間持續生成視頻塊片段。然后,VLM 工作流會為這些 chunk 生成字幕。
NVIDIA VIA 引擎會繼續從 VLM 管道中收集字幕。當根據用戶配置的摘要持續時間處理足夠的塊時,收集的塊將發送到 CA-RAG 進行摘要和聚合。VIA 引擎會繼續處理下一個塊。摘要將使用 HTTP 服務器發送的事件流式傳輸到客戶端。
在多個 GPUs 上實現高度可擴展的優化實現
您可以根據視頻文件和直播流、視頻內容和 VLM 模型的用例配置 chunking 參數。
視頻文件
chunk_duration
:整個視頻被劃分為 chunk_duration
長度段,N 幀 (依賴于 VLM 的) 從該 chunk 中采樣并發送到 VLM 進行 inference。The chunk duration 應該足夠小,以便 N 幀可以捕獲事件。
chunk_overlap
:如果事件發生在塊的交叉路口,則采樣幀可能無法捕獲完整的事件,并且模型無法檢測到它。VIA 通過使用滑動窗口方法來緩解此問題,其中 chunk_overlap
是塊之間的 overlap duration。(Default: 0
)。
流
chunk_duration
:與視頻文件類似,實時流被劃分為多個 chunk_duration
片段,并發送到 VLM 進行推理, chunk_duration
應該足夠小,以便 N 幀可以捕獲事件。
summary_duration
:用戶想要生成摘要的持續時間。這使用戶能夠控制應生成摘要的流的持續時間。例如,如果 chunk_duration
為 1 分鐘,summary_duration
為 30 分鐘,則將流劃分為 1 分鐘的塊以進行 VLM 推理。然后,30 個塊的 VLM 輸出經過聚合,為用戶提供 30 分鐘的簡潔摘要。
分塊配置示例
tail-gating detection: chunk_duration: 2 min chunk_overlap: 15 sec traffic violation (such as a wrong turn): chunk_duration: 30 sec chunk_overlap: 15 sec |
適用于流的某些示例用例的分塊配置示例,例如:streams:
?
sports summarization: chunk_duration: 2 min summary_duration: 15 min robot control: chunk_duration: 5 sec summary_duration: 5 sec |
這些只是指南,實際參數必須由用戶根據其用例進行調整。這是準確性和性能之間的權衡。較小的 chunk sizes 會帶來更好的描述,但處理時間更長。
NVIDIA VIA 在單個節點上支持多個 GPUs。它可以通過在多個 GPUs 上分配 chunks 并并行處理這些 chunks 來高效擴展。
對于 VITA-2.0,NVIDIA VIA 使用 TensorRT-LLM 加速以提高性能。它還可以利用單個 GPU 上的多個 NVIDIA DEC 引擎,從而加速視頻文件的解碼。通過在 NVIDIA VIA 上進行擴展,您可以在幾分鐘內處理一個小時的文件,具體取決于系統和 GPU 配置。
借助 Context-Aware RAG 模塊實現更好的總結
NVIDIA VIA 包含 CA-RAG 模塊,可提供更好的摘要結果。CA-RAG 負責從每個塊的 VLM 標題中提取有用信息,并對其進行聚合和摘要。
您可以配置 CA-RAG 的各個方面:
- 總結方法
- 要使用的 LLM 模型及其參數
- LLM 會提示更改響應格式
- 等等
CA-RAG 基于 LangChain,可以擴展。
支持對任何用例進行總結
NVIDIA VIA 摘要微服務通過修改prompts
、models
、chunk parameters
等,為各種用例提供靈活的解決方案。這些prompts 分為兩類:
- VLM 提示:用戶可以指定要從視頻塊中提取的詳細信息、事件或動作。
- LLM prompt: 用戶可以指定如何組合生成的 VLM 響應以創建最終的摘要。
我們建議您嘗試不同的 prompts 和 chunk lengths,以優化性能并獲得最佳結果。
性能
圖 2 顯示了視頻上傳后不同長度視頻的端到端匯總時間。這四個圖形針對用于添加字幕的不同塊大小 (越小越好)。使用 60s 的字幕塊大小,50m 的匯總需要 50s。這里的匯總應用程序使用 NGC 上提供的 NVIDIA VITA-2.0 模型。

使用 NVIDIA VIA 微服務的視覺 AI 代理已在以下 NVIDIA GPUs 上進行驗證:
- A100
- H100
- L40 和 L40
- A6000
它們還可以部署在采用 NVIDIA Ampere、NVIDIA Hopper 和 NVIDIA Ada Lovelace 架構的其他 GPU 平臺上。
開始使用 NVIDIA VIA 微服務
使用 NVIDIA VIA 微服務和 NVIDIA NIM 構建基于 VLM 的強大 AI 代理。REST APIs 在現有客戶應用中提供了輕松集成此工作流程和 VLM 的 ease。
有關更多信息,請參閱以下資源:
- NVIDIA VIA microservices,現在已經在開發者預覽版中提供
- NVIDIA VIA 論壇
- 視覺 AI 代理解決方案頁面
- 利用視覺 AI 智能體 Harnessing Large Language Model 和生成式 AI (GTC 會議)
?