VoxelNet论文阅读

date
Dec 18, 2021
Last edited time
May 1, 2022 03:35 PM
status
Published
slug
VoxelNet论文阅读
tags
DL
CV
3D
summary
type
Post
origin
Field
Plat
VoxelNet-pytorch
skyhehe123Updated Aug 23, 2023

1 Abstruct

  • 本文直接处理点云输入,是 end-to-end 的网络;和以往的多视角投影的不同。
  • 采用 VFE(voxel feature encoding)网络对每个体素内的点进行编码再接上 3DRPN 检测。不使用手工特征处理,这好比 CNN 加入 R-CNN 一样。(感叹一下。作者写文章真的强)
  • 该方法在 KITTI car detection 取得了 sota 的效果,超过了同时使用 mino 和 lidar 数据的方法。

2 VoxelNet

2.1 architucture

notion image
  • Feature Learning Network
  • Convolutional Middle Layers
  • RPN

2.1.1 Feature Learning Network

  • 体素分区:对于输入点云所在的空间,我们采用 表示;定义每一个小的 voxel 的大小为 ,通过除法就能得到网格的 size。 因此, 体素的坐标值范围为
    • 这里作者假设了 是体素网格的整数倍。
  • 随机采样:一是为了减小计算负担,而是为了消除因为密度不一致带来的判别问题。采样方案只针对那些 voxel 数量比 个多的 voxel。 优点:
    • 节省计算资源
    • 降低 voxel 之间的不平衡性,这可以降低采样偏差,在训练时增加更多的变化性。
  • Stacked Voxel Feature Encoding
    • notion image
      流程:
      1. 假设点云一共有 个点, 则 , 其中 为体素中第 个点云的数据. 分别为点云 坐标和点云的反射率。
      1. 经过随机采样后, 每一个非空体素将有 个点, 由于此时voxel中点云数量少于 的点将会被筛除, 假设这时候有 个非空体素, 则点云的维度为
      1. 计算 中点云的中心值 , 计算体素中的每个点相对中心值的偏移量从而对 中的点云数据进行增强,增强后 . 增强后的点也称为point-wise input. 数据的维度为
      1. 增强后的 通过FCN network 得到Point-wise Feature , 维度为 .
      1. 对 Point-wise Feature 进行 Element-wise MaxPooling, 维度变为 , 然后将其堆叠到维度为
      1. 将Point-wise Feature 与进行 Maxpooling后的向量进行concat,得到一个维度为 的输出向量 。
      上述的4, 5, 6 步操作即为 VFE(Voxel feature encoding) 操作
      1. 将上述第六步得到的输出再次作为 VEF 网络的输入, 经过若干次VFE得到Point-wise Feature-n, 如代码所示, 则为
      1. 对体素中的所有点进行FCN,和Element-wise MaxPooling,得到最后的Voxel-wise Feature. 如代码所示, 则为
      第7, 8 步的代码即为 Stacked Voxel Feature Encoding 操作
      首先前面的coordinate 记录了每一个voxel的坐标值, 而 Voxel-wise Feature 表示的时每一个体素的特征. 这两个参数也正正好好的表达了每一个voxel的坐标和特征维度。这是体素的稠密表示. 最后将特征和坐标表达为稀疏表示。
      以下将得到的 output 的shape 为 大小也就是对应的体素总个数的shape为:,其中最后一维的含义为特征维度。上一句代码的含义就是说:每一个voxel的坐标的地方都有一个128维度的特征向量。需要指出的是原文说了会把剩下的空voxel的特征补上0. 得到了Voxel的稀疏表示之后, 则可以使用3D卷积来提取特征.

2.1.2 Convolutional Middle Layers

这一层使用3个3D卷积来提取特征. 首先将 Feature Learning Network 得到的输出向量 交换一下顺序得到 , 之后使用3D卷积维度的变换过程已经写在注释上了.

2.1.3 RPN

网路的输入是通过 Convolutional Middle Layers出来的特征图。
notion image
为了使用二维卷积, 这里将 的第二维和第三维合并, 得到 .
然后通过如图所示不断卷积和反卷积, 最后得到两个输出, 分别为 大小的 Probability score map 和 大小的 Regression map.
  • Probability score map: 输出总共 2*200*176 = 70400 个预测框的probability
  • Regression map 维度为 14 的原因: 每一个 anchor 上有7个需要回归的属性 . 每一个维度的含义分别是:坐标位置;文章设置的anchor_size;可动角度 yaw

2.2 Loss

假设预测的 anchor 位置为 , 每一个回归的Bbox表示为 . 我们定义一下残差
其中 是anchor框底部的对角线长度,表示为:
定义损失函数为
损失函数中的前面两项是归一化判别损失,其中的 分别表示 层对 的分数。采用的是交叉熵表示,α 和 β 正定平衡系数。最后一项是回归损失,采用的是SmoothL1损失。
 

3 Reference

 

© Lazurite 2021 - 2024