能根據你的喜好定制的家務機器人,來了!
想把深色衣服和淺色衣服分開洗?沒問題,機器人分分鍾就能幫你分好類:
被垃圾分類的問題搞得焦頭爛額?沒關系,也交給機器人來做:
總之,分類識别、定向放置……一切都憑你的習慣。
更關鍵的是,利用大語言模型,不需要大量數據,也無需場景化學習,幾句話就能輕松調教。
這款整理機器人名爲 TidyBot,由谷歌與美國多所高校聯合打造,通訊作者來自普林斯頓大學。
讓機器訓練機器
對于物品整理機器人的定制,最難的一環就是用戶偏好的分析。
傳統上,這類信息需要通過海量的數據分析才能得到。
而 TidyBot 是使用 LLM 分析用戶喜好信息的。
用戶給出的具體實例,比如依據顔色将不同服飾分别放入衣櫃和抽屜,會被轉換成 Python 風格的 LLM 提示信息。
objects = [ "yellow shirt", "dark purple shirt", "white socks", "black shirt" ]
receptacles = [ "drawer", "closet" ]
pick and place ( "yellow shirt", "drawer" )
pick and place ( "dark purple shirt", "closet" )
pick and place ( "white socks", "drawer" )
pick and place ( "black shirt", "closet" )
# Summary:
最後的概述是由 LLM 反饋的,具體到這個例子當中,LLM 生成了如下結論:
# Summary: Put light-colored clothes in the drawer and dark-colored clothes in the closet.
該結論在接下來的環節中會被用于判定未知物品應該被放到哪裏,前一步的輸出結果在這裏作爲提示的開頭。
# Summary: Put light-colored clothes in the drawer and dark-colored clothes in the closet.
objects = [ "black socks", "white shirt", "navy socks", "beige shirt" ]
receptacles = [ "drawer", "closet" ]
pick and place ( "black socks",
然後,LLM 會輸出幾個新顔色襯衫和襪子的放置位置。
pick and place ( "black socks", "closet" )
pick and place ( "white shirt", "drawer" )
pick and place ( "navy socks", "closet" )
pick and place ( "beige shirt", "drawer" )
除了放置的位置,LLM 也能分析其他操作信息,比如是需要 " 放 " 還是 " 扔 "(下方 Summary 中的内容由 LLM 生成)。
objects = [ "yellow shirt", "dark purple shirt", "white socks", "black shirt" ]
pick and place ( "yellow shirt" )
pick and place ( "dark purple shirt" )
pick and toss ( "white socks" )
pick and place ( "black shirt" )
# Summary: Pick and place shirts, pick and toss socks.
同樣的,使用 LLM 總結出的信息可以判斷應對未知物體執行何種操作。
# Summary: Pick and place shirts, pick and toss socks.
objects = [ "black socks", "white shirt", "navy socks", "beige shirt" ]
# 以下爲 LLM 輸出結果:
pick and toss ( "black socks" )
pick and place ( "white shirt" )
pick and toss ( "navy socks" )
pick and place ( "beige shirt" )
其他動作信息原理也都相同。
有了 LLM 給出的信息,接下來就要應用到實際工作中了。
TidyBot 的系統中預置了很多物品的分類标簽,LLM 指令的執行方式也已經由程序設定。
TidyBot 首先讓圖像識别模塊判斷出物品的基本信息,然後傳給 LLM 生成指令,并交付執行。
△TidyBot 工作流程示意圖
由于隻有極少量的數據需要進行區分,TidyBot 具有很強的魯棒性。
同時,它能對來自任意用戶的任何物品進行分類,又有很強的靈活性。
基準測試成績亮眼
除了 TidyBot 本身,測試基準數據集也是該團隊的另一重要貢獻。
該數據集包含了 96 組以文本形式描述的任務場景,具體包括已知和未知操作方式的物品和相應的容器。
在每個場景中,容器的數量爲 2-5 個,已知操作方式的物品數量爲 4-10 個,未知物品數量與已知相同。
這 96 個場景涵蓋了客廳、卧室、廚房和儲藏室四種房間類型,每個類型 24 組。
△測試數據集節選,完整版可從 GitHub 中獲取
實際環境中,由于對物品分類的方式多種多樣,團隊分别從不同分類角度對 TidyBot 的表現進行了測試,具體包括:
物品大類,如 " 服裝 " 和 " 玩具 "
物品屬性,如 " 金屬材質 " 和 " 塑料材質 "
物品功能,如 " 夏裝 " 和 " 冬裝 "
物品子類,如 " 襯衫 " 和 " 其他服裝 "
複合類型,如 " 圖書和玩具 "
整體上,TidyBot 的準确率達到了 91.2%,超過了 WordNet、RoBERTa 等其他方式。
具體分類角度上的結果也是如此。
上述數據隻是在理論層面對 TidyBot 的分類能力進行測試。
在實際應用中,TidyBot 的表現同樣不俗。
團隊一共搭建了 8 個真實場景。
△測試使用的真實場景
每個場景各包括 10 件物品、2-5 個容器和 4-10 條已知信息。
△測試中使用的容器和未知物品
每個場景都進行了重複測試,最終各測試了 3 次,即一共 10*8*3=240 次操作。
在這 240 次操作中,TidyBot 的正确率達到了 85%。
最後,讓我們實際看一下 TidyBot 在測試中的表現吧。
位置及放置方式偏好:服裝→沙發,放;木塊→抽屜,放;易拉罐→垃圾桶,扔;水果→黑色箱子,扔;零食→塑料箱,扔
論文地址:
https://arxiv.org/abs/2305.05658
項目主頁:
https://tidybot.cs.princeton.edu/
GitHub 頁面:
https://github.com/jimmyyhwu/tidybot/