0
雷鋒網(wǎng) AI 科技評論按:本文的作者是 Mihir Garimella 和 Prathik Naidu,他們是斯坦福大學計算機專業(yè)大二的學生,其研究領域包括機器人學、計算機視覺和機器學習等,還分別在 Facebook 的 Connectivity Lab 和亞馬遜的 CoreAI 團隊積累了行業(yè)經(jīng)驗,也是 Fire.Autonomy(一個早期的初創(chuàng)公司,專注于制造用于室內(nèi)測繪和工業(yè)檢查的無人機)的聯(lián)合創(chuàng)始人。本文發(fā)布于 The Gradient,AI 科技評論編譯如下:
想象一下你正在打造一輛可探測周圍環(huán)境的自動駕駛車。你要如何讓你的車感知行人、騎自行車的人以及其他車輛,以安全行駛呢?你可以給它裝上相機,但效果并不是特別好:你面對的是整個 3D 環(huán)境,相機拍攝到的只是把它拍扁之后的 2D 圖像,然后再嘗試從這個 2D 圖像中復原你真正需要用到的 3D 信息(比如與車前面的行人、汽車間的距離)。然而,一旦將 3D 環(huán)境擠壓成 2D 圖像,很多對你來說最重要的信息就會丟失,并且將這些信息重新拼湊起來十分困難——即使使用最先進的算法,也容易出錯。
相反地,你最好采用 3D 數(shù)據(jù)來輔助你看這個世界的 2D 視角,而不是從一張 2D 圖像中去估計與行人或其他車輛間的距離,這樣的話,你將能夠通過其它的傳感器直接定位這些目標。然而,用了 3D 數(shù)據(jù)之后,下一步要做的事情就變得麻煩了。你怎樣才能從 3D 數(shù)據(jù)中識別類如人、騎自行車的人以及汽車等目標呢?傳統(tǒng)的深度學習技術,如能直接識別 2D 圖像中目標的卷積神經(jīng)網(wǎng)絡(CNNs),需要重新對 3D 數(shù)據(jù)做適配才能工作。幸運的是,在過去的幾年中,已有很多對于 3D 感知問題的研究,而本文中,我們將對這一問題做一個簡要的概述。
特別地,我們將重點關注能對 3D 對象進行分類和語義分割的最新深度學習技術。一開始,我們會回顧一下 3D 數(shù)據(jù)采集和表示的常用方法作為背景知識。然后,我們將描述分別針對三種 3D 數(shù)據(jù)表示方式的基本深度學習方法。最后,我們將探討一些有前景的研究方向,并從我們的視角,來總結該領域的發(fā)展方向。
顯而易見,我們需要的是能夠直接以 3D 方式操作的計算機視覺方法,而這就提出了三個明顯的挑戰(zhàn):3D 數(shù)據(jù)的感知、表示和理解。
感知
3D 數(shù)據(jù)的采集是一個復雜的過程。雖然 2D 攝像價格便宜且應用廣泛,但是 3D 感知通常需要專用硬件設施。
雙目視覺使用了多個相機,并對感知目標位置的轉移進行了評估,來計算深層信息(圖源:University of Edinburgh)
1. Stereo(雙目視覺)將兩個或多個相機布置在彼此之間相對固定的位置上,并使用這種設置來捕捉一個場景的不同圖像、匹配對應的像素,并計算每個像素的位置在圖像之間如何不同,從而計算出這個像素在 3D 空間中的位置。這基本上就是人類感知世界的方式——我們的眼睛捕捉到現(xiàn)實世界中兩個分開的「圖像」,然后我們的大腦觀察目標的位置在我們左、右眼的視野中有何不同,從而確定它的 3D 位置。雙目視覺方法看起來很吸引人,因為它只需要簡單的硬件——兩臺或兩臺以上的普通相機就能實現(xiàn)。然而,因為使用視覺細節(jié)來匹配相機圖像之間的對應點不僅計算昂貴,而且在缺乏紋理或視覺結構重復的環(huán)境中容易出錯,這種方法在要求精度或速度的應用中并不適用。
RGB-D相機輸出了一個四通道圖像,它包含了每個像素深層的顏色信息(圖源:Kyushu University)
2. RGB-D 需要使用一種特定機型的相機,這種相機不僅能捕捉彩色圖像 (「RGB」) 還能捕捉深度信息 (depth,「D」)。具體來說,除了捕捉到普通 2D 相機所能捕捉的相同類型的彩色圖像,而且它還能告訴你圖像中的一部分像素是在相機前方多遠的位置上。在內(nèi)部,大多數(shù) RGB-D 傳感器的工作原理是「結構光」(structured light)和「飛行時間」(time of flight),前者將紅外圖像投射到場景上,并感測該圖案如何變形投射到幾何表面,后者著眼于投射的紅外光返回照相機需要多長時間。我們耳熟能詳?shù)?RGB-D 相機包括 Microrosoft Kinect 和 iPhone X 的面部 ID 傳感器。RGB-D 非常好用,因為這些傳感器體積相對較小且成本低,但速度快且能避免視覺匹配錯誤。然而,由于遮擋 (前景塊中的目標投影到后面的目標)、圖像感測失敗以及距離問題 (在遠離相機的地方,投影和感測都變得困難),RGB-D 相機往往在其深度輸出中存在許多空白之處。
激光雷達使用幾條激光束(同心圓感應)來直接感知周邊環(huán)境的幾何結構(圖源:Giphy)
3. LiDAR(激光雷達)的工作方式是向物體發(fā)射高頻激光脈沖,并測量它們返回傳感器所需的時間。這與我們上面提到的 RGB-D 相機的「飛行時間」技術類似,但是 LiDAR 的射程明顯更長,能捕獲的點更多,并且在有其它光源干擾的情況下也更加穩(wěn)定?,F(xiàn)在大多數(shù) 3D LiDAR 傳感器都有幾個(最高可達 64 個)垂直對齊的光束,它們能快速旋轉以觀察傳感器周圍的所有方向。由于這些傳感器的精度、工作距離和穩(wěn)定性(較好),大多數(shù)自動駕駛汽車中都會使用它們。不過,LiDAR 傳感器也有缺點:通常體積大、笨重,并且非常昂貴(大多數(shù)自動駕駛車中使用的 64 波束傳感器要花 75000 美元)。因此,許多公司目前正在嘗試開發(fā)更便宜的「固態(tài)激光雷達」(solid state LiDAR)系統(tǒng),這種系統(tǒng)可以進行 3D 感知而無需旋轉。
采集 3D 數(shù)據(jù)后,你就需要以有用的形式將它表示出來,并輸入到你接下來要構建的處理模型中。你應該了解以下四種主要的 3D 表示:
3D 數(shù)據(jù)的不同表示:(a)點云(圖源:Caltech);(b) 體素網(wǎng)格 (圖源: IIT Kharagpur); (c) 多邊形網(wǎng)格 (圖源:UW); (d) 多視圖表示(圖源:Stanford)
a. 點云(Point clouds)是 3D 空間點的簡單集合,每個點可選擇性地與一些其他屬性(例如 rgb 顏色)一起由一個(xyz)坐標確定。它們是所捕捉的原始 LiDAR 數(shù)據(jù),并且在進行進一步處理之前,雙目視覺 和 RGB-D 數(shù)據(jù)(由每個都標記了像素深度值的圖像組成)通常會被轉換為 點云。
b. 體素網(wǎng)格(Voxel grids)源自于點云。「體素」就像 3D 空間中的像素,體素網(wǎng)格則可被看成是量化的、大小固定的點云。然而點云在浮點像素坐標的空間中的任一地方,都可以有無限個點,體素網(wǎng)格則是每個單元或「體素」都具有固定大小和離散坐標的 3D 網(wǎng)格。
C. 多邊形網(wǎng)格(Polygon meshes)由一組與多邊形表面近似、共享頂點的幾何面組成。點云可被視為從真實的連續(xù)幾何表面采樣得到的 3D 點的集合;而多邊形網(wǎng)格則旨在以易于渲染的方式表示那些底層表面。多邊形網(wǎng)格雖然最初因計算機圖形而創(chuàng)建,它對于 3D 視覺,也非常有用。從點云中獲取多邊形網(wǎng)格的方法有多種,其中包括 KaZhand 這類泊松曲面重建方法。
d. 多視圖表示(Multi-view representations)是從不同模擬視點(「虛擬相機」)捕獲的一個經(jīng)渲染的多邊形網(wǎng)格的 2D 圖像的集合,它可以采用簡單的方法對 3D 幾何進行轉換。簡單從多個相機(呈現(xiàn)效果如雙目視覺)捕捉圖像和構建一個多視圖表示之間的區(qū)別在于,后者需要真正去構建完整的 3D 模型,并從多個任意視點渲染該模型,從而實現(xiàn)真實的幾何結構的完全轉換。與上述其他三種用于存儲和處理 3D 數(shù)據(jù)的表示不同,多視圖表示通常僅應用于將 3D 數(shù)據(jù)轉換成可處理或可視化的簡單格式。
將 3D 數(shù)據(jù)轉換為可理解的格式后,接下來就需要真正地構建計算機視覺模型來理解它?,F(xiàn)在的問題是,把在 2D 圖像上表現(xiàn)良好的傳統(tǒng)深度學習技術(如 CNN)拓展到在 3D 數(shù)據(jù)上運行,根據(jù)數(shù)據(jù)表示的不同可能會很困難,這也使得目標檢測、語義分割等傳統(tǒng)任務變得具有挑戰(zhàn)性。
多視圖輸入學習(Learning with multi-view inputs)
使用 3D 數(shù)據(jù)的多視圖表示,是 2D 深度學習技術適配于 3D 的最簡單方法。將 3D 感知問題轉換為 2D 感知問題是一個聰明的做法,但在某種程度上,這種方法仍然需要你推理出一個目標的 3D 幾何。早期基于深度學習的工作使用了這一方法的是 SU 等人的論文 Multi-view CNN(2015,https://arxiv.org/pdf/1505.00880.pdf),它提出的 Multi-view CNN 這個簡單而有效的結構,能從一個 3D 目標的多個 2D 視圖中學習特征描述符。比起使用單個 2D 圖像來進行目標分類,采用了這一方法的結構具有更好的性能。它的實現(xiàn)方式是:將單個圖像喂給在 ImageNet 上進行了預訓練的 VGG 網(wǎng)絡從而來提取顯著特征、池化產(chǎn)生的激活圖,并將這些信息傳送到附加卷積層來進一步進行特征學習。
多視圖 CNN 結構(圖源:論文)
同時,多視圖圖像表示也存在大量不足。其中,主要的不足是,無法真正以 3D 形式進行學習——固定數(shù)量的 2D 視圖依舊只是一個對底層 3D 結構的不完美近似。結果,由于從 2D 圖像中獲得的特征信息有限,諸如語義分割等任務——尤其是跨目標和場景的更復雜的任務,變得具有挑戰(zhàn)性。同時,對于諸如自動駕駛和虛擬現(xiàn)實等計算受限的任務,這種 3D 數(shù)據(jù)可視化形式無法進行大規(guī)模應用——要注意的是,生成多視圖表示需要對完整的 3D 模型進行渲染以及對多個任意視點進行仿真。最后,多視圖學習也面臨著許多缺陷,而這些缺陷將激勵研究者們研究直接從 3D 數(shù)據(jù)中學習的方法。
體積表示法學習(Learning with volumetric representations)
體素網(wǎng)格學習解決了多視圖表示的主要缺陷。體素網(wǎng)格架起了 2D 和 3D 視覺之間的橋梁——它們對于圖像來說,最接近 3D 表示,可使 2D 深層學習概念(如卷積運算符)更易于適配 3D 場景。Maturana 和 Scherer 的論文 VoxNet(2015,https://www.ri.cmu.edu/pub_files/2015/9/voxnet_maturana_scherer_iros15.pdf),就是最早一批在給定體素網(wǎng)格輸入的情況下,在目標分類任務上取得喜人結果的深度學習方法。VoxNet 在概率性占位網(wǎng)格上操作,其中每個體素包含該體素在空間上被占用的概率。這種方法的一個好處是,它允許網(wǎng)絡對已知自由的體素 (例如 LiDAR 光束通過的體素) 和占用情況未知的體素 (例如 LiDAR 光束射中的位置后面的體素) 進行區(qū)分。
VoxNet 結構(圖源:論文)
VoxNet 的結構本身相當簡單,它由 2 個卷積層、1 個最大池層和 2 個全連接層組成,最終計算輸出類得分向量。這種網(wǎng)絡比大多數(shù)最先進的圖像分類網(wǎng)絡更淺得多,并且擁有小得多的參數(shù),不過它是從數(shù)百種可能的 CNN 結構的隨機搜索中被選取出來的。由于體素網(wǎng)格與圖像非常相似,它們采用的實際跨步卷積和池化操作,只是在 2D 像素上執(zhí)行的這些操作對 3D 體素的細微適配。卷積操作使用 d×d×d×c 核而非應用于 2D CNNs 中的 d×d×c 核,而池化操作則考慮非重疊的 3D 體素塊,而不是 2D 像素塊。
VoxNet 的一個問題是,它的結構并非原本就是旋轉不變的。雖然論文作者合理地假設傳感器保持直立,從而讓體素網(wǎng)格的 z 軸與重力方向?qū)R,但是對于 z 軸的旋轉來說,即使體素網(wǎng)格中的幾何與學習卷積核的相互作用非常不同,這種的假設——來自后方的目標依舊是同一個目標,依舊是不存在的。為解決這一問題,他們采用了一種簡單的數(shù)據(jù)增強策略。在訓練期間,他們將每個模型旋轉幾次,并在所有的副本上進行訓練;接著,在測試時,他們將橫跨幾個輸入選擇的最終全連接層的輸出進行池化處理。他們指出,與 Su 等人的 Multi-view CNNs 在其「視圖池化」步驟中將中間卷積層的輸出池化相比,這種方法帶來的性能差不多但是收斂得更快。用這種方式,VoxNet 通過共享橫跨輸入體素網(wǎng)格的不同旋轉的相同的學習卷積核權重,來學習旋轉不變性。
VoNET 代表了向真正的 3D 學習邁進的一大步,不過,體素網(wǎng)格仍然存在許多缺陷。首先,與點云相比,它們損失了分辨率——因為當它們彼此靠近時,一些代表復雜結構的不同點會被嵌入到一個體素中。同時,與稀疏環(huán)境中的點云相比,體素網(wǎng)格可能導致不必要的高內(nèi)存使用,因為它們大量消耗內(nèi)存來表示自由和未知空間,而點云則僅包含已知點。
點云學習(Learning with point clouds)
點云分割(PointNet)
針對這些基于體素方法的問題,最近的研究集中于直接在原始點云上進行操作的結構。最值得注意的是,Qi 等人的論文 PointNet(2016,https://arxiv.org/pdf/1612.00593.pdf)是針對處理不規(guī)則 3D 數(shù)據(jù)這種格式最早被提出的方法之一。然而,如作者所指出的,點云只是 3D 空間里由 XYZ 坐標表示的一組點。更具體來說,假設給定點云中的 N 點,因為喂給網(wǎng)絡的點的排序?qū)Φ讓訋缀螞]有影響,網(wǎng)絡需要學習對輸入數(shù)據(jù)的 N! 排列具有不變性的唯一特征。此外,網(wǎng)絡對于點云的轉換——旋轉、平移應該是穩(wěn)定的,并且它的大小應該對預測沒有影響。
為了確??巛斎肱判虻牟蛔冃裕c云分割背后的關鍵性經(jīng)驗是,使用一個為輸入的任意排序產(chǎn)生一致輸出的簡單的對稱函數(shù)(此類函數(shù)中的典型算法包括加法和乘法)。在這種認知的指導下,點云分割結構背后的基本模塊(叫做 PointNet Vanilla)定義如下:
f(x1,…,xn)=γ⊙g(h(x1),…,h(xn))
其中 f 是將輸入點轉換成 k 維向量(用于目標分類)的對稱函數(shù)。這個函數(shù) f 可以近似為另一個對稱函數(shù) g。在等式中,h 是一個多層感知器(MLP),它用來將個別輸入點(以及它們的 xyz 坐標、顏色、表面法線等相應特征)標記到更高維度的隱空間。最大池化操作充當對稱函數(shù) g,它將學習到的特征聚合為點云的全局描述符。這個單一的特征向量被傳遞到γ——另一個輸出目標預測的 MLP。
為了應對這一挑戰(zhàn)——學習對點云的幾何變換具有不變性的表示,點云分割采用一個叫做 T-Net 的小型網(wǎng)絡,該網(wǎng)絡將一種仿射變換應用到點云的輸入上。這個概念與 Jaderberg 等人的論文 spatial transformer networks(2016,https://arxiv.org/pdf/1506.02025.pdf)所提出的概念類似,但要簡單得多,因為它不需要定義層的新類型。T-Net 由可學習的參數(shù)組成,這些參數(shù)使點云分割能夠?qū)⑤斎朦c云轉換為一個固定的、規(guī)范的空間,從而確保即使對于最細微的變化,整個網(wǎng)絡也是穩(wěn)定的。
點云分割結構(圖源:論文)
整個點云分割結構集成了原始方法、T-Net 與為點云創(chuàng)建特性表示的多個 MLP 層。然而,除了目標分類之外,點云分割還能夠?qū)崿F(xiàn)目標和場景的語義分割。為了實現(xiàn)這一點,點云分割結構將最大池化對稱函數(shù)中的全局特征向量與在輸入數(shù)據(jù)被傳送到一些 MLP 之后學習的任一點的特征相結合。通過連接這兩個向量,每個點都能感知到其全局語義和局部特征,從而使網(wǎng)絡能夠?qū)W習有助于分割的附加的、更有意義的特征。
基于點云分割的室內(nèi)場景語義分割結果(圖源:論文)
點云分割++(PointNet++)
雖然點云分割取得了較大的成果,但它存在的主要缺點之一,就是它的結構無法捕獲到點鄰域內(nèi)的底層局部結構——點鄰域這個概念類似于:使用 CNN 從圖像中不斷增大的感受野規(guī)格中提取特征。為了解決這個問題,Qi 等人提出了優(yōu)化后的 PointNet++(2017,https://arxiv.org/pdf/1706.02413.pdf),它衍生自點云分割結構,不過也能夠從點云中的本地區(qū)域?qū)W習特性。該方法的基礎是分層特征學習層,其具有三個關鍵步驟:第一,它將采樣的點作為局部區(qū)域的質(zhì)心;第二,基于與質(zhì)心的距離對這些局部區(qū)域中的相鄰點進行分組;第三,使用迷你—點云分割對這些區(qū)域的特征進行編碼。
這些步驟不斷重復,從而在點云內(nèi)的大小不一的點群中學習特征。通過這種方式,網(wǎng)絡可以更好地理解整個點云中的局部點群中的底層關系——最終有助于提高泛化性能。該研究結果表明,點云分割++能夠顯著改進包括點云分割在內(nèi)的現(xiàn)有方法,并在 3D 點云分析基準(ModelNet40 和 ShapeNet)上實現(xiàn)了最佳性能。
圖像卷積神經(jīng)網(wǎng)絡(Graph CNNs)
當前對用于處理 3D 數(shù)據(jù)的深度學習結構的研究,主要集中在點云表示方面,同時,最近的許多工作都是在延展點云分割/點云分割++的概念,并從其他領域汲取靈感來進一步提高性能。例如 Wang 等人的論文 Dynamic Graph CNNs (2018,https://arxiv.org/pdf/1801.07829.pdf),就使用基于圖形的深度學習方法來改善點云中的特征提取。它的觀點是點云分割/點云分割++無法捕獲各個點之間的幾何關系,因為這些方法需要保持對不同輸入陣列的不變性。然而,通過將一個點和它周圍最近的鄰域視作一個定向圖,Wang 等人構建了 EdGeConV,它是一個生成遍布數(shù)據(jù)中的點的唯一特征的運算符。如果你有興趣對圖形進行進一步學習,閱讀另一篇 Gradient 概覽(https://thegradient.pub/structure-learning/)。
針對點云處理的稀疏點陣網(wǎng)絡(SPLATNet)
針對點云處理的稀疏點陣網(wǎng)絡結構(圖源:論文)
另一方面,一些研究已經(jīng)繞開了點云分割/點云分割++中提出的經(jīng)典特征提取方法,而選擇設計一種綜合處理點云的新方法。Su 等人提出的 SPLATNet(2018,https://arxiv.org/pdf/1802.08275.pdf)架構,是點云研究新焦點中一個極好的例子——作者設計了一種新的結構和卷積算子,可以直接在點云上操作。這篇論文的主要觀點是,將「感受野」的概念轉譯為能讓空間信息即使在稀疏區(qū)域(點云分割/點云分割++的一個主要缺陷)也能夠被保存的不規(guī)則點云。特別有意思的是,SPLATNet 可以將從多視圖圖像中提取的特征投影到 3D 空間中,在端到端可學習結構中融合 2D 數(shù)據(jù)與原始點云。使用這種 2D- 3D 聯(lián)合學習,SPLATNet 在語義分割中實現(xiàn)了最優(yōu)性能。
椎體點云分割(Frustum PointNets)
對 2D 邊界框估計生成的 3D 截體進行可視化(來源:論文)
第三個有前景的研究方向,是關于對我們上面所描述的基本結構構建塊進行延展,用來構建用于諸如 3D 目標檢測等有用任務的更精細的網(wǎng)絡?;谕瑫r使用 2D、3D 數(shù)據(jù)這一想法,Qi 等人的 Frustum PointNets (2017,https://arxiv.org/pdf/1711.08488.pdf) 提出了一個新方法:融合 RGB 圖像與點云,來提高大 3D 場景中目標定位的效率。該任務的傳統(tǒng)方法通過直接在整個點云上對滑動窗口執(zhí)行分類,來確定目標可能的 3D 邊界框,這種計算成本大,而且還讓實時預測變得困難。Qi 等人做出了兩個重要貢獻:
第一,他們提議首先使用標準的 CNN 對 2D 圖像進行目標檢測,將被檢測目標可能駐留的點云區(qū)域?qū)?3D 截體拍扁,然后僅在點云的這個「切片」上執(zhí)行搜索流程。這樣就明顯縮小了邊界框估計的搜索空間,降低了錯誤檢測的可能性,并且還會大大加速處理進度——這個對于自動駕駛的應用至關重要。
第二,Qi 等人設計了一種新穎的基于點云分割的結構,可以直接一次性對整個 3D 截頭體進行實例分割(將點云分割為單個目標)和邊界框估計,而不是在邊界框搜索過程中執(zhí)行典型的滑動窗口分類,從而使他們方法在遮擋和稀疏上的表現(xiàn)既快速又穩(wěn)定。最終,由于這些改進,這項工作在發(fā)布時,在 KITTI 和 SUN RGB-D 3D 檢測基準上的表現(xiàn)都優(yōu)于先前所有的方法。
在過去僅僅 5 年的時間里,3D 深度學習方法已經(jīng)從使用衍生的(多視圖)3D 數(shù)據(jù)表示發(fā)展到原始的(點云)3D 數(shù)據(jù)表示。在此過程中,我們已經(jīng)從簡單使用 2D CNNs 適配 3D 數(shù)據(jù)的方法(多視圖 CNN,甚至 VoxNet)轉變?yōu)閷?3D 創(chuàng)建的方法(點云分割和其他點云方法),極大地提改善了在目標分類和語義分割等任務上的性能。這些成果是有前景的,因為它們證實了以 3D 視角來看、來表示這個世界,確實是有價值的。
然而,這一領域的進展才剛開始。目前的工作不僅要聚焦于提高這些算法的精度和性能,也需要確保穩(wěn)定性和可擴展性。盡管目前的許多研究都是由動駕駛這一應用場景所推動的,但是直接在點云上操作這一新方法,也將在 3D 醫(yī)學圖像、虛擬現(xiàn)實和室內(nèi)測繪中發(fā)揮重要作用。
Via:Beyond the pixel plane: sensing and learning in 3D,https://thegradient.pub/beyond-the-pixel-plane-sensing-and-learning-in-3d,雷鋒網(wǎng) AI 科技評論編譯。雷鋒網(wǎng)
題圖來源: Waymo
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。