【点云处理之论文狂读经典版3】——VoxNet: A 3D Convolutional Neural Network for Real-Time Object Recognition

摘要

  1. 存在的问题:现有的方法无法完全利用从真实世界中采集到的3D信息,并且无法处理大规模的点云数据。
  2. 本文提出的VoxNet方法是Volumetric Occupancy Grid representationSupervised 3D Convolutional Neural Network (3D CNN) 相结合的方法。
  3. 本文提出的方法在LiDAR, RGBD 和 CAD都适用。

1. 引言

  1. 网络结构和数据表示形式很重要
  2. 本文提出了一种用于快速且精确的3D点云数据目标检测框架VoxNet

2. 相关工作

  1. Volumetric representation要比点云的信息更丰富,因为它能把free space从unknown space分离出来。
  2. 基于点云特征的查找邻域工作对于大规模点云而言很难完成。
  3. 对于2.5D的深度图和RGB图而言,直接对它们进行处理无法完全利用数据中的几何信息,并且很难整合多个视点的信息。

3. 方法

输入为点云段,可能是直接从分割方法中拿过来的,也可能是检测过程中框中的点云。

3.1 Volumetric Occupancy Grid

Occupancy grids将当前的环境表示为随机变量的3D网格(voxel),并且将它们占据的空间概率估计视为数据输入的函数和先验知识。

  1. Volumetric表示要比点云更丰富,它能把目标分为free, occupied 和unknown space
  2. 更容易存储和计算

3.2 Reference frame and resolution

在volumetric representation表示中,每个点 ( x , y , z ) (x, y, z) (x,y,z)都要被映射到离散的voxel坐标 ( i , j , k ) (i, j, k) (i,j,k)中,该映射过程会考虑voxel网格的origin, orientation和 resolution:

origin

origin就是通过分割算法或是检测框得到的点云输入。

orientation
网格方向的 z z z轴就是重力的方向,可以使用IUM或是使传感器垂直实现。尽管还有一个自由度没有确定,但是可以通过数据增强的方法解决。

resolution

  1. 对于LiDAR dataset,采用0.1×0.1×0.1m 3 ^3 3的分辨率,保证了各个目标间尺度信息的一致性。
  2. 其他dataset,采用32×32×32 voxel 3 ^3 3的分辨率,但是目标所占用的空间应该在24×24×24voxel 3 ^3 3内,这个可以不固定,下文中还提到了多尺度的分辨率方法。

3.3 Occupancy models

{ z t } t = 1 T \left\{z^{t}\right\}_{t=1}^{T} {zt}t=1T表示所有体素的状态,对于一个体素 ( i , j , k ) (i, j, k) (i,j,k),hit了就是 ( z t = 1 ) \left(z^{t}=1\right) (zt=1),pass through了就是 ( z t = 0 ) \left(z^{t}=0\right) (zt=0)

Binary occupancy grid

在该模型中,每个体素假设有两个状态,分别为occupied 或是 unoccupied。对于每一个体素,occupancy的概率估计是通过log odds来更新的:

l i j k t = l i j k t − 1 + z t l o c c + ( 1 − z t ) l free  l_{i j k}^{t}=l_{i j k}^{t-1}+z^{t} l_{\mathrm{occ}}+\left(1-z^{t}\right) l_{\text {free }} lijkt=lijkt1+ztlocc+(1zt)lfree 
在给定这个体素被hit或是被miss后, l o c c l_{\mathrm{occ}} locc l free  l_{\text {free }} lfree 就是这个单元的log odds,本文设置这些参数为 l o c c = 1.38 l_{\mathrm{occ}}=1.38 locc=1.38 l free  = − 1.38 l_{\text {free }}=−1.38 lfree =1.38,并且将log odds截断为 ( − 4 , 4 ) (-4,4) (4,4)以避免数值不稳定问题。occupancy最初被设置为0.5, l i j k 0 = 0 l_{i j k}^{0}=0 lijk0=0

Density grid

在该模型中,每个体素都被假设有一个连续的强度,对应着传感器采集而来的概率。对于所有的体素 ( i , j , k ) (i, j, k) (i,j,k),设置参数 α i j k t \alpha_{i j k}^{t} αijkt and β i j k t \beta_{i j k}^{t} βijkt,初始时 α i j k 0 = β i j k 0 = 1 \alpha_{i j k}^{0}=\beta_{i j k}^{0}=1 αijk0=βijk0=1。每个体素更新时都会受到 z t z_{t} zt的影响:
α i j k t = α i j k t − 1 + z t β i j k t = β i j k t − 1 + ( 1 − z t ) \begin{aligned} \alpha_{i j k}^{t} &=\alpha_{i j k}^{t-1}+z^{t} \\ \beta_{i j k}^{t} &=\beta_{i j k}^{t-1}+\left(1-z^{t}\right) \end{aligned} αijktβijkt=αijkt1+zt=βijkt1+(1zt)

最后平均值表示为:
μ i j k t = α i j k t α i j k t + β i j k t \mu_{i j k}^{t}=\frac{\alpha_{i j k}^{t}}{\alpha_{i j k}^{t}+\beta_{i j k}^{t}} μijkt=αijkt+βijktαijkt
μ i j k \mu_{i j k} μijk被作为输入。

Hit grid

在此模型中仅考虑hit,初始状态下 l i j k 0 = 0 l_{i j k}^{0}=0 lijk0=0,更新过程如下:

h i j k t = min ⁡ ( h i j k t − 1 + z t , 1 ) h_{i j k}^{t}=\min \left(h_{i j k}^{t-1}+z^{t}, 1\right) hijkt=min(hijkt1+zt,1)
尽管该模型丢掉了一些潜在的变量信息,不需要raycasting,但是实验证明其性能很好。

3.4 3D Convolutional Network Layers

  1. 卷积网络可以提取目标的空间特征
  2. 多层的结构使得网络可以构造更大区域空间的特征,最后生成输入occupancy的全局特征。
  3. 推理可以使用前馈神经网络实现,很快很简单

首先对上一节更新到的数据进行归一化(减0.5,乘以2),范围为(-1, 1)。

卷积层 C ( f , d , s ) C(f,d,s) C(f,d,s)

f f f表示特征维度, d d d表示核的大小, s s sb表示stride

Pooling Layers P ( m ) P(m) P(m)

起到下采样的作用,对m×m×m不重叠范围内的voxel取最大值

Fully Connected Layer F C ( n ) FC(n) FC(n)

全连接层有n个输出

3.5 Proposed architecture

VoxelNet的结构很简单, C ( 32 , 5 , 2 ) − C ( 32 , 3 , 1 ) − P ( 2 ) − F C ( 128 ) − F C ( K ) C(32, 5, 2)−C(32, 3, 1)−P(2)−FC(128)−FC(K) C(32,5,2)C(32,3,1)P(2)FC(128)FC(K),其中 K K K 表示类别的数量。该模型有921736个参数,其中大多数都集中在第一层。

3.6 Rotation Augmentation and Voting

为了解决旋转不变性问题,在训练时使用数据增强的方法解决。在这里,旋转的角度是全面取得的,并不是随机得到的。把每个模型旋转360°/n度,多增加了n倍的数据。在测试的时候,每个目标的输入的角度也不同,输出层的维度也要增加n倍,最后采取投票的方式确定到底属于哪一类。可以避免过拟合现象。

3.7 Multiresolution Input

分辨率较高的Volumetric Occupancy Grid会得到更精细的特征,分辨率较低的Volumetric Occupancy Grid能够获得全局特征。本文中使用两个相同的框架处理两个分辨率不一样的Volumetric Occupancy Grid,为了让这两个模型进行融合,直接将两个 F C ( 128 ) FC(128) FC(128)拼接,连接到softmax输出层。

3.8 Network training details

Optimizer:SGD

Momentum:0.9

Objective function:多项式负对数似然加上0.001倍的 L 2 L_2 L2范数,用于正则化。

lr :0.01 for LiDAR dataset, 0.001 for the other datasets

Batch_size:32

Dropout:fc

Initial para:zero-mean Gaussian with σ = 0.01

Data augment: rotation,shift,mirror

4. 实验

4.1 数据集

  1. LiDAR data - Sydney Urban Objects
  2. CAD data - ModelNet
  3. RGBD data - NYUv2

4.2 可视化结果

Learned filters

Rotational invariance

4.2 VoxNet variations

Rotation Augmentation

  1. no training time augmentation is performed——ModelNet40 in a canonical pose
  2. no training time augmentation is performed——Sydney Objects unmodified orientation

训练时进行data augment很重要。

Occupancy grid

Comparison to other approaches

ShapeNet的结构相对而言很大,有一千二百四十多万个参数,而本文只是用了一百万个参数。

Timing

我们提出的最复杂的模型分类仅需6ms,当batch size为32时,平均时长为1ms。2ms可以处理2k个点,处理200k个点用0.5s。使用Hit Grids,或是raytracing优化策略会更快。

5. 结论

生词

  1. clutter adj. 嘈杂的
  2. supersede v. 取代,替换
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值