目前二维上的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进行回归就行.
(1)给出object级别的anchor大小,然后再根据提取到的特征回归和判别。
(2)基于Voxel的方法比较依赖参数的设置,比如点云range的设置,anchor的大小等等,这些预先设置的大小要建立在对数据的分析认知上,同时anchor的数量随着类别的增加也会线性增加。此外,通过IOU的方式确定pos和neg的方法可能会导致采样数据的进一步不平衡。
作者 认为 激光雷达从未捕捉都稠密3D点云的形状,极端情况下,一个物体仅仅只能获得十个点左右
因此作者提出一种anchor free的认知,将目标当做一种hotspots的团来处理。
作者首先也是将点云场景体素化,然后再把每一个voxel中每一个点的特征集合起来形成hotspot表示,这些hotspot再直接被训练用于预测物体的定位和方向。最后再通过NMS得到结果。
我的疑惑:读到这里,不免会这样想,前面的voxel-based的方法都是先体素化,其中体素化的过程会划分成比较小的格子,而这里也同样体素化,那么作者是如何将体素特征转化为hotspots的特征呢,并认定哪些是hotspots。
(1)提出了一种新的点云represtenation,OHS
(2)根据OHS构建了 第一个 onestage中的anchor free的3D检测网络
(3)quadrant classification loss :
voxelnet second pointpillars
MV3D
在lidar_based的方法中没有,但是室内场景还是有一些,比如 SGPN,VOTENET等
作者认为,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
这应该是本文的核心观点,如何决定哪些是hotspots。作者指出3D刚性世界,点一般是不耦合的,可以根据标注框决定哪些点是包含物体的,但是边界点是不算在这其中的,同样作者为了得到更好的效果,采用了软间隔的方式,设置了一个中间区域为背景点和前景点的结合。
&emsp:作者设置了两种方式来决定当前的神经元是否为hotspot:
(1)看当前的神经元对应的是否含有点,如果没有就是non-hotspot,不过原始点需要在bbox中
(2)采用更大的区域,在bbox内所有的非空和空的voxel所对应的神经元都算。
分为两部分:
和second的前面的特征提取网络是一样的,不多研究,也就是下图中的voxel-based CNN backbone。
这一块主要分为三部分,classfication,box regression和quadrant classification.后续逐个介绍。
如上图所示,作者需要回归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.5x2∣x∣−0.5,∣x∣<1, otherwise