3D检测---VoxelNet

image

网络流程

Voxel Partition

3D点云在Z, Y, X的范围 $$(D, H, W)$$
voxel大小 $$(v_D, v_H, v_W)$$
3D voxel grid的大小(个数) $$(D'=D/v_D, H'=H/v_H, W'=W/v_W)$$

Grouping

将点云划分给它所在的voxel

Random Sampling

对于点云数量多余T的voxel,随机采样T个,作用是:

  1. 节省计算量
  2. decreases the imbalance of points between the voxelswhich reduces the sampling bias, and adds more variationto training

Stacked Voxel Encoding

类似PointNet的语义分割部分,最终得到的每个点的concate输出既包含了point-wise特征,也包含了局部聚合特征(maxpool),使得对这个voxel的编码能够学习具备描述性的形状信息。
image

Sparse Tensor Representation

通过多个VFE Layer层的处理,最终每个Voxel都被提取抽象成一个1维的特征向量,点云最终输出的是一个4D Tensor:(C, D', H', W')

即使点云团有超过 ~100k个点,但是通常90%的voxel都是空的,因此最终得到的4D Tensor是稀疏的。

Convolutional Middle Layers

2D卷积:卷积目标是图像,(H, W),每个位置有C个通道,一个卷积核大小为(h, w),每个位置也有C个通道,一个卷积核得到的结果是(H', W', 1)
3D卷积:卷积目标是体积,(D, H, W),每个位置有C个通道,一个卷积和大小为(d, h, w),每个位置也有C个通道,一个卷积核的结果是(D', H', W', 1),多一个卷积核则每个位置通道数多1
对于车辆检测,在D方向两次S=2,其他方向不变。

# input tensor:(128, 10, 400, 352)
# Conv3D(cin, cout, k, s, p)
Conv3D(128, 64, 3, (2,1,1), (1,1,1))
Conv3D(64, 64, 3, (1,1,1), (0,1,1))
Conv3D(64, 64, 3, (2,1,1), (1,1,1))
# output tensor: (64, 2, 400, 352)
reShape:(128, 400, 352)

RPN

image

训练

正负样本匹配

  1. 正样本anchor:
  • 与一个GT具有最大的IoU
  • 与GT的IoU大于0.6
  1. 负样本anchor:与GT的IoU小于0.45
  2. 忽略样本: 与GT的0.45 < IoU < 0.6
posted @ 2022-03-18 22:30  小鸟飞飞11  阅读(224)  评论(0编辑  收藏  举报