论文小结:STD

image-20200506232432879

论文小结:STD

W.P. Xiao, Vision group,SHUSV
版本更新时间更新内容作者
1V 1.0完成的小结的主体内容W.P. Xiao
2

目录

STD

这里是Paper,这里是Code(代码还未放出)

1 简介

  这文章标题为《STD: Sparse-to-Dense 3D Object Detector for Point Cloud》,收录于ICCV 2019。这是一篇来自港中文教授贾佳亚组的工作(和腾讯优图的联合工作)。该组相关的工作还有IPODFast Point R-CNN等。这篇文章的创新点比较多,刚出来的时候在KITTI benchmark上也是state-of-the-arts水平,而且兼具不错的实时性。

2 文章的贡献

  • 提出了一中point-based的基于球形anchor的proposal生成方法,带来更高的recall。
  • 提出的PointsPool层集成了point-based和voxel-based的方法的优点,从而实现了高效和有效的预测。
  • 新设计的3D IoU预测分支有助于classification score和localization之间的对齐,从而带来了显著的精度提升。

3 整体框架

  两阶段网络

image-20200506232432879

图3.1 STD整体框架

4 框架细节

4.1 Proposal Generation Module

image-20200507113141898
图4.1 (a) 3D segmentation network (PointNet++) (b)Proposal generation Network (PointNet)
  • Spherical Anchor

      作者对每一个点云每一个点云每一个点云放置一个球形的anchor,这样的作法会带来巨大的计算量,而且每个Anchor包含了大量的重复点。但是相对于传统的长方体anchor,球形anchor在数量上还是有优势(一个场景16k),因为没有方向,使得anchor减少一半左右。为了进一步减少anchor,作者使用PointNet++对点云进行语义分割(图4.1 a),这样一来就得到每个点云的作为前景点和背景点的confidence。使用这个conference作为引导,作者使用NMS将anchor数量进一步减少到500个。

  • Proposal Generation Network

      用于生成Proposal的特征来自对球形Anchor中特征的聚合(PointNet),这些特征将用来regression和classification(图4.1 b)。classification和box center、size的预测不用讲和常规一样。角度预测需要提下,因为是球形anchor,角度是通过直接预测得来的,这里与PointRCNN中的角度预测类似,作者先将角度划分为N个Bin,通过classification获得点落在那个Bin内,然后在对应的Bin内回归Residual。

  • Assignment Strategy

      根据传统的IoU计算在球形接受域和ground-truth boxes之间分配正负标签是不合适的。为此作者提出了PointsIoU,它定义为两个区域的交集区域内点的数量与两个区域的并集区域内点的数量的商。PointIOU超过0.55为正样本、反之为负样本。

4.2 Proposal Feature Generation

  作者分析认为在refine阶段如果还是使用Pointnet++来精修Proposal的话,虽然精度不错,但是计算复杂度翻倍。为此作者尝试使用传统的卷积或者全连接层来进行高效的predict。实验结果表明使用传统CNN和FC替代PointNet++实现了相当的精度,并且推理时间快了2.5倍。为此作者设计了一个新的PointsPool Layer,结合了Voxel-based和Point-Besed方法,兼具速度和精度。

  • PointsPool Layer
    • 作者先从Proposal中随机选择N个点,并将这N个点的坐标减去proposal中心点坐标,再旋转至与预测的Proposal的方向一致。这里为什么减去中心点坐标以及旋转到与proposal一致的角度呢?作者这样做其实想将proposal内的点转化为以proposal中心点为圆点,以proposal方向为x轴垂直方向为y轴的proposal局部坐标系中。这样能充分利用proposal局部的几何特征,了解内部点与中心点的相对位置,为proposal的refinement做好准备。 这样的做法与PointRCNN中refinement前的步骤相似,不过这选的只是其中的部分点进行坐标转换。
    • 将proposal内的点体素化,每个voxel内随机选择35个点,通过Voxel Feature Encoding (VFE) 层(由VoxelNet提出来的)学习voxel feature用于proposal refinement。
    • 最后通过全连接层FC,接上prediction head。

4.3 Box Prediction Network

  • Box Estimation Branch

    和常规的一样,有两个分支,分别是classification预测和Box预测。

  • IoU Estimation Branch

    作者还设计了一个新的并行分支,它用来预测Boxs与对应ground-truth之间的3D IoU。

  • Post-Process

    作者将classification confidence与predicate 3D IoU的乘积作为NMS时新的sorting标准。该设计消除了定位精度与分类分数之间的差异,有效地提高了最终性能。

4.4 Loss Function

  • Loss function两部分构成,分别是proposal generation loss和box prediction loss。
    L total = L prop + L box L_{\text {total}}=L_{\text {prop}}+L_{\text {box}} Ltotal=Lprop+Lbox

    • Proposal generation loss
      L p r o p = L s e g + 1 N c l s ∑ i L c l s ( s i , u i ) + λ 1 N p o s ∑ i [ u i ≥ 1 ] ( L l o c + L a n g ) L_{prop}=L_{seg}+\frac{1}{N_{c l s}} \sum_{i} L_{cls}\left(s_{i}, u_{i}\right)+\lambda \frac{1}{N_{p o s}} \sum_{i}\left[u_{i} \geq 1\right]\left(L_{loc}+L_{a n g}\right) Lprop=Lseg+Ncls1iLcls(si,ui)+λNpos1i[ui1](Lloc+Lang)

      L l o c = L d i s ( A c t r , G c t r ) + L d i s ( A s i z e , G s i z e ) L_{l o c}=L_{d i s}\left(A_{c t r}, G_{c t r}\right)+L_{d i s}\left(A_{s i z e}, G_{s i z e}\right) Lloc=Ldis(Actr,Gctr)+Ldis(Asize,Gsize)

      L angle = L cls ( t a − cls , v a − cls ) + L dis ( t a − res , v a − res ) L_{\text {angle}}=L_{\text {cls}}\left(t_{a-\text {cls}}, v_{a-\text {cls}}\right)+L_{\text {dis}}\left(t_{a-\text {res}}, v_{a-\text {res}}\right) Langle=Lcls(tacls,vacls)+Ldis(tares,vares)

      • L s e g L_{seg} Lseg,每个点的分割loss,使用Focal loss
      • L c l s L_{cls} Lcls,proposal classification loss,使用softmax cross-entropy loss
      • L l o c L_{loc} Lloc,Location regression loss(center residual prediction loss + size residual prediction loss),使用smooth- l 1 l_1 l1 loss
      • L a n g l e L_{angle} Langle,Angle loss(orientation classification loss + residual prediction loss),具体什么loss函数没有将,估计分类是softmax cross-entropy loss,回归是smooth- l 1 l_1 l1 loss
    • Box prediction loss

      除了两个额外的loss,Box prediction loss和Proposal generation loss一样。两个额外loss分别是3D IoU loss和corner loss。

      • 3D IoU loss,使用预测的proposals和对应ground-truth boxes之间的IoU作为ground-truth,loss函数为smooth- l 1 l_1 l1 loss

      • Corner loss,是预测的proposal的8个弯角点与指定的ground-truth的8个弯角点之间的距离,loss函数为smooth- l 1 l_1 l1 loss
        L corner = ∑ k = 1 8 ∥ P k − G k ∥ L_{\text {corner}}=\sum_{k=1}^{8}\left\|P_{k}-G_{k}\right\| Lcorner=k=18PkGk

5 讨论

5.1 PointsPool Layer为什么在第一步时要随机挑选N个proposal内的点来构成初始feature,它们怎么用?

  这个地方其实比较迷,作者从proposal中选了N个points,然后进行了坐标转换,将其转换换后的坐标和对应semantic feature作为initial feature。作者只讲了步骤,但是没有讲这部分initial feature怎么用、怎么和第二步voxelization之后的特征相结合。为什么只选N个point目前也不得而知,作者可能想突出包含坐标转换后的特征的必要性,否则感觉有些多余。至于怎么用,这里猜测,既然说是initial feature,后面应该会concatenate在一起。

5.2 为什么要设计一个IoU预测分支?

  最开始提出IoU预测的是这篇文章IoU-Net(Acquisition of Localization Confidence for Accurate Object Detection,ECCV 2018)。作者详细讨论了目前目标检测网络存在一个问题,即Misaligned classification and localization accuracy。这样会带来两个问题:

  • 在抑制重复检测时(NMS),classification score通常会用作proposal排名的标准,可能导致更准确的边界框反而被不准确的抑制的情况。
  • 缺乏localization confidence使得被广泛使用的边界框回归方法缺少可解释性或可预测性。

  由于IoU 是定位准确度的一个天然标准,因此IoU-Net作者用预测到的IoU代替分类置信度,作为非极大值抑制的排序依据,这样可消除由于分类置信度误导引起的抑制错误。

作者这里也是基于类似的动机,不过不同的是,作者不是直接将IoU用来引导NMS,而是将预测的IoU与classification confidence的乘积作为guide。

5.3 PointsPool相比于VoxelNet的voxelization layer有什么区别,为什么说是具有gradient representation?

  后面再补充

5.4 增加Corner loss的原因?

  (由 Frustum PointNets CVPR 2018 提出来的)


---- end ----
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值