【论文详解】F-ConvNet (2019)
文章目录
前言
关于本论文的问题导入,总体思路以及实验效果请见本人另一篇博客【论文概述】F-ConvNet (2019),本文将深究这项工作的理论依据以及实验细节,最后提出几点自己的思考,有待实验研究。
论文信息
题目:Frustum ConvNet: Sliding Frustums to Aggregate Local Point-Wise Features for Amodal 3D Object Detection
方法论
1 视锥体级特征提取
如何利用 2D 检测器信息以及点云信息是本文 3D 检测的关键,本文采用级联方式,利用 2D 的区域建议沿着相机光轴在近平面与远平面之间生成视锥体序列,如下图所示。
怎么生成视锥体序列呢?本文设定了 T 个视锥体,每个高度为 u,都通过沿相机光轴滑动固定步长 s 生成,每个视锥体包含 M 个点,如下图所示。
生成这些视锥体目的何在? 将点云的逐点特征转为视锥体级特征向量以供后期网络提取特征,进而回归 3D 框,这样避免大范围遍历点云,提升了效率。
如何从这些视锥体提取特征呢? 本文采用了 PointNet 的三个 FC 层以及 Max Pooling 层,对所有视锥体并行处理,权值共享;其中,对视锥体内的每个点坐标进行了正则化, ,如下图所示。
2 FCN
上一步得到 LxdxT 特征图,如何生成 3D 框呢 这类似于 2D 检测器,本文采用 FCN,先采用步长为 2 的卷积下采样,再采用反卷积层上采样,恢复到高分辨率特征图,然后把这些特征向量级联在一起,如下图所示。
用于 KITTI benchmark 的 FCN 具体结构如下表所示。
3 多分辨率视锥体特征融合
这是对视锥体生成过程的改进,类似于 2D 检测器常用的多尺度策略,提升小目标的检测效果。本文在视锥体生成时采用两倍步长和两倍高度生成 T/2 个视锥体,另一半仍以原方式产生,在 FCN 中,将两个特征向量级联在一起,再用卷积操作转变为 L/2xd 大小的特征图,如下图所示。
4 检测器的训练
分类任务:输出 Lx(K+1) 向量,K 是类别数,加一是背景;采用 RetinaNet 的 focal loss 解决类别不平衡问题。
3D 框回归任务:3D GT 框参数为 ,依次是中心点坐标,框的长宽高以及偏航角;本文在 范围内为每个视锥体设置了 KN 个锚框,这些锚框的参数为 ,且进行了正则化,公式如下。(原文中的第二行公式下标应该为上标)
这里采用 Smooth L1 正则化和 F-PointNet 的 corner loss。
5 重识别
本文级联方式融合 RGB 与点云,最大的弊病就是 2D 检测器失效时,该方案将宣告破产。所以如何尽可能地避免 2D 检测器失效的前提下,此方案仍能有一定的工作能力是本节研究目的。
本文把预测框都扩大了 1.2 倍,将放大框内的点进行正则化用作第二次 F-ConvNet 的输入,如下图所示。
实验
1 KITTI benchmark
将原有训练集分为 3712 训练和 3769 验证;汽车,行人,骑行者的 3D IOU 分别取 0.7,0.5和0.5。
2 训练细节
2D 区域建议验证集采用 F-PoinntNet 提供的,测试集采用 RRC 和 MSCNN 提供的;
每个区域建议的点云随机采样,第一次和第二次分别是 1024 和 512 个,且对这些点进行数据增强操作;
正负样本设置时,缩小 GT 框到一半,锚框中心落在缩小框内的是正样本,其余为负样本;
超参数设置中,mini-batch 大小为 32,采用 ADAM 优化器,权重衰减系数为 0.0001,学习率从 0.001 开始,每 20 个周期减少 10 倍,共 50 个周期,检测范围是 0-70 米;
视锥体参数设置中,如下表
参数 | car | pedestrain & cyclist |
---|---|---|
u | [0.5,1.0,2.0,4.0] | [0.2,0.4,0.8,1.6] |
s | [0.25,0.5,1.0,2.0] | [0.1,0.2,0.4,0.8] |
d | [128,128,256,512] | [128,128,256,512] |
L | 280,140 | 700,350 |
非极大值抑制时,3D IOU 阈值设置为 0.1
3 消融研究
2D 区域建议是前提,论证不同 2D 检测精度对 3D 检测精度的影响,如下表。
对视锥体级特征的提取也很关键,本文采用 PointNet 提取特征,如果采用其他网络呢,如下表对比了 PointNet 与 PointCNN
下表论证了多尺度视锥体特征融合的影响,分别是步长与高度。
下表论证了角点损失与重识别的影响
4 与 SOTA 对比
几点思考
- RGB 与点云的融合方式方面,只借助了 2D 检测器的区域建议,进而大大提高了点云处理效率,是否能对 2D 检测器的其他方面加以利用呢,比如 2D 框及类别信息,是否可以对稀疏点云进行深度补全;
- 点云由近及远时会越来越稀疏,生成视锥体序列步长和高度是否可以是线性变化的,而非固定的;进而可以改变采用多个 PointNet 并行处理视锥体,远一点的视锥体提取特征时网络设计是否可以有所变化,形成多尺度信息;
- 点云转为视锥体级特征时,本文对点云随机采样,第一次 1024,第二次 512,是否可以改进一下采样策略,比如均匀采样,几何采样,格点采样等;
- PointNet 这个 backbone 可以尝试一些其他的,比如 PointNet++, VoteNet等;
- FCN 网络设计中,反卷积需要在卷积前对输入添加 0 再上采样,效率较低,是否可以采用膨胀卷积;
- 网络训练过程中,损失函数可以试试其他的;
- 关于重识别策略,这是事后补救,是否可以在事前预防,比如对 2D 的区域建议进行增强操作;