1. 程式人生 > >點雲3d檢測模型pointpillar

點雲3d檢測模型pointpillar

# PointPillars 一個來自工業界的模型.https://arxiv.org/abs/1812.05784 3D目標檢測通常做法 - 3d卷積 - 投影到前平面 - 在bird-view上操作 處理思路依然是3d轉2d,先把3維的點雲轉成2d的偽影象. ![](https://img2020.cnblogs.com/blog/583030/202003/583030-20200310113214916-820947817.png) ## Feature Net ![](https://img2020.cnblogs.com/blog/583030/202003/583030-20200310133421299-1930950899.png) 把點雲資料處理成類似影象的資料. pillar即柱子.點雲的特性決定了每個柱子內的點是很稀少的. 一堆點,我們將其視為一個個柱子(即pillar),每個pillar內有很多points.所有的pillar內的point即組成了點雲. 首先在x-y平面上投影出來一個h x w的網格.即劃出h x w個pillar出來. 原始的點雲資料point有(x,y,z,r)4個維度,r代表反射率.我們將其擴充套件為9個維度(x,y,z,r,x_c,y_c,z_c,x_p,y_p,帶c下標的是點相對於柱子中心的偏差,帶p下標的是對點相對於網格中心的偏差。每個柱子中點多於N的進行取樣,少於N的進行填充0。於是就形成了(D,P,N)D=9, N為每個pillar的取樣點數(設定值),P為pillar總數目,H*W。 這樣點雲資料就表達成了一個(D,P,N)的Tensor. 然後卷積,得到一個(C,P,N)的Tensor.在N這個維度上做max operation.得到(C,P)的tensor.變形得到(C,H,W)tensor. 至此,我們就用一個(C,H,W)的tensor完成了點雲資料的表達. ## Backbone backbone完成特徵提取. ![](https://img2020.cnblogs.com/blog/583030/202003/583030-20200310133503643-1498213506.png) 分為2部分 - top-down network產生空間解析度逐步降低的feature map - second network做upsample和concatenation,精細化feature. top-down部分可以描述為一系列的block(S,L,F) S代表相對pseudo-image(即feature net得到的tensor)的stride. 一個block有L個3x3的2D卷積層. F代表輸出的channel數目. backbone輸出的tensor為(6C,H/2,W/2) ## Detection 用的ssd.高度z是單獨迴歸的. ![](https://img2020.cnblogs.com/blog/583030/202003/583030-20200310134844406-581379927.png) ## 實驗細節 ![](https://img2020.cnblogs.com/blog/583030/202003/583030-20200310135538229-134331150.png) 點雲轉影象部分的C=64.backbone部分,車/人/自行車的S不一樣. ### loss設計 3d box由(x,y,z,w,l,h,theta)確定. 類似於2d box由(x,y,w,h)確定,3d box多了一個z方向的資料,以及一個角度,用以預計3d box的朝向(繞z軸的角度). loss由3部分組成 - 定位loss,衡量3d box畫的準不準 - 分類loss,衡量box內的物體類別判斷準不準 - direction loss.定位loss雖說已經考慮了角度,但是不能區分flipped box.即比如一個3d box內的車,朝著正南和朝著正北走,標出來的3d box都是一樣的. 定位loss: ![](https://img2020.cnblogs.com/blog/583030/202003/583030-20200310143637936-1398337729.png) 分類loss:  focal loss通過對不同樣本的loss賦予不同的權重,該權重是一個與當前樣本預測概率相關的值. 係數為(1-p)的變種.從而達到p越小,loss權重越大的目的. 即放大hard example的loss.從而使得模型更好地適應難以分類的樣本. ![](https://img2020.cnblogs.com/blog/583030/202003/583030-20200310143742551-1957318342.png) 方向loss: 由softmax得到. ![](https://img2020.cnblogs.com/blog/583030/202003/583030-20200310144334785-1910972053.png) # 程式碼解析 todo 程式碼: ``` python ./pytorch/train.py evaluate --config_path=./configs/car.fhd.config --model_dir=/path/to/model_dir --measure_time=True --batch_si