3D点云two-stage目标检测方法优化综述

2020-12-11 10:26:00 浏览数 (1)

前言

和二维图像目标检测一样,3D点云目标检测除了按照输入模态划分为基于点云、基于单目、基于双目或者是多模态融合的方法。也可以按照对proposal的提出和优化分为one-stage、two-stage甚至three-stage的方法。当然也可以再根据是否设置anchor分为anchor-based和anchor-free的工作。下图表示了目前的一些近两年的文章,包括了室内和室外的点云目标检测算法。

这一篇文章核心介绍一些two-sgate的方法中的refine阶段怎么做的。

1. 为啥要做两阶段方法

当然在工业界目前为了能够实时都是以one-stage的方法居多,两阶段的方法优点是精度高,回归准但是缺点是速度慢,所以在很多刷榜的任务中,在不考虑精度的前提下都是采用two-stage的方法为主,two-stage方法在学术界可以将精度推进一部分,而目前点云目标检测的方法中两阶段方法由最初的尝试(19年下半段)到现在发展成存在一定的套路。

2. two-sgate 的第二阶段,refine怎么做?

先做一点笔者的个人总结,以前的refine工作(ICCV19以前)更多的是在前一步的基础上进一步的精确定位,例如F-Pointnet则是首先根据二维检测结果投影到3D点云中以大致确定bbox的位置,随后根据设计的pointntet点云网络得到更加精确的回归信息。而后的发展则是多为这样的操作:(1)作者利用了之前网络没有考虑到的信息或者结构(2)该信息或者该结构提取到的信息通过第二阶段融入到现有的proposal中做进一步优化。

F-pointnet

就读者看到的最早的文章是F-pointnet,准确而言是一个三阶段的方法,这里的refine工作可以理解成从二维图像检测到3D目标后,通过视锥投影得到在点云场景中的位置,然后再根据一个衍生的pointnet做进一步的refine。这个方法更像是一个阶段性“回归”bbox的过程,不像是进一步做精细refine的过程

PointRCNN

发表在CVPR19上的文章,如下图所示的网络结构,图的上栏表示根据点提proposals的过程,下栏表示采用一个MLP编码结构将proposals周围的特征聚合得到refine的特征,然后根据proposals的内点作为pointnet的网络输入做进一步的回归。

Fast-PointRcnn

发表在ICCV19,这里的refine工作就显得很直接了当了,左下的voxel-RPN网络即上目前大火的second1.5,根据SECOND和anchor-based的方法提出proposals就完成了第一阶段的proposals提取,然后第二阶段是将voxel的卷积特征、原始场景的点云信息通过检索在proposals内点中进行融合,这里的refinenet也是一个简单的pointnet,对proposals中所有的点进行进一步refine的操作。

STD

也是发表在ICCV19,效果很好,目前仍然在KITTI榜单上第12名,值得一提的是今天(7/24)霸榜长达大半年的方法PV-RCNN被更新下去了,可以期待一下现在第一名的工作~

STD的方法准确来说也是一个point-based的方法,下图也可以清晰的看的出来PGM网路作为第一阶段提出proposals,后续的pointspool模块也就是refine的工作,这里作者还采用了一些根据IOU的策略对refine的结果做进一步的优化和处理。

PV-RCNN

笔者将上面的refine工作和下面的refine工作先做一个简单的区分,首先前面介绍到的refine工作都是比较单一的通过proposals回到原始点云场景中的点上,然后根据这些点做进一步的refine,采用的refine方式也多是pointnet回归。而下面重点介绍的refien工作则是有存在一定的套路可以使用的。 这篇文章的解读已经很多了,作者自己的讲解中也说到这个方法是想 融合point和voxel二者的优点,其中proposals由voxel-based的backbone提出,然后第二阶段的refine也是在proposal内部的点上集成point的feature,这里作者设计的融合方法和前面提到的文章的最大的不同就是grid的使用。之前的refine的方法尽管也都是在原始的点上进行的,(partA2这篇文章有在BEV上做过),但是不可避免的一个问题是每一个proposals中的点个数一样,同时点的分布也是不同的,以前的方法都是直接采用pointnet网络将batch这个维度直接和point这个维度融合在一起。而PVRCNN的refine网络不一样的是对每一个proposas内部均匀划分设置了6×6×6个格点,而这些格点会通过插值的方式得到原始点云的特征,最终是在这些格点中进行refine工作。

所谓均匀的格点就如下图所示。其中红色的这种均匀的点就是作者自己设置的,然后灰色的点是原始点云的点,可以通过特征插值的方式(3NN)将原始点云的点插值给均匀设置的点,这样设置点后,每一个proposal的点个数一致。

进一步的,可以理解为,因为voxel-backbone的效果很好,所以作者将这一块用来做第一阶段的refine,然后作者想要将point-feature融入到该方法中,因此设计了融合模块也就是refinne网络,后续的很多two-stage的研究都是基于如下的模式去做,也就是首先想要融合某些信息(如point信息或者image信息),然后通过特征提取,再通过proposals回到点云上,在点云上将额外的特征进行融合,最后再采用MLP做优化就可以了,如果自己做研究,完全是可以按照这一个套路来。

3DCVF & MMF

3DCVF是今年ECCV20的研究工作,MMF是CVPR19的研究工作,二者都是采用的MMF的refine方式,这里以3D-CVF为例,在上一篇文章中也已经讲解到了这个融合了image信息的研究工作,同样的该网络的第一阶段也是采用的second1.5,然后主要是在refine网络中将Image信息融合进去。也正应了上面的那个模式,即首先想要将Image信息融合做目标检测,第一阶段都使用second提出proposals(第一阶段的deature-map是融合特征的).第二阶段则是将信息融合进去。

具体的refine网络如下所示,首先也是在bbox表面设置一些特征点,由于本文采用的是Image信息融合,所以在设计refine网络时,先是回到iamge域得到特征(也就是特征融合),然后再采用pointnet对点信息融合做refine。

笔者总结

如果想要精度更高,两阶段的方法是不可避免的(二维目前anchor-free的精度就很高了)。所以在做研究时,可以多多观察哪些信息是还没被利用起来的,然后根据上面画的那个模式因地制宜的设计自己的网络,如果精度提升,那就可以了。

本文仅做学术分享,如有侵权,请联系删文。

0 人点赞