一 核心思想
本文的核心思想是使用一个辅助的分支帮助主干网络进行训练;除此之外,本文还提出PSWarp的架构,将预测的BBox和Cls进行联立,具体的Motivation见下述。
不过本人认为该辅助分支与PVRCNN网络架构中的Voxel Set Abstraction Module非常相似,都是将Voxel的features映射到sample point中,然后concatenate一下得出sample point的特征。
将sample point的特征输入到另一个detector中,得到foreground segmentation和center estimation两个分支,foreground segmentation预测该点是否为前景点;center estimation预测这个点与真实的距离最近的ground truth的中心点的offset。
通过对辅助网络进行损失回归操作,就能够优化主干网络,并且在测试阶段不需要这个辅助分支,也就是不会在测试阶段增加额外的计算量。
具体框架如下图所示(红色部分就是本文最重要的步骤):
二 核心步骤
如核心思想所述一致,本文的框架主要为三大部分: Backbone Network、Auxiliary Network、Detection Network。
Backbone Network是借鉴于SECOND。
Auxiliary Network帮助主干分支,通过loss function迭代主干分支中的参数,优化主干分支(也就是Backbone Network)。
Detection Network也就是预测BBox和Cls的网络,并且该网络中使用到了PSWarp,让BBox与Cls的预测结果联系更加紧密,进而使预测结果更加精确。
2.1 Backbone and detection networks
Backbone Network参考SECOND,将原始点云映射到voxel中,然后通过稀疏卷积得出3D features(注意一下,原始点云中的点云个数为N。)。
2.2 Detachable auxiliary network
这一步的motivation是为了让Backbone network中学习到的特征更加精准,具体做法为以下几步:
1、红色框中的黑色点表示原始点云坐标,黄色点表示上面的每一层3Dfeatures上的不为空的voxel,根据索引和与点云坐标的量化关系得到的坐标点以及特征。(也就是由voxel索引到点云坐标的映射,然后对应的点云坐标上的点的特征就是该voxel的特征。)
2、步骤一中的黄色的点,我们使用公式表示为:,其中表示features,表示非零voxel映射出的point coordinates,这里要注意到j最大值为M,也就是说这一层的非零voxel的个数为M。
3、对于点云集(也就是说点云的个数为N),我们使用下列函数得到其特征:
其中表示ball region,在四个特征图上的半径分别为:0.05m、0.1m、0.2m和0.4m。
4、之后将得到的每一层的点云特征进行catenate操作,得到该点云的最终特征。
以上四个步骤,可以说与PVRCNN中非常相似,个人认为只是换了一个名字。
之后将得到的原始点云坐标和特征输入到Predictor中,通过两个分支,分别预测点云的seg和center offset信息。
Seg表示预测point的前景点与背景点的可能性,表示这个point的真实label:
再次铭记,这个Auxiliary Network仅仅在train阶段,使用损失函数的方式,让Backbone Network中得到的特征更加好。
2.3 Detection Network
为了更好的联立classification branch与BBox branch,作者借鉴了PSRoIAlign的方法,提出PS Warp的联立方法。PS Warp是为了联立BBox的同时,使Cls得到的预测分数更加精确。
2.3.1 R-FCN
为了弄明白PS Warp的实现原理,首先需要明白R-FCN中提出的PSRoIAlign。
这一部分建议先去参考其他博客阅读。
2.3.2 PS Warp
PS Warp的联立方法借鉴了上述的方法,首先修改最后的classification layers,生成K个部分敏感分类图(也就是将之前生成的Cls map的维度由1变成了K,因为作者主要是预测car这个类别,所以也就没有像上面一样乘上C+1的类别数。),表示为 ,例如,在K = 4的情况下,{upper-left, upper-right, bottom-left, bottom-right}。
同时,我们将每个feature-map位置的预测边界框划分为K个子窗口,并选择每个子窗口的中心位置作为sample point。这样,我们可以生成K个采样网格
如上图所示,为了得到这个Bbox最终预测出的类别得分,使用双线性插值的方法,在每一个sample point上面得到每一个部分敏感分类图(channel维度是K。)的聚合值,得到最终的label得分。
2.4 Loss Function
Loss Function使用传统的Smooth-L1和focal loss。
三 总结
本文将PVRCNN中采样点特征的方法和R-FCN中联立Cls branch和BBox branch的方法融合到自己的方法中,大的创新点并没有,但是思路还是比较新颖,之后可以借鉴辅助模型和联立两大分支的思路。