从VoxelNet 到 Pointpillars

VoxelNet:

空间上 ( z , y , x ) (z, y, x) (z,y,x)的范围为 [ − 3 , 1 ] × [ − 40 , 40 ] × [ 0 , 70.4 ] [-3,1]\times[-40,40]\times[0,70.4] [3,1]×[40,40]×[0,70.4],分辨率为 ( 0.4 , 0.2 , 0.2 ) (0.4, 0.2, 0.2) (0.4,0.2,0.2)。所以, 分成 ( D , H , W ) = ( 10 , 400 , 352 ) (D, H, W) = (10,400,352) (D,H,W)=(10,400,352)个小voxel。

某种意义上,可以认为,现在体素就是一个个新的“点云”。
每一个体素中点云数目为T个,T<=35。

1. VFE层

VFE层 要做的事情就是聚集单个体素中的点云特征。

对于任一个体素中的点云 P i P_i Pi,其原始向量表示为: { x i , y i , z i , r i } \{x_i, y_i, z_i, r_i\} {xi,yi,zi,ri}。为了体现出与体素的联系,新的向量表示为 { x i , y i , z i , r i , x i − v x , y i − v x , z i − v z } \{x_i, y_i, z_i, r_i, x_i - v_x, y_i-v_x, z_i-v_z \} {xi,yi,zi,ri,xivx,yivx,zivz} 。其中 { v x , v y , v z } \{v_x, v_y, v_z\} {vx,vy,vz} 是体素的中心点坐标。

这样每一个体素可以用 ( T , 7 ) (T,7) (T,7) 表示,T是点云个数,7是单个点云的维度。

VFE层就是FCN + MaxPooling + Concat。
具体操作是:

  1. ( T , 7 ) (T,7) (T,7) ----经过 [ 7 , 16 ] [7,16] [7,16]的FCN----> ( T , 16 ) (T,16) (T,16) -----BN RELU-------> ( T , 16 ) (T,16) (T,16)

  2. ( T , 16 ) (T,16) (T,16) ----->在T这个维度上进行MaxPooling------> ( 1 , 16 ) (1,16) (1,16),得到体现该体素全局的向量

  3. ( 1 , 16 ) (1,16) (1,16) 与经过FCN的 ( T , 16 ) (T,16) (T,16) 进行拼接操作,即每一个单独点云向量都拼接该体素的全局向量,得到 ( T , 32 ) (T,32) (T,32)

VFE重复两次,第二次是

  1. ( T , 32 ) (T,32) (T,32) -----经过 [ 32 , 64 ] [32,64] [32,64]的FCN----> ( T , 64 ) (T,64) (T,64) -----BN RELU-------> ( T , 64 ) (T,64) (T,64)

  2. ( T , 64 ) (T,64) (T,64) ----->在T这个维度上进行MaxPooling------> ( 1 , 64 ) (1,64) (1,64),得到体现该体素全局的向量

  3. ( 1 , 64 ) (1,64) (1,64) 与经过FCN的 ( T , 64 ) (T,64) (T,64) 进行拼接操作,即每一个单独点云向量都拼接该体素的全局向量,得到 ( T , 128 ) (T,128) (T,128)

最后再使用一次MaxPooling,使得 ( T , 128 ) (T,128) (T,128) ----> ( 1 , 128 ) (1,128) (1,128),得到用来表示单个体素的特征向量 ( 1 , 128 ) (1,128) (1,128)
最后整张体素图的特征为 ( C , D , H , W ) = ( 128 , 10 , 400 , 352 ) (C,D,H,W) = (128, 10,400,352) (C,D,H,W)=(128,10,400,352)

2. 3D卷积与RPN

经过VFE处理,已经是规整的体素图了,就可以简单的看作2D图像的扩展,使用3D卷积提取特征,RPN 进行检测了。
( 128 , 10 , 400 , 352 ) (128, 10, 400, 352) (128,10,400,352) ----3D----> ( 64 , 2 , 400 , 352 ) (64,2,400,352) (64,2,400,352)------> ( 128 , 400 , 352 ) (128,400,352) (128,400,352) -->RPN

缺点:

  1. 显而易见,体素分割维度比较死板。

SECOND

  1. 使用稀疏卷积来计算3D convolution
  2. 好像否定了VFE,只是简单的使用了平均值,需要用代码好好看一下(11.5)
  3. 数据增强手段好像很值得关注,阅读代码看一下()
  4. 加了一个loss

Pointpillars

  1. ( D , P , N ) (D,P,N) (D,P,N) = (单个点云维度、pillars个数、pillars中点云个数)
  2. 本文设置:P = 12000, N = 100, D = 9
  3. 单个点云 P i = { x i , y i , z i } P_i = \{x_i,y_i,z_i\} Pi={xi,yi,zi},在pillars化时会将其处理为 P i ^ = { x i , y i , z i , x c , y c , z c , x i − x c , y i − y c } \hat{P_i}=\{x_i,y_i,z_i,x_c,y_c,z_c,x_i-x_c,y_i-y_c\} Pi^={xi,yi,zi,xc,yc,zc,xixc,yiyc} x c , y c , z c x_c,y_c,z_c xc,yc,zc 为pillars中心。
  4. ( D , P , N ) (D,P,N) (D,P,N) --linear layer ,BN,RELU–> ( C , P , N ) (C,P,N) (C,P,N)
  5. ( C , P , N ) (C,P,N) (C,P,N) --max pooling—> ( C , P ) (C,P) (C,P) —变形–> ( C , H , W ) (C, H, W) (C,H,W)

完成点云数据的表达之后,
conv进行特征提取。
SSD检测

loss部分使用的时SECOND的loss。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值