視覺語言模型(VLM)通過將文本和圖像投射到同一個嵌入空間,將基礎(chǔ)大語言模型(LLM)強(qiáng)大的語言理解能力與視覺 transformer(ViT)的視覺能力相結(jié)合。VLM 可以處理非結(jié)構(gòu)化的多模態(tài)數(shù)據(jù)、對其進(jìn)行推理并以結(jié)構(gòu)化的格式返回輸出結(jié)果。由于經(jīng)過大量預(yù)訓(xùn)練,只需要為這些模型提供新的提示或進(jìn)行參數(shù)高效微調(diào),它們就能輕松適應(yīng)不同的視覺相關(guān)的任務(wù)。
這些模型還可以與實時數(shù)據(jù)源和工具集成,從而在不知道答案時請求獲得更多信息或在知道答案時采取行動。LLM 和 VLM 可以作為智能體對數(shù)據(jù)進(jìn)行推理,幫助機(jī)器人執(zhí)行可能難以定義的有意義的任務(wù)。
在此前一篇的文章利用 NVIDIA Jetson 實現(xiàn)生成式 AI中,我們展示了可以在NVIDIA Jetson Orin設(shè)備上運行 LLM 和 VLM,從而在邊緣設(shè)備上實現(xiàn)零樣本物體檢測、視頻字幕、文本生成等多種新功能。
但如何將這些先進(jìn)技術(shù)應(yīng)用于機(jī)器人的感知和自主運行?將這些模型部署到現(xiàn)場時又會面臨哪些挑戰(zhàn)?
本文將討論 ReMEmbR。該項目結(jié)合了 LLM、VLM 和檢索增強(qiáng)生成(RAG),使機(jī)器人能夠在數(shù)小時至數(shù)天的長時程部署期間,對所看到的事物進(jìn)行推理并采取行動。
ReMEmbR 在記憶構(gòu)建階段使用 VLM 和矢量數(shù)據(jù)庫來高效構(gòu)建長時程語義記憶,之后在查詢階段使用 LLM 智能體對該記憶進(jìn)行推理。它完全開源,并且可在設(shè)備端運行。
ReMEmbR 解決了在機(jī)器人應(yīng)用中使用 LLM 和 VLM 時所面臨的諸多挑戰(zhàn):
如何處理大型上下文。
如何對空間記憶進(jìn)行推理。
如何構(gòu)建一個基于提示的智能體來查詢更多數(shù)據(jù),直到用戶的問題得到解答。
我們還進(jìn)一步構(gòu)建了一個在真實機(jī)器人上使用 ReMEmbR 的示例。我們在這項工作中使用了 Nova Carter 和NVIDIA Isaac ROS,并分享了我們所使用的代碼和步驟。如需了解更多信息,請參見以下資源:
適用于長時程時空記憶、
推理與行動的 ReMEmbR
人們越來越期待機(jī)器人能夠長時間感知環(huán)境并與之互動。機(jī)器人每次部署的時間長達(dá)數(shù)小時乃至數(shù)天,它們會偶然感知到不同的物體、事件和位置。
為了讓機(jī)器人在長時間部署的場景中能夠理解和回答那些需要復(fù)雜多步驟推理的問題,我們開發(fā)了 ReMEmbR 這一用于具身機(jī)器人的檢索增強(qiáng)記憶。
ReMEmbR 為機(jī)器人構(gòu)建了可擴(kuò)展的長時程記憶和推理系統(tǒng),提高了機(jī)器人的感知問題回答和語義行動能力。ReMEmbR 包含記憶構(gòu)建和查詢兩個階段。
在記憶構(gòu)建階段,我們借助 VLM,使用矢量數(shù)據(jù)庫構(gòu)建了結(jié)構(gòu)化記憶。在查詢階段,我們建立了一個 LLM 智能體,它可以循環(huán)調(diào)用不同的檢索函數(shù),最終回答用戶提出的問題。
圖 1. 完整的 ReMEmbR 系統(tǒng)
構(gòu)建更加智能的記憶
ReMEmbR 的記憶構(gòu)建階段就是讓機(jī)器人的記憶工作。當(dāng)機(jī)器人已被部署了數(shù)小時或數(shù)天時,就需要一種高效的方式存儲這些信息。視頻雖然易于存儲,但卻難以查詢和理解。
在記憶構(gòu)建過程中,我們會截取視頻的短片段,使用NVIDIA VILA字幕生成 VLM 為其添加字幕,然后將它們嵌入到 MilvusDB 矢量數(shù)據(jù)庫。我們還在該矢量數(shù)據(jù)庫中存儲時間戳和坐標(biāo)信息。
該設(shè)置使我們能夠高效地存儲和查詢機(jī)器人記憶中的各種信息。通過使用 VILA 捕捉視頻片段,并將其嵌入到 MilvusDB 矢量數(shù)據(jù)庫,該系統(tǒng)可以記住 VILA 能夠捕捉到的任何內(nèi)容,包括從四處走動的人等動態(tài)事件和特定的小物體,到更加普遍的內(nèi)容類別。
使用矢量數(shù)據(jù)庫可以輕松添加供 ReMEmbR 考慮的新信息。
ReMEmbR 智能體
鑒于數(shù)據(jù)庫中存儲的記憶如此之長,標(biāo)準(zhǔn) LLM 很難對長上下文進(jìn)行快速推理。
ReMEmbR 智能體的 LLM 后端可以是NVIDIA NIM微服務(wù)、本地設(shè)備上的 LLM 或其他 LLM API。當(dāng)用戶提出問題時,LLM 生成對數(shù)據(jù)庫的查詢并反復(fù)檢索相關(guān)信息。LLM 可以根據(jù)用戶提出的問題來查詢文本信息、時間信息或位置信息。這個過程不斷重復(fù),直到問題得到解答。
我們?yōu)?LLM 智能體使用了這些不同的工具,使機(jī)器人不僅能夠回答如何前往特定地點的問題,還能夠進(jìn)行空間和時間推理。圖 2 展示了這一推理階段的情況。
圖 2. ReMEmbR 查詢和推理流程示例
在真實機(jī)器人上部署 ReMEmbR
為了演示如何將 ReMEmbR 集成到真實機(jī)器人中,我們使用 ReMEmbR 與NVIDIA Isaac ROS和 Nova Carter 構(gòu)建了一個演示。Isaac ROS 是一個基于開源 ROS 2 軟件框架構(gòu)建而成的加速計算軟件包和 AI 模型集,它將 NVIDIA 加速技術(shù)帶給了全球各地的 ROS 開發(fā)者。
在演示中,機(jī)器人回答問題并引導(dǎo)人們參觀辦公室環(huán)境。為了讓大家了解如何構(gòu)建該應(yīng)用,以下是我們所采取的步驟:
構(gòu)建占用柵格地圖
運行記憶構(gòu)建器
運行 ReMEmbR 智能體
添加語音識別
構(gòu)建占用柵格地圖
第一步是創(chuàng)建環(huán)境地圖。為了建立矢量數(shù)據(jù)庫,ReMEmbR 需要訪問單目攝像頭圖像和全局位置(姿勢)信息。
圖 3. 使用 Nova Carter 繪制占用柵格地圖
根據(jù)環(huán)境或平臺的不同,獲取全局姿勢信息可能會具有一定的難度。幸運的是,在使用 Nova Carter 時,這項工作就會變得簡單。由 Nova Orin 參考架構(gòu)驅(qū)動的 Nova Carter 是一個完整的機(jī)器人開發(fā)平臺,能夠加速下一代自主移動機(jī)器人(AMR)的開發(fā)和部署。該平臺在配備 3D 激光雷達(dá)后,可以生成精準(zhǔn)且全局一致的度量地圖。
圖 4. 使用 Nova Carter 構(gòu)建的
占用柵格地圖的 FoxGlove 可視化圖
按照 Isaac ROS 文檔,我們通過遙控機(jī)器人,快速繪制出占用柵格地圖。該地圖之后在建立 ReMEmbR 數(shù)據(jù)庫時被用于定位,并在最終部署機(jī)器人時被用于路徑規(guī)劃和導(dǎo)航。
運行記憶構(gòu)建器
在創(chuàng)建環(huán)境地圖后,第二步是填充 ReMEmbR 使用的矢量數(shù)據(jù)庫。為此,我們在遙控機(jī)器人的同時,運行 AMCL 進(jìn)行全局定位。有關(guān)如何使用 Nova Carter 實現(xiàn)這一操作的更多信息,請參見教程:使用 Isaac Perceptor 和 Nav2 進(jìn)行自主導(dǎo)航:
https://nvidia-isaac-ros.github.io/reference_workflows/isaac_perceptor/tutorials_on_carter/demo_navigation.html
圖 5. 運行 ReMEmBr 記憶構(gòu)建器
在后臺運行定位后,我們又啟動了兩個專門用于記憶構(gòu)建階段的 ROS 節(jié)點。
第 1 個 ROS 節(jié)點運行 VILA 模型,為機(jī)器人攝像頭圖像生成字幕。該節(jié)點在設(shè)備上運行,因此即便網(wǎng)絡(luò)時斷時續(xù),我們也能建立一個可靠的數(shù)據(jù)庫。
由于使用了 NanoLLM 進(jìn)行量化和推理,在 Jetson 上運行該節(jié)點變得更加容易。Jetson AI Lab中就有這個庫和許多其他庫。最近甚至還發(fā)布了一個 ROS 軟件包(ros2_nanollm),用于將 NanoLLM 模型與 ROS 應(yīng)用輕松集成。
第二個 ROS 節(jié)點獲取 VILA 生成的標(biāo)題以及 AMCL 節(jié)點估計的全局姿態(tài)。它為字幕建立文本嵌入,并將姿勢、文本、嵌入和時間戳存儲到矢量數(shù)據(jù)庫中。
運行 ReMEmbR 智能體
圖 6. 運行 ReMEmbR 智能體
以回答用戶查詢并導(dǎo)航至目標(biāo)姿勢
在填充了矢量數(shù)據(jù)庫后,就滿足了 ReMEmbR 智能體回答用戶查詢和生成有意義動作所需的一切條件。
第三步是運行現(xiàn)場演示。為了使機(jī)器人的記憶保持靜態(tài),我們禁用了圖像字幕生成和記憶構(gòu)建節(jié)點,并啟用了 ReMEmbR 智能體節(jié)點。如前所述,ReMEmbR 智能體負(fù)責(zé)接收用戶查詢、查詢矢量數(shù)據(jù)庫,并確定機(jī)器人應(yīng)采取的適當(dāng)行動。在本例中,該行動是與用戶查詢相對應(yīng)的目的地目標(biāo)姿勢。
然后,我們通過手動輸入用戶查詢,對系統(tǒng)進(jìn)行了端到端測試:
“帶我去最近的電梯”
“帶我去一個可以吃零食的地方”
ReMEmbR 智能體確定最佳目標(biāo)姿勢并將其發(fā)布到/goal_pose主題中。然后,路徑規(guī)劃器會生成一條全局路徑,將機(jī)器人導(dǎo)航至該目標(biāo)。
添加語音識別
在實際應(yīng)用中,用戶很可能無法使用終端來輸入查詢,因此需要一種直觀的方式與機(jī)器人進(jìn)行交互。為此,我們進(jìn)一步開發(fā)了該應(yīng)用,集成了語音識別功能來為該智能體生成查詢。
在 Jetson Orin 平臺上集成語音識別功能十分簡單。為此,我們編寫了一個 ROS 節(jié)點,該節(jié)點封裝了最近發(fā)布的 WhisperTRT 項目。WhisperTRT 利用NVIDIA TensorRT優(yōu)化了 OpenAI 的 whisper 模型,從而在Jetson AGX Orin和NVIDIA Jetson Orin Nano上實現(xiàn)了低延遲推理。
WhisperTRT ROS 節(jié)點使用 PyAudio 直接訪問麥克風(fēng),并在語音主題上發(fā)布識別出的語音。
圖 7. 通過將語音識別與 WhisperTRT 集成,實現(xiàn)自然的用戶交互全部整合
-
機(jī)器人
+關(guān)注
關(guān)注
211文章
28551瀏覽量
207631 -
NVIDIA
+關(guān)注
關(guān)注
14文章
5047瀏覽量
103326 -
LLM
+關(guān)注
關(guān)注
0文章
295瀏覽量
356 -
生成式AI
+關(guān)注
關(guān)注
0文章
509瀏覽量
506
原文標(biāo)題:借助 ReMEmbR 利用生成式 AI 賦予機(jī)器人推理與行動能力
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論