讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

選自Google AI Blog

作者:Shreeyak Sajjan

機器之心編譯

參與:王子嘉、蛋醬

業界已經廣泛應用的光學 3D 距離傳感器,一直有個解決不了的問題——每次遇見透明物體就會失靈。最近,谷歌與來自 Synthesis AI 和哥倫比亞大學的研究人員合作開發了一種機器學習算法 ClearGrasp,能夠從 RGB-D 圖像中估計透明物體的準確 3D 數據。

從自動駕駛汽車到自動機器人等領域,光學 3D 距離傳感器與 RGB-D 相機的應用一樣廣泛,它可以生成豐富而精確的 3D 環境地圖。

但它也有個「天敵」,透明的物體就可以讓一套常用的昂貴傳感器撓頭,哪怕只是一個普通的玻璃容器。

讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究


這是因為光學三維傳感器的算法都是基於一個前提——假設所有表面都是 Lambertian 的,也就是說這個表面反射的光線是均勻的,從而從各個角度看,表面的亮度都是一致的。然而,透明物體顯然不符合這個假設,因為它們的表面除了反射光線,還會折射光線。因此,大多數透明對象的深度數據是無效的,或者是包含不可預測的噪聲。

讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

光學三維傳感器通常無法探測到透明物體。右上:例如,Intel®RealSense™D415 RGB-D 攝像機拍到的 3D 深度圖像中沒有顯示玻璃瓶。底部:對深度圖像點雲的三維可視化。

讓機器更好地感知透明的表面,不僅能提高安全性,還能在非結構化應用中開闢新的交互——比如處理廚房用具或對塑料進行回收分類的機器人,或是在室內環境中導航或在玻璃桌面上生成增強現實 (AR) 可視化效果。

為了解決這個問題,谷歌與來自 Synthesis AI 和哥倫比亞大學的研究人員合作開發了 ClearGrasp。ClearGrasp 是一種機器學習算法,它能夠從 RGB-D 圖像中估計透明物體的準確 3D 數據。

這種效果的實現主要得益於谷歌同時公開的一個大規模的合成數據集。ClearGrasp 的輸入可以來自任何標準的 RGB-D 攝像機,然後它會使用深度學習來精確地重建透明物體的深度,並將其泛化成一種全新的物體,這種物體在訓練過程中是看不到的。這與以前的方法不同,以前的方法需要事先了解透明物體(如它們的 3D 模型),然後結合背景照明和攝像機位置圖來進行建模。在這項工作中,谷歌還證明了 ClearGrasp 可以通過將其整合到其 pick and place 機器人的控制系統中,來提高機器人的操作效率,在該系統中透明塑料物體的抓取成功率有了顯著的提高。

讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

ClearGrasp 通過深度學習來重建透明表面的精確三維深度數據。

透明對象的可視化數據集

任何有效的深度學習模型都需要需要大量的數據來訓練(如視覺領域的 ImageNet 和 BERT 使用的 wikipedia),ClearGrasp 也不例外。不幸的是,並沒有這種帶透明物體 3D 數據的數據集。現有的 3D 數據集(如 Matterport3D、ScanNet 等)都沒有透明表面的記錄,因為這種標記過程耗時耗力。

為了克服這個問題,谷歌創建了自己的大型透明對象數據集,其中包含 5 萬多個具有相應表面法線(表示表面曲率)、分割掩模、邊緣和深度的真實感渲染,這對於訓練各種 2D 和 3D 檢測任務非常有用。每個圖像包含的透明物體多達 5 個,有的在一個平面上,有的在一個手提袋裡,而且包含了各種背景和照明的場景。

讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

ClearGrasp 合成數據集的一些透明物體實例。

谷歌還在數據集中收集了 286 張實景圖的測試集,這些圖像都有深度標註。實景圖的拍攝過程是艱苦的,拍攝時需要在場景中的每個透明物體的位置上繪製一個跟其位置大小完全一致的圖像。這些圖像是在許多不同的室內照明條件下拍攝的,使用了各種不同的布和飾面背景,而且包含了散落在場景周圍的隨機不透明物體。它們既包含合成訓練集中已有的對象,也包含新對象。


讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

左:實景圖拍攝設置;中:自定義用戶界面支持精確地用噴漆複製替換每個透明對象;右:捕獲數據的示例。

挑戰

雖然通過透明物體看到的扭曲的背景視圖混淆了典型的深度估計方法,但是也有一些線索暗示了物體的形狀。透明的表面也有鏡面反射,這種反射跟鏡子一樣,在光線充足的環境中就變成亮點了。由於這些視覺線索在 RGB 圖像中比較突出,並且主要受到物體形狀的影響,因此卷積神經網絡可以利用這些反射來推斷出準確的表面法線,然後再用於深度估計。

讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

透明物體上的鏡面反射反映了不同的特徵,這些特徵根據物體的形狀而變化,併為估計表面法線提供了極其有用的視覺線索。

大多數機器學習算法試圖直接從單目 RGB 圖像中估計深度。然而,即便對人類來說,單目深度估計也是一個非適定(ill-posed)的任務。團隊觀察到,在估計平坦背景表面的深度時存在較大的誤差,這就增加了對位於其上的透明物體深度估計的誤差。因此,與直接估計所有幾何圖形的深度不同,糾正 RGB-D 3D 相機的初始深度估計值可能更實用——能夠使用非透明表面的深度來通知透明表面的深度。

ClearGrasp 算法

ClearGrasp 用了 3 種神經網絡:一種網絡用於估計表面法線,一種用於遮擋邊界(深度上不連續),另一種用於遮擋透明對象。遮擋會刪除跟透明對象有關的所有像素,以便填充其正確的深度。然後,使用一個全局優化模塊,從已知的表面開始擴展深度,並使用預測的表面法線來指導重建的形狀,然後使用預測的遮擋邊界來保持不同對象之間的分離。


讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

方法概述:點雲首先根據輸出深度生成,然後根據其表面法線著色。

每個神經網絡都在透明的合成數據集上訓練,它們在實景圖中的透明物體上表現良好。然而,對於其他表面,如牆壁或水果,表面的法線估計是很差的。這個合成數據集還存在侷限性,它只包含地面上的透明對象。為了減輕這個問題的影響,團隊在表面法線訓練循環中加入了一些來自 Matterport3D 和 ScanNet 數據集的真實室內場景。通過對域內的合成數據集和域外的實景數據集的訓練,該模型在測試集中表現良好。


讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

在 a) Matterport3D 和 ScanNet (MP+SN),b) 谷歌的合成數據集,c) MP+SN 以及谷歌的合成數據集訓練後的表面法線估計。注意,在 MP+SN 上訓練的模型沒有檢測到透明的物體。只訓練合成數據的模型能很好地識別真實的塑料瓶,但卻無法識別其他物體和物體表面。當模型同時在這兩中數據集上訓練時,就可以同時滿足這兩方面的需求。

結果

總體而言,定量實驗表明 ClearGrasp 能夠重建透明物體的深度,且比其他方法有更高的保真度。儘管模型只在合成透明物體上訓練,但能夠很好地適應真實世界的領域,比如在跨領域的已知物體上實現了幾乎一樣的定量重建性能。這個模型還可以很好地推廣到具有從未見過的複雜形狀的新對象。

為了檢驗 ClearGrasp 的定量性能,團隊基於輸入和輸出深度圖像構建了 3D 點雲,如下圖所示(更多的例子可以在項目頁面上找到:https://sites.google.com/view/cleargrasp/results)。由此估計出的三維表面具有乾淨且連貫的重建形狀——這對三維製圖和三維物體檢測等應用來說很重要,也沒有在單目深度估計方法中看到的鋸齒噪聲。可以證明模型是穩健的,並在複雜的條件下(如識別位於圖案背景中的透明對象或區分部分遮擋的透明對象)表現良好.

讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

對真實圖像的定量結果。前兩行:已知對象的結果。底部兩行:對新對象的結果。點雲是基於其相應的深度圖像生成生成的,用其表面法線著色。

最重要的是,ClearGrasp 的輸出深度可以直接用作使用 RGB-D 圖像的最先進的操作算法的輸入。用 ClearGrasp 的輸出深度估計替換原始的傳感器數據後,UR5 機器人手臂抓取算法在抓取透明物體的成功率上有了顯著的提高。當使用平行頜夾持器時,成功率從基線的 12% 提高到 74%,吸物時從 64% 提高到 86%。

讓光學3D傳感器「看見」透明杯子,這是來自谷歌、哥大的新研究

使用 ClearGrasp 操作新的透明對象。值得注意的是,這些條件是有挑戰性的:沒有紋理的背景,複雜的物體形狀和定向光,同樣有令人困惑的陰影和焦散(當光線從表面反射或折射時產生的光的模式)。

侷限性及未來的工作

這一合成數據集的限制之一是它不能準確地表示焦散,這個問題同樣來自於傳統的路徑跟蹤算法渲染的限制。因此,模型忽略了明亮焦散和陰影是獨立的透明物體這一點。儘管有這些缺點,谷歌與 ClearGrasp 的合作表明,合成數據仍然是一種可行的方法,可以得到基於學習的深度重建方法的有效結果。未來工作中一個比較好的方向是通過生成物理上正確的焦散和表面缺陷(如指紋)來改進到真實世界圖像的域遷移。

ClearGrasp 證明了高質量的渲染可以成功地訓練出在現實世界中表現良好的模型。團隊還希望該數據集可以推動對數據驅動的透明對象感知算法的進一步研究。下載鏈接和更多的示例圖像可以在谷歌的項目網站(前文提過)和谷歌的 GitHub 頁面(https://github.com/Shreeyak/cleargrasp)中找到。


分享到:


相關文章: