機(jī)器人感知:探索 Grounded SAM2 的潛力
機(jī)器人感知涉及使用攝像頭、激光雷達(dá)和雷達(dá)等傳感器收集環(huán)境數(shù)據(jù),算法處理這些數(shù)據(jù)以解釋周圍環(huán)境。這使得機(jī)器人能夠檢測(cè)物體,并支持狀態(tài)估計(jì)、定位、導(dǎo)航、控制和規(guī)劃等功能,從而執(zhí)行復(fù)雜任務(wù)。
在本文中,我們專注于使用攝像頭進(jìn)行物體檢測(cè)和分割。攝像頭捕捉圖像,算法識(shí)別這些幀中的物體,提供邊界框和分割掩碼。這些信息通過指示要避開的物體位置和理解哪些區(qū)域是可通行的,幫助機(jī)器人進(jìn)行導(dǎo)航。
創(chuàng)建手動(dòng)注釋的可駕駛表面語義分割數(shù)據(jù)集
在深度學(xué)習(xí)之前,實(shí)現(xiàn)準(zhǔn)確的感知是具有挑戰(zhàn)性的,限制了機(jī)器人的能力。深度學(xué)習(xí)的出現(xiàn)改善了基于攝像頭的感知,但需要大量的數(shù)據(jù)收集、手動(dòng)注釋和模型重新訓(xùn)練以識(shí)別新物體。視覺語言模型(VLMs)通過將視覺輸入與文本描述相結(jié)合,徹底改變了這一領(lǐng)域,實(shí)現(xiàn)了開放詞匯物體檢測(cè)和分割。VLMs可以識(shí)別各種類別的物體,包括訓(xùn)練期間未遇到的物體,減少了手動(dòng)數(shù)據(jù)注釋和模型重新訓(xùn)練的需求。這一進(jìn)步顯著增強(qiáng)了機(jī)器人理解和與環(huán)境交互的能力。
現(xiàn)在讓我們探索VLMs在開放詞匯(OV)物體檢測(cè)和分割中的強(qiáng)大功能。我的實(shí)驗(yàn)簡(jiǎn)單地旨在確定OV模型是否能夠檢測(cè)到我的形狀異常的機(jī)器人。
我的機(jī)器人SHL-1
我嘗試的第一個(gè)OV工具是YOLO-World,這是第一個(gè)基于流行的YOLO-v8工具的實(shí)時(shí)開放詞匯物體檢測(cè)模型。與所有其他YOLO模型一樣,YOLO-World非??臁Ec其他YOLO不同,它可以通過定義新類別來檢測(cè)訓(xùn)練集中未見的物體。在測(cè)試我的機(jī)器人之前,我測(cè)試了一張更受歡迎的機(jī)器人圖片,本田的人形機(jī)器人Asimo。
# Load model
model = YOLO("yolov8x-worldv2.pt")
# Define custom classes
model.set_classes(["robot"])
# Execute prediction for specified categories on an image
results = model.predict("https://upload.wikimedia.org/wikipedia/commons/0/05/HONDA_ASIMO.jpg")
# Show results
results[0].show()
YOLO-World成功檢測(cè)到了人形機(jī)器人Asimo
接下來,我用我的機(jī)器人SHL-1的圖片嘗試了YOLO-World,但模型無法檢測(cè)到形狀異常的機(jī)器人。YOLO-World通過實(shí)現(xiàn)更簡(jiǎn)單的架構(gòu)實(shí)現(xiàn)了即使在CPU上也能實(shí)時(shí)推理,但代價(jià)是無法檢測(cè)到更廣泛的分布外物體。
然后,我安裝并測(cè)試了Grounded SAM 2【https://github.com/IDEA-Research/Grounded-SAM-2】,這是一個(gè)基于Meta流行的Segment Anything Model 2(SAM 2)【https://ai.meta.com/sam2/】的更復(fù)雜和更大的VLM。與YOLO-World不同,在YOLO-World中你指定類別名稱,而在Grounded SAM 2中你可以用更復(fù)雜的文本進(jìn)行提示。在我的第一個(gè)實(shí)驗(yàn)中,我只使用了提示“robot”來匹配為YOLO-World指定的類別。
# setup the input image and text prompt for SAM 2 and Grounding DINO
# VERY important: text queries need to be lowercased + end with a dot
TEXT_PROMPT = "robot."
IMG_PATH = "robot_almost_back_closer_180/left/left_50.png"
inference(TEXT_PROMPT, IMG_PATH)
Grounded SAM 2可以檢測(cè)到SHL-1,但也錯(cuò)誤地檢測(cè)到了附近的滑板車
請(qǐng)注意,與YOLO-World不同,Grounded SAM 2(G-SAM2)還可以執(zhí)行分割。模型能夠檢測(cè)到SHL-1,但也將附近的滑板車誤認(rèn)為機(jī)器人。抱歉,G-SAM2,在我們開發(fā)出自主滑板車之前,我們不能將它們視為機(jī)器人。
如前所述,G-SAM2可以以類似于我們提示大型語言模型(LLMs)的方式進(jìn)行提示,盡管短語要短得多。在我的下一個(gè)測(cè)試中,我使用了提示“6輪機(jī)器人”。
TEXT_PROMPT = "6-wheeled robot."
IMG_PATH = "robot_almost_back_closer_180/left/left_50.png"
inference(TEXT_PROMPT, IMG_PATH)
Grounded SAM 2能夠?qū)HL-1識(shí)別為六輪機(jī)器人,并正確判斷滑板車沒有六個(gè)輪子。
新的提示奏效了。模型對(duì)人類語言有足夠的理解,能夠識(shí)別出SHL-1是一個(gè)機(jī)器人并且有六個(gè)輪子,而滑板車只有兩個(gè)輪子。然而,盡管配備了新提示的G-SAM2可以在其他圖像中一致地檢測(cè)到SHL-1,但它有時(shí)會(huì)錯(cuò)過帶有激光雷達(dá)的支架,如下例所示。
TEXT_PROMPT = "6-wheeled robot."
IMG_PATH = "robot_almost_back_closer_180/left/left_58.png"
inference(TEXT_PROMPT, IMG_PATH)
有時(shí)Grounded SAM 2會(huì)錯(cuò)過帶有激光雷達(dá)的支架
但不用擔(dān)心,有一個(gè)提示可以解決這個(gè)問題:“帶有激光雷達(dá)的六輪機(jī)器人。”
TEXT_PROMPT = "6-wheeled robot with mounted LiDAR."
IMG_PATH = "robot_almost_back_closer_180/left/left_58.png"
inference(TEXT_PROMPT, IMG_PATH)
為Grounded SAM 2提供更精確的提示可以提高其性能
在這個(gè)簡(jiǎn)短的實(shí)驗(yàn)中,我們探索了視覺語言模型的力量,特別是測(cè)試了Grounded SAM 2模型。VLMs通過顯著減少擴(kuò)展機(jī)器人能力所需的工作,正在徹底改變機(jī)器人感知,從繁瑣的手動(dòng)數(shù)據(jù)收集、標(biāo)注和模型訓(xùn)練轉(zhuǎn)向簡(jiǎn)單的提示工程。此外,與YOLO-World等較小的模型相比,這些大型模型的能力和準(zhǔn)確性顯著提高,盡管代價(jià)是需要更多的計(jì)算能力。
完整代碼:https://github.com/carlos-argueta/rse_prob_robotics