仅提供创新说明,不提供细节
文章目录
PointNet++
VoxelNet
VoxelNet 由三个模块组成:
- Feature Learning Network:将点云划分为 voxel(体素),再提取特征;
- Convolution Middle Layers:进行 3D 卷积,提取三维特征;
- Region Proposal Network:分类并预测边界框。

Feature Learning Network
- Voxel Partition:
根据点云划分 Voxel(空间网格状)。 - Grouping:
将点云空间中的点划分到其位置对应的 Voxel 中,进行分组。(voxel 中没有点即为空) - Random Samplling:
对于每个 Voxel,若所含点数大于 T,则随机采样 T 个。- 节约开销。
- 降低各voxel之间点个数的不平衡。(点过于密集易导致网络计算结果有偏差)
- Stacked Voxel Feature Encoding:
对体素特征编码,先逐点计算,再逐元素计算,最后跳跃连接 c o n c a t ( ⋅ ) concat(·) concat(⋅)。

Convolution Middle Layers
卷积中间层,标准的 3D 卷积操作:
Conv3D() -> BN() -> ReLU()
Region Proposal Network

预测目标:
- 概率评分图(Probability Score Map )
- 回归图(Regression Map)
Loss
L = α 1 N p o s ∑ i L c l s ( p i p o s , 1 ) + β 1 N n e g ∑ j L c l s ( p j n e g , 0 ) + 1 N p o s ∑ i L r e g ( u i , u i ∗ ) L = \alpha \frac{1}{N_{pos}} \sum_i L_{cls}(p_i^{pos}, 1) + \beta \frac{1}{N_{neg}} \sum_j L_{cls}(p_j^{neg}, 0) + \frac{1}{N_{pos}} \sum_i L_{reg}(\mathbf{u}_i, \mathbf{u}_i^{*}) L=αNpos1i∑Lcls(pipos,1)+βNneg1j∑Lcls(pjneg,0)+Npos1i∑Lreg(ui,ui∗)
其中回归损失 如下:
每个预测结果对应一个 3D 框,其格式为: ( x c a , y c a , z c a , l a , w a , h a , θ a ) (x_c^a, y_c^a, z_c^a, l^a, w^a, h^a, \theta^a) (xca,yca,zca,la,wa,ha,θa)
真值为: ( x c g , y c g , z c g , l g , w g , h g , θ g ) (x_c^g, y_c^g, z_c^g, l^g, w^g, h^g, \theta^g) (xcg,ycg,zcg,lg,wg,hg,θg) ,其中
- ( x c g , y c g , z c g ) (x_c^g, y_c^g, z_c^g) (xcg,ycg,zcg) 表示标注框中心的坐标,
- ( l g , w g , h g ) (l^g, w^g, h^g) (lg,wg,hg) 表示标注框的长、宽、高,
- θ g \theta^g θg 表示偏航角(Yaw)。
则回归的目标为以下七个量:
Δ x = x c g − x c a d a , Δ y = y c g − y c a d a , Δ z = z c g − z c a h a \Delta x = \frac{x_c^g - x_c^a}{d^a}, \quad \Delta y = \frac{y_c^g - y_c^a}{d^a}, \quad \Delta z = \frac{z_c^g - z_c^a}{h^a} Δx=daxcg−xca,Δy=daycg−yca,Δz=hazcg−zca
Δ l = log l g l a , Δ w = log w g w a , Δ h = log h g h a , Δ θ = θ g − θ a \Delta l = \log \frac{l^g}{l^a}, \quad \Delta w = \log \frac{w^g}{w^a}, \quad \Delta h = \log \frac{h^g}{h^a}, \quad \Delta \theta = \theta^g - \theta^a Δl=loglalg,Δw=logwawg,Δh=loghahg,Δθ=θg−θa
其中:
d a = ( l a ) 2 + ( w a ) 2 d^a = \sqrt{(l^a)^2 + (w^a)^2} da=(la)2+(wa)2
参考链接(详解)
无人驾驶汽车系统入门(二十八)------基于VoxelNet的激光雷达点云车辆检测及ROS实现
SECOND
SECOND 主要是针对 VoxelNet 的改进:
- 引入稀疏 3D 卷积,替换 普通 3D 卷积;
- 针对 VoxelNet 中3D检测框:相反方向的预测会导致 角度损失 过大。
额外改进:
- 数据增强:采用数据库采样的操作;
- 针对正负样本不均衡,采用 Focal Loss。
架构图

对比 VoxelNet 架构图 :

-
引入稀疏卷积
稀疏卷积:
- 先在输入数据中找到 有效数据,并记录其位置索引;
- 再记录:与有效数据在 卷积核中的对应索引;
- 同时记录对应的 输出位置索引,形成输入--输出映射表(rulebook);
- 卷积计算时,根据索引直接取出有效数据进行卷积,并按 rulebook 将结果写入输出矩阵。
稀疏卷积内容可参考:
-
方向回归

如图,作者在 Head 部分引入 direction map head,用于对物体方向 进行分类。
- why 引入 direction map 分支 ?
当一个 3D 检测框的预测方向恰好与真实方向相反的时候,此时 偏航角(Yaw)损失会很大,非常不利于模型收敛。 - 改进:
对于角度损失: L θ = SmoothL1 ( sin ( θ p − θ t ) ) L_{\theta} = \text{SmoothL1}(\sin(\theta_p - \theta_t)) Lθ=SmoothL1(sin(θp−θt))
当角度正好相反时( ± π \pm π ±π), sin ( ⋅ ) \sin(·) sin(⋅) 函数会将其抵消掉。 - 此时模型预测到导致目标方向不确定,可能正好相反。(虽然 Loss 问题解决了)
所以作者引入了 direction map 分支,用于对目标方向进行二分类(softmax loss)。