編者按:本文作者Mihir Garimella和Prathik Naidu是斯坦福大學大二的學生,他們在這篇文章中總結了對3D場景感知所需要的技術以及未來發展的方向。
假設你要打造一臺自動駕駛汽車,它需要了解周圍情況。你會用什么方法讓車子感知周圍的行人、自行車和其他障礙物呢?也許你會想到用照相機,但是這可能不會很高效:你需要對3D環境進行拍攝,然后將其壓縮成2D圖像。之后,模型會重建你需要的3D圖像信息(例如車輛距前方行人的距離)。將3D圖像壓縮的過程會丟掉很多重要信息,然而之后想再重新拼湊這些信息是很困難的,即使是最先進的算法也會出錯。
所以,理想情況下你應該可以用3D數據對2D景觀進行優化,可以直接用傳感器對前方障礙進行定位,而不是用2D圖像估計行人或其他交通工具與你的距離。但是這時又會有新的問題:我們怎么才能在3D數據中識別目標物體呢?例如行人、自行車、汽車等等。傳統的CNN會直接在2D圖像中辨認不同的物體,然后再在3D中調整。3D感知問題已經研究了很久,這篇文章就是對這一工作進行大致回顧。
特別的,我們將重點關注最近能夠實現3D物體的分類和語義分割的深度學習技術。我們會從捕捉、表示3D數據的常用方法講起,之后會展示三種基本的用于表示3D數據的深度學習方法。最后,我們會思考未來研究的新方向。
如何捕捉并表示3D數據?
很明顯,我們需要能直接在3D數據上操作的計算機視覺方法,但是這里有三大難題:感知、表示、理解3D數據。
感知
捕捉3D數據的過程很復雜,雖然2D相機價格便宜、使用廣泛,但是要進行3D感知還需要特殊的硬件設備。
立體視覺利用多相機在不同方位進行拍攝來計算深度信息
1. 在兩個或兩個以上的位置放置相機,捕捉不同場景下的目標圖像,然后把對應的像素進行匹配,計算不同照片中每個像素的位置有何不同。這也是人類看世界的方法——我們的眼睛捕捉兩個不同的畫面,然后大腦根據左右眼不同角度確定3D場景。立體視覺只需要幾個普通相機,設備很簡單,因此吸引了很多使用者。但是,這種方法在進行精準測量或計算速度時表現得就不那么好了,因為用視覺細節對圖像之間相對的點進行匹配,不僅需要大量計算力,還會造成很多錯誤。
RGB-D相機可以輸出一個有四個通道的圖像,其中包含了顏色信息和像素深度
2. RGB-D是一種特殊的相機,它不僅能捕捉深度信息(D)還能捕捉圖像顏色(RGB)。而且它還能捕捉到和2D相機一樣的彩色圖像。大多數RGB-D傳感器是通過“結構光”或“飛行時間”進行工作。你可能聽過微軟的Kinect或iPhone X的Face ID傳感器中包含RGB-D相機,它們很強大,因為這些傳感器體積小、成本低、速度快。但是,RGB-D相機經常會在深度輸出上出現很多洞,因為前方背景的障礙物遮擋或者模式識別的故障等問題。
LIDAR運用幾束激光直接感知環境的幾何結構
3.LIDAR是對目標物體發射高速激光脈沖,并計算它們返回傳感器的時間,類似RGB-D相機的“飛行時間”技術,但是LIDAR的探測距離可以更長,能捕捉更多點,不容易受其他光源的干擾。目前大多數自動駕駛汽車使用的也是這類傳感器,因為它們精確度高、范圍廣并且穩定。但是LIDAR通常體積很大、價格昂貴,許多公司正在開發更便宜的LIDAR系統。
3D表示
獲取數據后,你需要用合適的方法表示出來。這里有四種主流的表示方法:
從左至右:點云;voxel網格;多邊形網格;多角度表示
1.點云是在3D空間中點的集合,每個點都由一個坐標(xyz)表示,同時會有其他特征(例如RGB顏色)。它們都是捕捉到的LIDAR數據的原始形式,通常在進行下一步處理之前,立體和RGB-D數據會轉化成點云形式。
2.Voxel網格由點云演化而來。Voxel就像3D中的像素,我們可以將voxel網格想象成量化的、固定尺寸的點云。盡管點云可以在空間中的任何位置具有無線數量的點與浮點像素坐標,但是voxel網格是3D網格,其中的每個體素(voxel)都有固定的尺寸和獨立的坐標。
3.多邊形網格是一組有共同頂點的多變形表明組成的一個近似幾何形狀的表面。將點云想象成從連續集合表面采集的3D點的集合,多邊網格的目的是用一種容易渲染的方法表示出這些表面。雖然最初是為了計算機圖形而創建的,多邊形網格也可以用于3D視覺。從點云中獲取多邊形網格的方法有很多,可以參考Kazhdan等人的Poisson surface reconstruction(地址:http://hhoppe.com/poissonrecon.pdf "Poisson surface reconstruction")。
4.多角度表示是從多個角度捕捉到的、經過渲染的多邊形網格的2D圖像集合。僅從多個相機中捕捉不同圖像和創建多角度的表示之間的區別在于,多角度需要搭建一個完整的3D模型,并且從多個任意角度進行渲染,以完全傳遞潛在的幾何圖像。與上面其他三種表示不同,多角度表示通常將3D數據轉化成更簡單的形式用于處理可視化。
理解
現在,你已經將3D數據轉化成可讀形式了,你需要創建一個計算機視覺管道理解它。這里的問題是,擴展傳統的深度學習技術到3D數據上會很棘手。
通過多角度輸入學習
多角度表示是最簡單的將2D深度學習應用在3D上。將3D感知問題轉換成2D感知是很聰明的方法,但是它仍然需要你推理目標物體的3D幾何圖形。早期運用這一方法的深度學習研究是Su等人的多角度CNN,這是一種簡介但是高效的網絡結構,可以從多個2D圖像中學習特征描述。運用了這種方法,結果比單獨使用2D圖像要好。將單獨的圖像輸入到經過訓練的VGG網絡中,提取最重要的特征,對這些激活映射進行池化,然后將信息傳遞到其他卷積層中進行特征學習。
不過,多角度圖像表示有一些限制。主要問題是我們并不是真正學習的是3D,一定量的2D角度圖像并不能真正地估計3D結構。所以,一些類似語義分割的任務,尤其是復雜的目標和場景,都會受到特征信息的限制。另外,這種形式的3D數據可視化是不可擴展的,在計算上會受到限制。
用容積表示學習
通過voxel網格學習解決了多角度表示的主要缺點。voxel網格填補了2D和3D表示之間的差距。Maturana和Scherer的VoxNet(地址:https://www.ri.cmu.edu/pubfiles/2015/9/voxnetmaturanaschereriros15.pdf)是最初用深度學習方法在圖像分類上達到較好結果的方法。
VoxNet結構
VoxNet的結構非常簡潔,包括兩個卷積層,一個最大池化層和兩個用于計算輸出分數向量的完全連接層。該網絡結構更簡單,參數也更少,但它是從上百個CNN架構中隨機搜索得到的。
用點云學習
PointNet
由于基于voxel的方法有多種限制,最近一些研究開始直接處理原始的點云。Qi等人于2016年提出的PointNet(地址:arxiv.org/pdf/1612.00593.pdf)是首個處理這種不規則3D數據的方法。然而,如論文作者所說,點云僅僅是一些用xyz坐標組合起來的3D表示。另外,網絡應該對點云的變化保持穩定,例如旋轉、翻轉、縮放等等。
PointNet結構
PointNet++
雖然PointNet能達到較好的效果,但是它的一個重要缺陷是結構無法捕捉近鄰點之內的本地結構。為了解決這個問題,Qi等人在2017年提出了PointNet++(地址:arxiv.org/pdf/1706.02413.pdf),它是PointNet的升級版,它背后的主要原理是一個分級的特征學習層,主要工作過程有三步,首先它會對點進行采樣,用作局部區域的中心,之后根據這些區域中近鄰點到中心點的距離分組,然后用mini-PointNet對區域進行特征編碼。
未來研究新方向
目前對3D數據的處理主要集中在點云表示,除此之外還有一些其他成果。2018年,Wang等人提出的Dynamic Graph CNNs利用基于圖形的深度學習方法提高了在點云中的特征提取。
另一方面,一些研究者設計了新方法處理點云,Su等人的SPLATNet架構就是很典型的例子。作者設計了一種全新架構和卷積操作器,可以直接在點云上進行操作。它的核心思想是將“接受域”的概念轉換成不規則的點云,即使在稀疏空間中也能看到空間信息。
SPLATNet架構
第三種有前景的研究防線是擴展基礎結構,建造更詳細的網絡用于3D目標檢測。2017年,Qi等人的Frustum Pointns提出了一種新方法,將RGB圖像和點云融合,提高了模型在3D場景中定位的效率。
結語
過去五年,3D深度學習方法從多角度發展到點云的3D數據表示,各種處理方法層出不窮,這些研究結果都非常有前景,因為它們能夠真實地用3D表現出現實世界。
然而,這些進步僅僅是開始。目前的工作不僅關注如何提高算法的精確度和性能,而且還要保證它們的穩定性和可擴展性。雖然現在的大部分研究都是來自自動駕駛的需求,但直接在點云上操作的方法能在3D醫學成像、VR和室內地圖中發揮很大的作用。
-
3D
+關注
關注
9文章
2875瀏覽量
107489 -
自動駕駛
+關注
關注
784文章
13787瀏覽量
166404 -
深度學習
+關注
關注
73文章
5500瀏覽量
121117
原文標題:超越平面像素:3D數據的感知與學習
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論