最近半年我發現越來越多的創業公司在嘗試Diffusion Policy,很多人也提到我當時的訪談記錄Diffusion Policy—基於擴散模型的機器人動作生成策略很有幫助,我也非常開心能夠將最前沿的學術成果以更通俗易懂的方式讓更多人瞭解。前段時間RSS 2024有一篇文章3D Diffusion Policy,它在Diffusion Policy的基礎上,用3D視覺資訊代替2D視覺資訊做輸入,使得策略的泛化效果大幅提升。
我很榮幸邀請到DP3(3D Diffusion Policy:
Generalizable Visuomotor Policy Learning via Simple 3D Representations)的一作迮炎傑來聊一聊DP3。我也邀請了DP3的指導老師許華哲對3D資料來源和DP3與大模型的結合做了補充。
Generalizable Visuomotor Policy Learning via Simple 3D Representations)的一作迮炎傑來聊一聊DP3。我也邀請了DP3的指導老師許華哲對3D資料來源和DP3與大模型的結合做了補充。
在DP3的基礎上,迮炎傑做了一些改進並將這個策略部署到人形機器人上,進一步提出了iDP3(Generalizable Humanoid Manipulation with Improved 3D Diffusion Policies)。跟過去需要多個場景的資料才能泛化的Diffusion Policy不同,iDP3僅僅使用一個場景的資料就把人型機器人的操作泛化到了很多現實場景。我們也將在這篇文章一起呈現DP3和iDP3這兩個工作。
許華哲是清華大學交叉資訊研究院(IIIS)的助理教授,在此之前,他曾是斯坦福視覺與學習實驗室(SVL)的博士後研究員,師從吳佳俊教授,博士畢業於伯克利人工智慧研究中心( BAIR),導師是Trevor Darrell。他目前也是國內具身智慧創業公司星海圖的聯合創始人。
迮炎傑目前是斯坦福大學計算機科學專業的一年級博士生。他的研究主要集中在構建通用機器人智慧。他在上海交通大學獲得了計算機科學的本科學位,在本科期間,曾與王小龍和許華哲兩位老師合作。
1. 3D Diffusion Policy方法簡介
2. 2D和3D的Encoder有什麼區別?
3. 3D和2D在獲取難度和訓練效率方面如何比較?
4. 3D資料和2D資料在規模化的角度如何對比?
5. 網際網路資料如何幫助到Diffusion Policy?
6. DP3在物體感知方面比DP有提升嗎?
7. 為什麼選擇多指?
8. 關於模擬和現實世界
9. iDP3和DP3相比改進在哪些方面?
10. iDP3沒有用到任何模擬嗎?
11. 關於資料採集
12. 許老師的一些補充
1. 3D Diffusion Policy方法簡介
Diffusion Policy的效果確實很好,但它的輸入是2D的影像,從而導致在有限資料下,策略的泛化效能並不好。我們想到如果用更豐富的視覺資訊(比如3D資訊)來提升模型的感知能力,是否可以進一步提升Diffusion Policy的泛化效果。
我們首先進行了一項簡單的思想實驗,想驗證3D資料是否對任務有幫助。我們設計了一個簡單的實驗,用一個有小爪子的機器人來達到空間中的某個目標點。我們提供了五個訓練資料,讓機器人學習如何達到這些點,然後在1000個不同的目標點上進行測試。
實驗結果顯示,當我們使用3D資料時,機器人對空間的感知能力顯著提高,能夠更好地達到均勻分佈在空間中的目標點。而使用2D資料時,機器人只能在某個平面上聚焦,無法在整個空間內均勻分佈。這證明了3D資料在空間理解上的優勢。
基於這個實驗,我們進一步探討了如何設計3D部分的模型。起初,我們嘗試了複雜的網路結構和額外的損失函式來進行學習,但最終發現,簡化後的模型效果也足夠好。我們只保留了一個簡單的編碼器,將3D資料輸入後,能夠高效地進行處理。最終,我們去掉了所有不必要的部分,僅保留了一個核心,即輸入需要是稀疏點雲,模型結構是幾層線性加幾層非線性的MLP。這種簡化的設計在實驗中表現良好,能夠在多種任務和泛化實驗中取得不錯的效果。
這一模型被命名為3D Diffusion Policy,我們認為它需要承擔得起這個名字的重量,即作為Diffusion Policy的3D版本提升。複雜的模型比較容易在單一benchmark上過擬合,而我們追求的是在所有task的通用性,就像原始的Diffusion Policy那樣。因此,在設計過程中,我們儘量極簡化了模型,也因此在很多task上都取得了通用性。
2. 2D和3D的Encoder有什麼區別?
我們需要先理解影像處理中的2D資料和3D資料的區別。2D影像可以看作是一個高度(H)乘寬度(W)的矩陣,而3D資料則不同,它不僅僅是一個矩陣,而是一個由Voxel(小方塊)組成的立體結構,可以想象成一個魔方。當然,關於3D該如何表徵在學術界仍然是一個熱點話題,比如近年的NeRF和Gaussian Splatting。在這個研究中,我們採用了一種高效而且經典的表達方式—,即點雲。我們把世界表徵為一種無序的點集合,即每個點代表世界中的某一位置,這些點可以隨機排列。
對有視覺背景的人來說,可能已經熟悉2D和3D資料處理的區別。我們的研究重點是處理無序點集合,因此我們不能直接應用2D影像處理的方法,不能使用傳統的卷積操作。關於如何處理無序點集合,有很多研究討論了這一問題,比如PointNet等經典方法。這些方法有一些核心設計,而我們的研究對這些設計進行了簡化,僅保留了最核心的模組。透過這種簡化,我們能夠更高效地處理3D資料,同時保持較好的效能。這種方法不僅讓模型變得更簡潔,也更容易理解和應用。
3. 3D資料和2D資料在獲取難度和訓練效率方面如何比較?
高質量的3D相機的價格確實比2D相機要貴一些。但是,他們採集同樣的資料所需的時間是一樣的。比如,你需要採集機器人抓取物體的資料,只需多花點錢買一個好點的相機,就能提高資料質量。雖然高質量3D相機的成本較高,但使用3D技術能減少所需的資料量。例如,你在2D條件下可能需要採集一兩百條資料,而在3D條件下可能只需要十幾到二三十條資料。從這個角度看,3D資料採集更高效,需要的資料量更少,因此3D在這方面優於2D。
眾所周知,在現實世界中獲取高質量的3D資訊是一個難題。舉個例子,我們在論文中使用了RealSense L515相機,它能夠提供相對準確的點雲資料。如果換成另一種更常用且便宜的D435相機,它只能提供大致的深度資訊,但深度的準確度較低,導致點雲質量很差。如果用D435相機執行我們的演算法,會發現其在現實世界中的效果不如預期。
4. 3D資料和2D資料在規模化的角度如何對比?
從資料規模化的角度,比如利用網際網路上的資料集,2D資料具有明顯優勢,因為網際網路上有大量的影像資料,而3D點雲資料則相對稀少。然而,是否意味著3D資料無法實現規模化呢?也不盡然。目前視覺技術在不斷發展,很多研究已經在利用影像來進行深度估計和點雲生成。例如,今年的CVPR會議上,有些論文展示了僅透過一兩張影像就能生成高質量的3D資料。從技術發展的角度來看,3D資料在未來具有很大的擴充套件潛力,並且隨著技術的進步,也有望實現規模化。
5. 網際網路資料如何幫助到Diffusion Policy?
如何利用網路資料來輔助機器人學習也是一項重要的研究課題。一個比較簡單且常用的方法是,將這些資料用於自監督預訓練,來預訓練視覺編碼器。這是一種非常普遍和常見的方式。具體來說,Diffusion Policy可以大致分為兩個部分,在我們的論文中也提到過:一個是視覺感知部分,另一個是決策部分。視覺感知部分可以透過影像或視覺資料進行預訓練,從而利用網際網路資料。而決策部分則需要具體的動作資訊,這類資訊無法從網路資料中獲取,因此很難透過網路資料來提升決策部分的效能。
6. DP3在物體感知方面比DP有提升嗎?
現實世界非常複雜,變化多端。比如光照條件會有所不同,物體也會有變化。比如每次用餃子皮重新捏,形狀都不一樣。即使位置稍微不同,在影像中可能只是小小的變化,但對機器人來說,卻可能找不到確切的位置,因為它無法準確知道在XYZ軸上的具體位置,只能看到影像中的輕微平移。
此外,光照的變化也會產生影響。比如早上錄製的影片,如果在下午再測試,結果可能會有很大不同。這些現實世界中的變化使得我們的方法在這些場景中更具優勢和適應性。核心點在於加入了3D資訊,使得對世界的感知更清晰。
7. 為什麼選擇多指?
不同人有不同的看法。有些人認為用兩指或三指已經足夠了。但是我們選擇使用多指,因為我們認為機器人應該像人手一樣靈活,可以做各種不同的任務。所以我們的任務是儘量找一些比較難的操作,比如用兩指卷東西,這種操作很難做到柔性。還有,比如去抓取一個大物體,用兩個手指肯定抓不住,只能用多指。
在個人的研究方向上,選擇3D和選擇多指是類似的思路,我覺得多指是長遠來說更好的,因此想要更多研究多指的操作。我個人更喜歡追求更大的目標,並盡力將其實現,而不僅僅是重複已知可行的工作。和2D資料相比,3D資料未來的潛力更大。雖然現在3D資料採集困難且硬體成本高,但我認為它有更廣闊的前景。關於多指操作,現在可能還不如兩指的靈巧,但隨著技術進步,已經有許多技術能夠實現高度靈巧的操作。
8. 關於模擬和現實世界
我認為從這個專案中我得到了一個感覺,那就是現實世界非常複雜,而模擬則非常簡單。然而,許多學術界人士可能會更偏向於在模擬環境中快速測試想法,而不在真實世界中設計和驗證獎勵機制。許多其他研究者也會從模擬開始他們的工作。我認為這種方法當然沒有錯,因為仿真確實更加方便,並且可以避免機器人研究中的實際挑戰。但對於一個更注重機器人學的研究者來說,模擬過於簡化,無法完全反映現實世界的複雜性。真正對機器人有用的演算法必須經過大量在現實世界中的驗證。這也是為什麼我們後來又提出了iDP3,一個在現實世界大量驗證的演算法。
我對DP3不太滿意的地方在於,它對點雲感知的質量要求太高。正如我之前提到的,L515採集到的點雲比D435的質量高,對應的模型效果也好很多。這是目前機器人學的一個重要挑戰,假設你處於一個完美的模擬場景中,所有的條件都已經設定好,那麼在這種理想情況下進行模擬可能會相對簡單,你只需考慮如何進行規劃。但在現實世界的大多數場景下,要想獲得這樣高質量的感知輸入是非常困難的。我們期望不論使用何種3D採集終端,都能產生類似的效果。最理想的情況是,即使不使用3D終端,而是使用2D終端,透過演算法獲得3D資訊,也能產生同樣好的模型效果。
9. iDP3和DP3相比改進在哪些方面?
在DP3的基礎上,我們提出了改進版的DP3模型,並將它部署到人形機器人上,並在實驗室環境下完成一些操作任務。
iDP3在人形機器人上的部署效果
結果顯示iDP3在真實機器人的操作部署方面有很好的泛化效能,包括視角泛化、物體泛化和場景泛化。
視角泛化
物體泛化
場景泛化
和DP3相比,iDP3在方法上主要有兩個改進。第一個改進是將世界座標調整成以機器人為中心的座標系,DP3的缺陷是需要進行座標校準,即在世界座標系下標定相機座標。iDP3我們做了一個改進就是將相機的座標系從世界座標轉換為相機自身的座標系,這個視角的改變讓這個座標以機器人為中心,而不是以環境為中心。這意味著當環境發生變化時,對系統的影響會顯著降低,這也是我們在多種方法和場景中展示其適用性的主要原因。
第二個改進點是,在引入上述調整後,策略學習(policy learning)的難度有所增加。在這裡,我借鑑了When Do We Not Need Larger Vision Models?這篇文章的一些思路:我們可能並不需要更大的視覺模型,而是透過提升輸入影像的解析度來提高效果。有時比起增加模型的複雜度,直接放大影像解析度反而更有效。因此,在我們的設計中,我並沒有選擇去擴充套件視覺編碼器,而是專注於提升資料的質量。
10. iDP3沒有用到任何模擬嗎?
最開始在搭建遙作業系統時,我們用過一些模擬。在資料採集、訓練和測試時完全依賴真實環境,沒有再使用模擬。因為整個過程和模擬環境下的操作是完全不同的,尤其是機器人在現實世界中的運動和互動,都會受到許多因素的影響,這些在模擬中很難完全復現。因此,我們直接在實際環境中進行測試,以確保資料的真實和可靠性。
在模型搭建好之後,需要將其部署到實際的機器人上進行測試。每天的工作基本上是一個不斷迭代的過程,可能我們進行了幾百次的迴圈,不斷採集資料、測試,並根據反饋調整。每次反饋都會幫助我們識別問題所在,可能是演算法的bug,也可能是pipeline的設計問題,或者資料本身存在問題,甚至可能是操作人員或硬體出現了問題。
11. 關於資料採集
採資料這個過程的主要難點在於機器人無法像人類一樣直觀地理解環境。舉個例子,當你佩戴 Vision Pro 時,眼前呈現的是機器人所看到的畫面,他展示的畫面並不像人眼那樣高畫質且是即時影像。我們使用的是單目相機,它只能提供一幀影像。你試圖讓機器人抓住前方的物體,但你很難準確知道它是否成功抓取。這就需要非常高的熟練度,因為這個過程不僅僅是操作上的挑戰,還有視覺反饋的準確性。所以整個遙操系統做的非常符合人的感受以及絲滑是很關鍵的。
12. 許老師的一些補充
3D vs 2D
3D 資訊確實有很大的幫助,但具體以什麼樣的形式輸入仍然是個未知領域。例如,在 DP3 中使用的是點雲資料,而我們最近嘗試使用深度圖,效果也表現得不錯。實際上,在很多情況下,這兩者在效能上並沒有本質區別。不過,整體來看,3D 資訊的引入確實比單純使用 2D 資料效果更好。
從長遠來看,我認為 3D 資訊可能可以從 2D 資料中推匯出來。當我們擁有足夠的 3D 資料時,透過 2D 資料就能重建出 3D 資訊。這種方法可能依賴生成式模型等技術,未來的潛力非常值得期待。
3D資料來源問題
3D資料確實比較少,它的總量相比2D資料小了很多個量級。雖然雷射雷達是一個選項,成本也在逐漸下降,但深度相機可能更常用一些。不過,如果要進行大規模的3D資料採集,確實會很困難。這也是為什麼我認為,從長期來看,2D到3D的轉化可能會更有意義。畢竟,海量的2D資料早已存在,尤其是網路上已經有大量的影片資源。與其直接採集3D資料,不如利用現有的2D資料生成3D資訊。
雖然2D資料生成3D資訊會存在一些偏差,但我認為這種偏差是可以透過策略(policy)來擬合的。也就是說,生成的3D資料雖然是基於估算的,有一定的誤差,但我們人眼看到的東西本身也存在偏差。對於操作任務來說,有偏差並不是什麼大問題。只要策略能夠意識到這種偏差並進行調整,我覺得是可以的。
DP3與具身大模型如何結合?
DP3在剛提出時,並沒有明確與這種具身大模型的正規化結合,它本質上是一種模仿學習的方法。以Sergey提出的機器人基礎模型框架來說,他的核心思想可以理解為,用少量資料直接進行模仿學習,資料效率並不高。而透過預訓練後,資料效率和成功率都會有所提升。不過,目前來看,在新正規化的框架下,這種diffusion head(擴散頭)在post階段的應用可能會更有價值。關於具身大模型可以參考RFM EP01:Pi和π0具身基礎模型。從未來趨勢看,構建和依賴強大的基礎大模型仍然是非常必要的。
怎麼理解Diffusin Head
比如說,在 Pi 模型裡,它的基礎模型是 VLM(基於PaliGemma,PaliGemma 是一個開源的VLM)。VLM 的輸出有點像 GPT,它本身並不直接輸出動作。那麼問題來了,怎麼讓它生成動作呢?這裡我們會加一個叫 action expert 的小模組,接在 P 模型(PaliGemma)的後面。
這個 action expert 是怎麼工作的呢?它不是直接把自己的引數塞進PaliGemma 模型中,變成一個大模型來輸出動作,而是透過一種 "注意力機制"(attention)去關注PaliGemma的引數。簡單來說,action expert 就是“看著” PaliGemma的引數,根據這些資訊生成具體的動作。
那這個 action expert 的訓練目標是什麼呢?用的是 diffusion 方法,更具體來說,是一種叫 flow matching 的目標。當然,diffusion 方法還有其他變種,比如 DDIM、DDPM 等。
至於為什麼要用 action expert 這種小模組,而不是直接把所有東西整合進一個大模型,我猜測原因有幾點:第一,如果直接整合到大模型中,訓練速度會非常慢,而且引數量會變得很大。第二,這樣的大模型效果反而不如單獨使用一個 action expert 模組。第三,小模組更輕量,訓練起來更容易,效果也更好。
References:
DP3
https://3d-diffusion-policy.github.io/
iDP3
https://humanoid-manipulation.github.io/
迮炎傑主頁
https://yanjieze.com/
許華哲主頁
http://hxu.rocks/
PaliGemma
https://arxiv.org/abs/2407.07726
原創不易,歡迎“點贊”“打賞”“在看”三連!
也歡迎加我微信交流!
