3d形狀分類主要有三種方法:基於多檢視的(multi-view),基於體積的(volumetric-based),基於點的(point-based)。
基於多檢視的方法將非結構化的點雲投影為2d影象,而基於體積的方法將點雲轉換為3d體積表示。然後利用2d或3d卷積網路來實現形狀分類。相反,基於點的方法直接在原點雲影象上執行,不會造成資訊丟失,正在逐漸成為主流。
基於多檢視的方法首先將3d形狀投影到多個檢視中,然後提取檢視的特徵,融合這些特徵以進行準確的形狀分類。所以關鍵在於如何融合這些特徵。該方法開創性的工作是15年提出的mvcnn1
,如圖所示,其中所有分支的cnn1共享權重,它將多檢視特徵maxpool化為全域性描述符。 但是,最大池化只能保留特定檢視中的最大元素,從而導致資訊丟失。
之後, yang等人2
提出對多檢視的關係進行建模,提出了一種關係網路,用兩個模組分別提取不同檢視間的region關係以及整個示圖之間的關係,最終生成3d描述符,如圖所示:
wei等人3
提出使用圖卷積網路建模多個檢視之間的關係,每個檢視作為乙個圖節點,然後將由區域性圖卷積,non-local訊息傳遞和選擇性檢視取樣組成的核心層應用於構建的圖。關於該文章的詳細介紹可以參考一篇知乎的講解4
。通過體素網格進行學習可以解決多檢視表示的主要缺點。體素網格縮小了二維和三維之間的差距,它們是最接近影象的三維表示形式,這使得二維深度學習的概念(比如卷積操作)能夠容易地應用於三維情景。
在 2015 年提出的 voxnet5
,是最早在給定體素網格輸入的情況下在物體分類任務上取得優異表現的深度學習方法。voxnet 使用的是概率占用網格,其中的每個體素都包含了該體素在空間中被占用的概率。這樣做的乙個好處就是,它允許網路區分已知是自由的體素。整個流程如下:
由於體素網格與影象十分相似,它們實際上使用的帶步長的卷積和池化運算都是從二維畫素的工作方式進行調整遷移到三維體素上來的。卷積運算元使用的是 d×d×d×c 的卷積核而不是二維卷積神經網路中使用的 d×d×c,池化運算考慮的是不重疊的三維體素塊而不是二維畫素塊。圖中conv(f,d,s) f表示卷積運算元個數,d為卷積核尺寸,以及步長s。
體素的缺點是:需要很高的解析度才能模擬出乙個物體的精準結構。而高解析度往往意味著大量的記憶體和計算量。這類方法難以處理密集的3d資料,因為計算量隨著解析度三次方增長。
為了解決這個問題,octnet6
提出,在點雲等表示方法中的3d資料本身是稀疏的(空間中有一些地方沒沒有物體存在),這就導致了在使用3d卷積時的計算資源浪費。所以ocnet使用一組不平衡的八叉樹來對空間進行分層劃分,更具體地說,以遞迴方式拆分在其域中包含資料點的八叉樹節點,並在樹的最佳解析度停止。也就是說ocnet根據3d結構動態的分布計算和儲存,這樣可以在高解析度的時候節省計算和儲存。
如圖所示,第二行是普通的3d convnet,可以看到如果使用高解析度計算,那麼全圖都是密集的網格點,代表該處的卷積計算位置,而第三行的ocnet可以根據輸入物體的形狀,動態調節每個位置的解析度(通過八叉樹實現,關於八叉樹可參考:八叉樹),從而在使用同等解析度的時候降低計算量和記憶體占用。
但是體素網格仍然具有一些缺點。首先,與點雲相比,它們丟失了解析度。因為如果代表複雜結構的不同點距離很近,它們會被被繫結在同乙個體素中。與此同時,與稀疏環境中的點雲相比,體素網格可能導致不必要的高記憶體使用率。這是因為它們主動消耗記憶體來表示自由和未知的空間,而點雲只包含已知點。
pointwise mlp
該類方法通過幾個mlp建模點與點之間的關係可,然後匯聚成全域性特徵。先驅代表工作是pointnet7
,未完待續…
h. su, s. maji, e. kalogerakis, and e. learned-miller, 「multiview convolutional neural networks for 3d shape recognition,」 in iccv, 2015. ↩︎
z. yang and l. wang, 「learning relationships for multi-view 3d object recognition,」 in iccv, 2019 ↩︎
x. wei, r. yu, and j. sun, 「view-gcn: view-based graph convolutional network for 3d shape analysis,」 in cvpr, 2020. ↩︎
↩︎d. maturana and s. scherer, 「voxnet: a 3d convolutional neural network for real-time object recognition,」 in iros, 2015. ↩︎
g. riegler, a. osman ulusoy, and a. geiger, 「octnet: learning deep 3d representations at high resolutions,」 in cvpr, 2017. ↩︎
c. r. qi, h. su, k. mo, and l. j. guibas, 「pointnet: deep learning on point sets for 3d classification and segmentation,」 in cvpr, 2017. ↩︎
關於3D點雲濾波
點雲是三維離散資料,影象是二維稠密矩陣。資料型別的不同決定了其處理方式的差異,但濾波的基本原理和目的有相同之處 利用資料的低頻特性剔除離群資料,並進行資料平滑或提取特定頻段特徵。點雲濾波包括剔除離群點,擬合區域性平面,方法分別有ransac與3d擬合。影象濾波側重於糾正雜訊點 如中值濾波 並平滑影象...
3D雷達簡介
三維雷達資料 我們可以使用二維影象進行 濾波 邊緣檢測 二值化 目標提取。我們可以在二維影象之上對距離進行分析,自然而然的引申到3d建模等。這是無人駕駛的案例,已經在路上跑的真真切切的例子。通過雷達資料對周圍障礙物進行檢測,通過三個影象感測器對周圍影象進行實時觀測。雷達用於檢測到物體,影象用於檢測物...
3D點雲的深度學習
使用卷積神經網路 cnn 架構的深度學習 dl 現在是解決影象分類任務的標準解決方法。但是將此用於處理3d資料時,問題變得更加複雜。首先,可以使用各種結構來表示3d資料,所述結構包括 1 體素網格 2 點雲 3 多檢視 4 深度圖 對於多檢視和深度圖的情況,該問題被轉換為在多個影象上使用2d cnn...