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