天天看點

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

在過去的 5 年中,3D 深度學習方法已經從使用三維資料的派生表示(二維投影)轉變為直接使用原始資料(點雲)。而在方法上也從将二維卷積神經網絡應用到三維資料上轉變為專門為三維場景設計的方法,這大大提高了物體分類和語義分割等任務的性能。這些結果非常有前景,它們證明了通過三維技術觀察和表示這個世界是有價值的。然而,這個領域才剛剛步入發展的快車道。

想象一下,如果你正在建造一輛自動駕駛汽車,它需要了解周圍的環境。為了安全行駛,你的汽車該如何感覺行人、騎車的人以及周圍其它的車輛呢?你可能會想到用一個攝像頭來滿足這些需求,但實際上,這種做法似乎效果并不好:你面對的是一個三維的環境,相機拍攝會使你把它「壓縮」成二維的圖像,但最後你需要将二維圖像恢複成真正關心的三維圖像(比如你前方的行人或車輛與你的距離)。在相機将周圍的三維場景壓縮成二維圖像的過程中,你會丢掉很多最重要的資訊。試圖恢複這些資訊是很困難的,即使我們使用最先進的算法也很容易出錯。

相反,用三維資料來增強對世界的二維視圖是非常好的做法。與其試着從一張二維圖像中估計你和行人或其它車輛的距離,你不如通過傳感器直接對這些物體進行定位。但是,這樣做又會使感覺的工作變得十分困難。如何在三維資料中識别人、騎車者和汽車這樣的目标呢?傳統的像卷積神經網絡(CNN)這樣的深度學習技術,能夠使在二維圖像中識别這些目标變得簡單而直接,但是它們也需要進行一些調整進而适應在三維環境下的工作。幸運的是,三維感覺問題在過去的幾年中已經被人們廣泛研究,我們在本文中的任務就是對這項工作進行一個簡要的概述。

具體來說,我們将關注最近的三維目标分類和語義分割的深度學習技術。我們将首先回顧一些擷取和表示三維資料的常用方法的背景。接着,我們将介紹三種不同的表示三維資料的基本深度學習方法,最後,我們将介紹未來有前景的新研究方向,并且從我們的視角總結該領域未來的走向。

我們如何擷取并表示三維資料?

顯然,我們需要能夠直接在三維空間進行操作的計算機視覺方法,但是這向我們提出了三個明确的挑戰:感覺、表示和了解三維資料。

感覺

擷取三維資料的過程是複雜的。雖然二維攝像頭既便宜又随處可見,但是三維感覺通常需要專用的硬體裝置。

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

Stereo vision 需要使用多個攝像頭,測量感覺目标的位置變化,進而計算深度資訊。(來源:愛丁堡大學)

1:立體視覺系統 Stero 需要在相對于待測物體特定的一些位置固定兩個或多個攝像頭,并且利用這樣設定的結構擷取不同場景下的圖像,比對相應的像素點,計算每個像素點對應的位置在不同的圖像間的差異,進而計算出該像素點在三維空間中的位置。人類大緻上就是像這樣感覺這個世界的。我們的眼睛會捕捉到兩個獨立的對于關于我們眼前世界的「圖像」,接着大腦會從左眼和右眼的視角來看某個物體的位置有何不同,進而确定其三維位置。Stero 涉及到的硬體系統十分簡單,這正是它吸引人的地方,它僅僅需要兩個或多個普通的攝像頭。然而,這種方法在對準确率和運作速度有要求的應用程式中表現并不好,這是因為使用視覺細節來比對不同的攝像頭得到的圖像之間對應的像素點不僅具有很高的計算複雜度,而且在缺乏紋理特征或視覺重複的環境中也很容易出錯。

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

RGB-D 攝像頭輸出一個四通道圖像,該圖像包含顔色資訊和每個像素的深度(來源:九州大學)

2:RGB-D 涉及到對一種特殊攝像頭的使用,這種攝像頭除了顔色資訊(「RGB」),還可以擷取深度資訊(「D」)。具體而言,它能夠擷取通過普通的二維攝像頭得到的彩色圖像,而且還能告訴你這些圖像中像素點的某些子集代表的物體離攝像頭有多遠。在系統内部,RGB-D 傳感器要麼通過「結構光」技術工作,要麼通過「飛行時間法」(TOF)工作。「結構光」技術能夠将紅外線圖案投射到一個場景上,并且感覺這種圖案是如何在幾何表面上變形的;「飛行時間法」會觀察其發出的紅外線傳回攝像頭所需要的時間。舉例來說,微軟的 Kinect 以及 Iphone X 的 FaceID 傳感器都是 RGB-D 攝像頭。由于這些傳感器在尺寸相對較小、成本較低的同時,也能在對視覺比對錯誤具有免疫性的同時很快地運作,是以 RGB-D 是一種很好的感覺手段。然而,RGB-D 攝像頭的深度輸出常常有許多的「孔洞」,這是由于遮擋(前景中的物體遮擋住了其後方物體的投影),模式感覺失敗以及感覺範圍的問題(在離攝像頭更遠的地方,投影和感覺會變得很困難)。

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

雷射雷達(LiDAR)使用多個雷射束(同心圓模式)直接感覺環境的集合結構(Giphy)。

3:雷射雷達會向物體發出快速雷射脈沖,測量它們傳回傳感器所需要的時間,這類似于我們在上面描述的「飛行時間法」,但是雷射雷達的感覺範圍更遠,能夠捕獲更多像點,并且抗其它光源幹擾的能力更強。目前,大多數的三維雷射雷達傳感器都會發出一些(多達 64 個)垂直排列的光束,會在傳感器周圍的各個方向上快速旋轉。出于對準确性、感覺範圍以及魯棒性的要求,目前大多數的自動駕駛汽車都會采用這種系統。但是雷射雷達傳感器存在的問題是,它們通常都很大很重并且極其昂貴(大多數自動駕駛汽車使用的 64 束傳感器需要花費 7.5 萬美元)!是以,許多公司目前正在嘗試開發更加廉價的「固态雷射雷達」系統,它無需旋轉就可以在三維場景下進行感覺。

三維表示

一旦你擷取了三維資料,你就需要以一種形式來表示它,這種形式将作為你正在建構的處理流程的輸入。以下是四種你應該已經知道的表示方式:

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

三維資料的不同表示方式。(a)點雲(來源:加州理工學院);(b)體素網格(來源:印度理工學院);(c)三角網格(來源:華盛頓大學);(d)多視角表示(來源:斯坦福大學)。

a. 點雲即三維空間中點的集合;每一點都是由某個(xyz)位置決定的,我們同時可以為其指定其它的屬性(如 RGB 顔色)。它們是雷射雷達資料被擷取時的原始形式,立體視覺系統和 RGB-D 資料(包含标有每個像素點深度值的圖像)通常在進行進一步處理之前會被轉換成點雲。

b. 體素網格是從點雲發展而來的。「體素(Voxel)」就好比三維空間中的像素點,我們可以把體素網格看作量化的、大小固定的點雲。然而,點雲在空間中的任何地方能夠以浮點像素坐标的形式涵蓋無數個點;體素網格則是一種三維網格,其中的每個單元(或稱「體素」)都有固定的大小和離散的坐标。

c. 多邊形網格由一組帶公共頂點的凸多邊形表面組成,可近似一個幾何表面。我們可以将點雲看作是從基礎的連續集合表面采樣得到的三維點集;多邊形網格則希望通過一種易于渲染的方式來表示這些基礎表面。盡管多邊形網格最初是為計算機圖形學設計的,但它對于三維視覺也十分有用。我們可以通過幾種不同的方法從點雲中得到多邊形網格,其中包括 Kazhdan 等人于 2006 年提出的「泊松表面重建法」。

d. 多視圖表示是從不同的模拟視角(「虛拟攝像頭」)擷取到的渲染後的多邊形網格二維圖像集合,進而通過一種簡單的方式表現三維幾何結構。簡單地從多個攝像頭(如立體視覺系統 stereo)捕捉圖像和建構多視圖表示之間的差別在于,多視圖實際上需要建構一個完整的 3D 模型,并從多個任意視點渲染它,以充分表達底層幾何結構。與上面的其他三種表示不同,多視圖表示通常隻用于将 3D 資料轉換為易于處理或可視化的格式。

了解

現在,你已經将你的三維資料轉化成了易于了解的形式,你需要做的是真正建構一個計算機視覺處理流程來了解它。這裡的問題在于,傳統的在二維圖像上性能良好的深度學習技術(如 CNN)在處理三維資料時可能會很困難,具體情況取決于資料的表示。這使得傳統的如目标檢測或圖像分割等任務變得具有挑戰性。

通過多視圖輸入學習

使用三維資料的多視圖表示是将二維深度學習技術應用到三維場景下的最簡單的方式。這是一種将三維感覺問題轉化為二維感覺問題的明智做法,但它仍然在某種程度上允許你對物體的三維幾何結構進行推理。早期的利用這種思想的基于深度學習的工作是 Su 等人在 2015 年提出的 multi-view CNN。

這是一種簡單卻十分有效的網絡架構,它可以從三維物體的多個二維視圖中學到特征描述符。實作這種方法與對目标分類任務使用單個二維圖像相比,提高了模型的性能。這種方法通過将一張張圖像輸入在 ImageNet 上預訓練好的 VGG 網絡,進而提取出顯著的特征、将這些結果向量組合在一起,并且将這些資訊傳遞給其餘的卷積層進行進一步的特征學習得以實作。

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

multi-view CNN 架構(來源:multi-view CNN)

然而,multi-view 圖像表示仍然有很多的局限性。主要的問題是你并沒有真正在三維環境下學習,固定數量的二維視圖仍然隻是一個對于底層的三維結構的不完美的近似。是以,像語義分割這樣的任務,特别是在跨越更複雜的物體和場景時,就會因為從二維圖像中獲得的特征資訊有限而變得具有挑戰性。此外,這種可視化三維資料對于像自動駕駛和虛拟現實這樣計算開銷非常大的任務來說是不可擴充的。請記住,生成多視圖表示需要渲染一個完整的三維模型并且模拟一些任意的視點。多視圖學習仍然有許多缺陷,這些缺陷促使人們研究直接利用三維資料進行學習的方法。

通過體積式表示學習

https://v.qq.com/x/page/r0784nbxr4s.html

通過體素網格進行學習可以解決多視圖表示的主要缺點。體素網格縮小了二維和三維之間的差距,它們是最接近圖像的三維表示形式,這使得二維深度學習的概念(比如卷積操作)能夠容易地應用于三維情景。

Maturana 和 Scherer 在 2015 年提出的 VoxNet(2015)是最早在給定體素網格輸入的情況下在物體分類任務上取得優異表現的深度學習方法。VoxNet 使用的是機率占用網格,其中的每個體素都包含了該體素在空間中被占用的機率。這樣做的一個好處就是,它允許網絡區分已知是自由的體素(例如,雷射雷達光束經過的體素)和占用情況未知的體素(例如,雷射雷達擊中位置後方的體素)。

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

VoxNet 架構(來源:VoxNet)

VoxNet 的架構本身非常簡單,它由兩個卷積層、一個最大池化層和兩個用于計算輸出的類别得分向量的全連接配接層組成。這個網絡比最先進的圖像分類網絡要淺得多,參數也少得多,但是它是從上百種可能的卷積神經網絡架構中挑選出來的。由于體素網格與圖像十分相似,它們實際上使用的帶步長的卷積和池化運算都是從二維像素的工作方式進行調整遷移到三維體素上來的。卷積算子使用的是 d×d×d×c 的卷積核而不是二維卷積神經網絡中使用的 d×d×c,池化運算考慮的是不重疊的三維體素塊而不是二維像素塊。

VoxNet 存在的一個問題是,該架構本質上并沒有旋轉不變性,盡管作者合理地假設傳感器保持直立,使體素網格的 z 軸和重力方向保持一緻,但是并沒有假設物體會繞着 z 軸旋轉:一個物體從背後看仍然對應相同的物體,即使在體素網格中的幾何形狀與我們所學的卷積核有很大的不同。為了解決這個問題,他們使用了一個簡單的資料增強政策。在訓練中,他們多次對每個體素網格進行旋轉,并且在所得到的副本上進行訓練;接着在測試時,他們将最後的全連接配接層在輸入的不同方向上得到的輸出進行池化。他們指出,這種方法比 Su 等人使用的多視圖 CNN 在「視圖池化」步驟中所做的對中間卷積層輸出進行池化的方法能更快收斂。通過這種方式,VoxNet 通過在輸入的體素網格的不同旋轉方向上共享相同的學到的卷積核權值來學習這種旋轉不變性。

VoxNet 代表着我們向真正的三維學習邁進了一大步,但是體素網格仍然具有一些缺點。首先,與點雲相比,它們丢失了分辨率。因為如果代表複雜結構的不同點距離很近,它們會被被綁定在同一個體素中。與此同時,與稀疏環境中的點雲相比,體素網格可能導緻不必要的高記憶體使用率。這是因為它們主動消耗記憶體來表示自由和未知的空間,而點雲隻包含已知點。

通過點雲學習

PointNet

考慮到這些使用基于體素的方法存在的問題,近期的工作将重點放在了直接在原始點雲資料上進行操作的架構上。最值得人們注意的是 Qi 等人于 2016 年提出的 PointNet 是最早的處理這種不規則三維資料的方法。然而,正如作者所指出的,點雲僅僅是一組通過 xyz 坐标表示位置的點。更具體地說,當我們給定點雲中的 N 個點,網絡需要學到相對于這 N 個輸入點的全排列不變的唯一特征,因為這些輸入給神經網絡的點的順序并不會影響底層的幾何形狀。此外,網絡應該對點雲的旋轉、平移等轉換有很強的魯棒性,而放縮操作也不應該影響預測結果。

為了保證對于不同的輸入順序的不變性,PointNet 背後的解決方案的關鍵思路是使用一個簡單的對稱函數,該函數為任意順序排列的輸入生成一緻的輸出(加法和乘法就屬于這類函數)。在這種直覺的引導下,PointNet 背後的基本架構(稱 PointNet Vanilla)可以定義為:

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

其中 f 是将輸入點轉換為 k 維向量的轉換函數(用于物體分類)。該函數 f 可以近似表示為另一個存在的對稱函數 g。在方程中,h 是一個多層感覺機(MLP),它将單個輸入點(以及它們相應的特征,如 xyz 位置、顔色、表面法線等)映射到更高次元的潛在空間。最大池化操作則會作為對稱函數 g 起作用,它将學到的特征聚合為點雲的全局描述符。這個單一特征向量會被傳遞給 另一個輸出物體預測結果的多層感覺機 γ。

為了應對學習對于點雲的幾何變換具有不變性的表示方式的挑戰,PointNet 使用了一個稱為 T-Net 的小型網絡,它将仿射變換應用于輸入點雲。這個概念類似于 Jaderberg 等人于 2016 年提出的空間變換網絡(https://arxiv.org/pdf/1506.02025.pdf),但是比它要簡單得多,因為在這裡不需要定義新的類型的層。T-Net 由可學習的參數組成,這些參數使 PointNet 能夠将輸入點雲變換為一個固定的、規範的空間,進而確定整個網絡對于即使是最細微的變化都具有很強的魯棒性。

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

PointNet 的架構(來源:PointNet)

整體的 PointNet 架構繼承了最基本的方法和 T-Net 以及多層感覺機層,它們為點雲建立特征表示。然而,除了物體分類之外,PointNet 還支援對物體和場景進行語義分割。為了實作這一點,該架構将來自最大池化對稱函數的全局特征和将輸入資料傳遞給一些多層感覺機後學到的點特征相結合。通過将這兩個向量連接配接起來,每個點都知道它的全局語義和局部特征,這使網絡能夠學習額外的、有助于分割的更有意義的特征。

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

使用 PointNet 得到的室内場景的語義分割結果(來源:PointNet)

PointNet++

盡管 PointNet 取得了令人滿意的結果,其最主要的缺點是該架構不能擷取點附近的底層局部結構,這一思想類似于使用 CNN 從圖像中不斷增大的感受野中提取特征,為了解決這個問題,Qi 等人于 2017 年開發了 PointNet ++。 

它是一個從 PointNet 派生出來的架構,但是也能從點雲的局部區域中學習到特征。這種方法的基本結構是一個有層次的特征學習層,它包含三個關鍵步驟:(1)為局部區域采樣一些點作為質心,(2)根據到質心的距離對這些局部區域中的相鄰點進行分組,(3)使用一個 mini-PointNet 對這些區域進行特征編碼。

這些步驟将被不斷重複,進而在點雲中不同大小的點組中學習特征。這樣做可以使網絡更好地了解整個點雲的局部點集中的底層關系,最終有助于提升泛化性能。這項工作的結果表明,PointNet++ 相對于包括 PointNet 在内的現有方法的性能有顯著提升,并且在三維點雲分析基準測試(ModelNet40 和 ShapeNet)中取得了目前最好的模型性能。

有前景的新研究領域

Graph CNNs

目前關于處理三維資料的深度學習架構的研究主要關注點雲表示,而最近許多的工作擴充了從 PointNet/PointNet++ 發展而來的思想,從其它領域獲得靈感,進一步提高了模型性能。舉例而言,Wang 等人于 2018 年提出的動态圖卷積神經網絡(https://arxiv.org/pdf/1801.07829.pdf),使用了基于圖形的深度學習方法來改進點雲中的特征提取工作。其思想是,PointNet 和 PointNet++ 不能捕獲各個點之間的幾何關系,因為這些方法需要對不同的輸入順序的排列組合保持不變性。然而,通過将一個點和它周圍最近的鄰居作為一個有向圖來考慮,Wang 等人建構了 EdgeConv 算子,它能夠生成資料中各點獨特的特征。如果你有興趣學習更多關于圖結構上的機器學習的知識,可以參閱這篇概述:https://thegradient.pub/structure-learning/

SPLATNet

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

SPLATNet 架構(來源:SPLATNet)

另一方面,一些研究不同于 PointNet/PointNet++ 中提出的經典特征提取方法,選擇設計一種新的點雲處理方法。Su 等人于 2018 年提出的 SPLATNet 架構是點雲研究領域這個新的研究熱點的很好例子。SPLATNet 的作者設計了一個新的架構和卷積算子,它可以對點雲直接進行操作。這篇論文背後的關鍵思想是将「感受野」的概念轉換為了不規則點雲,這使得空間資訊即使在稀疏區域(PointNet/PointNet++ 的一個主要缺陷)中也可以保持。特别吸引人的一點是,SPLATNet 可以将從多視圖圖像中提取的特征投影到三維空間中,将二維資料與原始點雲以一種端到端的可學習的架構進行融合。SPLATNet 通過使用這種二維-三維聯合學習取得了目前最好的語義分割模型性能。

基于截椎體的 PointNet

很好的3D深度學習的總結——超越像素平面:聚焦3D深度學習的現在和未來

利用二維邊界框估計生成的三維截椎體可視化結果(來源:Frustum PointNets)

基于同時使用二維資料和三維資料的思路,Qi 等人的 Frustrum PointNet 于 2017 年提出了一種将 RGB 圖像和點雲融合進而提高在大型三維場景中定位物體的新方法。傳統的解決該任務的方法是通過直接在整個點雲上的滑動視窗上執行分類來确定物體可能的三維邊界框,這樣做的計算開銷非常大,并且很難進行實時預測。Qi 等人的工作有兩個主要的貢獻。首先,他們建議首先使用标準的卷積神經網絡在二維圖像上進行物體檢測,提取出一個與待檢測的物體可能從屬點雲區域相對應的三維邊界框,然後在點雲的這個「切片」上進行搜尋。這大大縮小了邊界框估計的搜尋空間,減少了檢測錯誤的可能性,在很大程度上簡化了處理流程,這對自動駕駛應用十分關鍵。其次,Qi 等人設計了一種新穎的基于 PointNet 的架構,它可以直接對執行個體進行分割(将點雲分割為一個個獨立的物體),并一次性地在整個三維邊界框中進行邊界框估計,而不是在邊界框搜尋過程中執行經典的滑動視窗分類工作。這使得他們的方法對遮擋和稀疏等情況即迅速又魯棒。最終,由于這些改進,這項工作釋出時,它在 KITTI 以及 SUN RGB-D 檢測等對比基準上比之前所有的方法都取得了更好的性能。

結語

在過去的 5 年中,3D 深度學習方法已經從使用三維資料的派生表示(多視圖表示)轉變為使用原始資料(點雲)。在這個過程中,我們采用的方法已經從簡單地将二維卷積神經網絡應用到三維資料上(多視圖卷積神經網絡、體素網絡 VoxNet)轉變為專門為三維場景設計的方法(PointNet 以及其它基于點雲的方法),這大大提高了物體分類和語義分割等任務的性能。這些結果非常有前景,因為它們證明了通過三維技術觀察和表示這個世界是有價值的。然而,這個領域才剛剛步入發展的快車道。目前的工作不僅要着眼于提高這些算法的準确率和性能,還要確定魯棒性和可擴充性。盡管目前大多數研究是由無人駕駛應用驅動的,但直接在點雲上運作的新方法在三維醫學影像、虛拟現實和室内地圖中也将發揮重要的作用。

本文轉自“機器之心” :https://www.jiqizhixin.com/articles/091203

原文連結:https://thegradient.pub/beyond-the-pixel-plane-sensing-and-learning-in-3d/

繼續閱讀