【文章阅读】Object as Hotspots

Brief

  目前二维上的anchorfree的方法已经发展了有几年了,但是在三维检测中目前还没有关注到一个比较好实验效果的anchor-free方法(我目前还没看到吧),这一篇是我在arxiv上2020年元旦左右考试后看到的一篇,提目就很有意思,Object as Hotspots: An Anchor-Free 3D Object Detection Approach via Firing of Hotspots,看了一下实验效果,在KITTI上12名很好的效果了。而且方法听上去就很有二维上anchor free的方法的感觉,因此是有必要读一下的。
在这里插入图片描述
这里是 paper

这篇文章的核心创新点在对基于voxel的方法的anchor的改进,采用object级别的hotspots取代了anchor,而具体如何取代可以这样理解:

(1)以前的方法都是需要在预先对全部场景给出很多object级别的anchor,没有考虑效率,以及很对的Neg导致了背景和前景的不平衡。
(2)作者前面采用一样的方法,首先是对点云通过voxel提取特征,随后根据原始点到fea map的映射关系和标注框来决定哪些是Hotspot,再然后,根据作者自己设计的reg -loss回归的是当前所在物体的中心坐标的偏移,(这里可以根据每一个voxel划分时得到的坐标值作为回归的量)。
(3)也就是采用了上面这种策略,使得不用在全场景中划分label,只需要在fea map中选择hotspots进行回归就行.

Abstruct

  • 由于点云的稀疏性和不规则性,目前的方法都是先把其规整化,比如说voxelize的方法需要先把点云划分成很多规则的anchor。
  • 基于作者的观察:那些不被孤立的点也是具有物体识别的方向或者类别信息的。因此作者本文讨论不采用anchor的方法,也就是作者所说的anchor-free的方法。作者在文章称这些可能的点为 hostpots,可以直接从这些 hotspots预测结果,大大的减小了anchor数量。
  • 我们的anchor free 的方法比其他的one stage的方法在KITTI上至少都多了2个点。

Introduction

  1. 3D检测在自动驾驶中感知的地位很高
  2. Lidar 由于天气、遮挡等会造成获得数据的稀疏性和不规则性,同时价格不菲,促使在稀疏和低质量的点云数据中运行出好结果的算法的研究。
  3. 目前的解决办法

(1)给出object级别的anchor大小,然后再根据提取到的特征回归和判别。
(2)基于Voxel的方法比较依赖参数的设置,比如点云range的设置,anchor的大小等等,这些预先设置的大小要建立在对数据的分析认知上,同时anchor的数量随着类别的增加也会线性增加。此外,通过IOU的方式确定pos和neg的方法可能会导致采样数据的进一步不平衡。

  1. Do we need pre-defined anchor?

作者 认为 激光雷达从未捕捉都稠密3D点云的形状,极端情况下,一个物体仅仅只能获得十个点左右
因此作者提出一种anchor free的认知,将目标当做一种hotspots的团来处理。

  1. 作者的方法

作者首先也是将点云场景体素化,然后再把每一个voxel中每一个点的特征集合起来形成hotspot表示,这些hotspot再直接被训练用于预测物体的定位和方向。最后再通过NMS得到结果。
我的疑惑:读到这里,不免会这样想,前面的voxel-based的方法都是先体素化,其中体素化的过程会划分成比较小的格子,而这里也同样体素化,那么作者是如何将体素特征转化为hotspots的特征呢,并认定哪些是hotspots。

  1. 本文的贡献

(1)提出了一种新的点云represtenation,OHS
(2)根据OHS构建了 第一个 onestage中的anchor free的3D检测网络
(3)quadrant classification loss :

2. Related Work

  • one stage

voxelnet second pointpillars

  • two stage

MV3D

  • anchor free

在lidar_based的方法中没有,但是室内场景还是有一些,比如 SGPN,VOTENET等

3. Object as Hotspots

3.1. Interpretation of Hotspots

  1. part-aware的方法对遮挡更具有鲁棒性。

作者认为,part-bsed的具有part-aware的功能,即是在遮挡时,另外一部分可以具有全局的语义信息。
作者文章的hotspot实际上仅仅是object的一部分点云,也就是相当于一个object上存在多个hotspots
这里作者采用了下面这段表示每一个voxel也就是一个hotsopt,同时在后面的feamap 到 hptspot的映射可以用于做二次优化,后续可以考虑做一下。
For the voxelization representations, a voxel with several points enclosed is a sample of hotspot。A neuron on the CNN feature maps can represent a collection of voxels whose locations can be projected to the corresponding location of the neuron on the feature map。
在训练时根据voxel的映射将 feamap上的特征分为 hotspots和non-spots,对每个神经元进行二值分类。在推理阶段,如果某个神经元具有很高的置信度,那么这就是被分为一个hotspots

3.2. Hotspot Assignment

这应该是本文的核心观点,如何决定哪些是hotspots。作者指出3D刚性世界,点一般是不耦合的,可以根据标注框决定哪些点是包含物体的,但是边界点是不算在这其中的,同样作者为了得到更好的效果,采用了软间隔的方式,设置了一个中间区域为背景点和前景点的结合。
&emsp:作者设置了两种方式来决定当前的神经元是否为hotspot:

(1)看当前的神经元对应的是否含有点,如果没有就是non-hotspot,不过原始点需要在bbox中
(2)采用更大的区域,在bbox内所有的非空和空的voxel所对应的神经元都算。

4. HotSpot Network

分为两部分:

  1. 3D feature extractor

和second的前面的特征提取网络是一样的,不多研究,也就是下图中的voxel-based CNN backbone。

  1. Object-as-Hotspots head

这一块主要分为三部分,classfication,box regression和quadrant classification.后续逐个介绍。
【文章阅读】Object as Hotspots_第1张图片

4.1. Object-as-Hotspots Head

  • hotspot classification sub-network 决定该hotspot是否作为一个object的某个部分
  • regression sub-network 回归
  • quadrant classification sub-network 预测象限,坐标中心为每个object的中心

4.2. Hotspot Losses for Supervision

  • 分类Loss
    这里作者采用的是focal-loss作为分类损失,其中空的点作为的hotspot是会被忽略的,也就是不会作为任何背景的。
    L c l s = ∑ k = 1 K α ( 1 − p k ) γ log ⁡ ( p k ) \mathcal{L}_{c l s}=\sum_{k=1}^{K} \alpha\left(1-p_{k}\right)^{\gamma} \log \left(p_{k}\right) Lcls=k=1Kα(1pk)γlog(pk)
  • Box Regression
    对于hotspot的块,作者采用如下的公式得到该热点原始坐标系中的关系:
    [ x v , y v ] = ( j + 0.5 L ( x max ⁡ − x min ⁡ ) + x min ⁡ i + 0.5 W ( y max ⁡ − y min ⁡ ) + y min ⁡ ) \begin{aligned}\left[x_{v}, y_{v}\right]=&\left(\frac{j+0.5}{L}\left(x_{\max }-x_{\min }\right)+x_{\min }\right.\\ &\left.\frac{i+0.5}{W}\left(y_{\max }-y_{\min }\right)+y_{\min }\right) \end{aligned} [xv,yv]=(Lj+0.5(xmaxxmin)+xminWi+0.5(ymaxymin)+ymin)
    【文章阅读】Object as Hotspots_第2张图片

如上图所示,作者需要回归8个参数, [ d x , d y , z , log ⁡ ( l ) , log ⁡ ( w ) , log ⁡ ( h ) , cos ⁡ r , sin ⁡ r ] \left[d_{x}, d_{y}, z, \log (l), \log (w), \log (h), \cos r, \sin r\right] [dx,dy,z,log(l),log(w),log(h),cosr,sinr],其中 d x , d y dx,dy dx,dy表示hotspot到物体中心的偏差值。象限偏差值采取顺时针。

因此回归loss和其他一样采用L1 loss:
L l o c ( x ) = { 0.5 x 2 , ∣ x ∣ < 1 ∣ x ∣ − 0.5 ,  otherwise  \mathcal{L}_{l o c}(x)=\left\{\begin{array}{cc}0.5 x^{2} & ,|x|<1 \\ |x|-0.5 & , \text { otherwise }\end{array}\right. Lloc(x)={0.5x2x0.5,x<1, otherwise 

  • Quadrant Classification
  • L q = ∑ i = 0 3 − [ q i log ⁡ ( p i ) + ( 1 − q i ) log ⁡ ( 1 − p i ) ] \mathcal{L}_{q}=\sum_{i=0}^{3}-\left[q_{i} \log \left(p_{i}\right)+\left(1-q_{i}\right) \log \left(1-p_{i}\right)\right] Lq=i=03[qilog(pi)+(1qi)log(1pi)]

实验

【文章阅读】Object as Hotspots_第3张图片

你可能感兴趣的:(CV-Detection)