【VoxelNet —— 体素网络】
VoxelNet: 基于體素的端到端目標檢測
- 體素
- VoxelNet的框架:
- 一.特征學習網絡( Feature learning network)
- 1.1體素分塊(Voxel Partition)
- 1.2點云分組(Grouping)
- 1.3隨機采樣(Random Sampling)
- 1.4多層的體素特征編碼(Stacked Voxel Feature Encoding)
- 1.5稀疏張量表示(Sparse Tensor Representation)
- 二.卷積中間層(Convolutional middle layers)
- 三.區域提案網絡(Region proposal network)
- 附: loss
- 附:高效運行( Efficient Implementation)
體素
體素——————像素
lidar 可以提供可靠的深度信息,用于準確定位對象并表征其形狀,由于 3D 空間的非均勻采樣、傳感器的有效范圍、遮擋和相對姿態等因素,LiDAR 點云稀疏且點密度變化很大。
將采集到的點云數據進行網格劃分,類似于將圖片進行平面劃分,可以更加高效的處理點云。
將劃分好的點云輸送到端到端的網絡結構中,以端到端的方式從點云中學習判別性特征表示并預測準確的 3D 邊界框,避免了手動特征工程引入的信息瓶頸。
VoxelNet的框架:
特征學習網絡( Feature learning network)卷積中間層(Convolutional middle layers)區域提案網絡(Region proposal network)一.特征學習網絡( Feature learning network)
這一模塊的操作主要就是進行點云的處理,分為5個步驟:
1.1體素分塊(Voxel Partition)
先用大的3D空間容納所有的點云數據,其深度、高度和寬度分別為 ( D , H , W )。再在其內部自定義體素尺寸(v D ? ,v H ,v W ),則整個數據的三維體素化的結果在各個坐標上生成的體素格(voxel grid)的個數為:(D /v D , H/ v H , W /v W)
1.2點云分組(Grouping)
分組就是將所有的點云數據劃分到所定義的體素中,但是因為點云是稀疏的,并且在在整個空間中具有高度可變的點密度,所以分組之后體素中的點云個數各不相同,甚至有些體素中就沒有點云。
1.3隨機采樣(Random Sampling)
隨機采樣就是抽取上面所定義的體素。因為分出的體素比較多,而且很多就沒有點云數據,所以隨機采樣可以減少計算量,有效降低因為點云數據不平衡帶來的信息偏差。另外論文中定義了一個體素中所包含最大點云數量T。
1.4多層的體素特征編碼(Stacked Voxel Feature Encoding)
這一部分就是對點云進行特征編碼,Voxel Feature Encoding簡稱VFE,是本文的核心思想。
1.5稀疏張量表示(Sparse Tensor Representation)
雖然一次lidar掃描包含接近10萬個點,但是超過90%的體素格都是空的,使用稀疏張量來描述非空體素格在于能夠降低反向傳播時的內存和計算消耗。
上述得到的特征可以用4維的稀疏張量表示:C × D’ × H’ × W’。
二.卷積中間層(Convolutional middle layers)
我們使用ConvMD ( cin,cout, k , s , p ) 來表示一個M維卷積算子,其中cin和cout 是輸入和輸出通道的數量,k,s和p是m維向量分別根據內核大小、步幅大小和填充大小來確定。當m維的大小相同時,我們使用一個標量來表示例如k=(k,k,k)的大小。
三.區域提案網絡(Region proposal network)
RPN 這個概念來源于 Faster R-CNN 系列,VoxelNet 中也運用到了 RPN,但經過了改良。
輸入是卷積中間層提供的特征,整個網絡包含三個全卷積塊,每個塊的第一層通過步長為2的卷積將特征圖采樣為一半,之后是三個步長為1的卷積層,每個卷積層都包含BN層和ReLU操作。
將每一個塊的輸出都上采樣到一個固定的尺寸并串聯構造高分辨率的特征圖。最后,該特征圖通過兩種二維卷積被輸出到期望的學習目標:
概率評分圖(Probability Score Map )回歸圖(Regression Map)附: loss
其中 (d ^a )^2= ( l ^a ) ^2 + ( w ^a ) ^2 是錨盒底部的對角線。
則最終的損失函數為:
附:高效運行( Efficient Implementation)
gpu被優化用于處理致密張量結構。但是點云分布稀疏。
論文設計了一種將點云轉換為密集張量結構的方法,其中堆疊的VFE操作可以在點和體素之間并行處理。
初始化一個K×T×7維張量結構來存儲體素輸入特征緩沖區,其中K是是非空體素的最大數量,T是最大值每個體素的點數,7是每個點的輸入編碼維度。
這些點在處理前是隨機化的。對于點云中的每個點,我們檢查是否有相應的體素已經存在。這個查找操作是在O(1)中使用一個哈希表有效地執行的,其中體素坐標被用作哈希鍵。
如果體素已經初始化,那么我們將點插入到體素位置,如果有小于T個點,否則該點將被忽略。如果體素沒有被初始化,我們將初始化一個新的體素,將它的坐標存儲在體素坐標緩沖區中,然后in插入該點到這個體素位置。
體素輸入特征和坐標緩沖區可以通過通過點列表來構造,因此其復雜度為O(n)。為了進一步提高內存/計算效率,可以只存儲有限數量的體素(K),并忽略來自具有很少點的體素的點。
————————————————
參考連接:https://blog.csdn.net/qingliange/article/details/122783278
總結
以上是生活随笔為你收集整理的【VoxelNet —— 体素网络】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中文字体下载
- 下一篇: 如何编译typescript文件,在控制