基于Point-Voxel
PV-RCNN
基于Point-Voxel方法是介于point-based和voxel-based之间的一种方式。PV-RCNN是首个经典point-based和voxel-based结合的网络,论文提出了Voxel Set Abstraction操作,将Sparse Convolution主干网络中多个scale的sparse voxel及其特征投影回原始3D空间,然后将少量的keypoint (从点云中sample而来) 作为球中心,在每个scale上去聚合周围的voxel-wise的特征。这个过程实际上结合了point-based和voxel-based两种点云特征提取的结构,同时将整个场景的multi-scale的信息聚合到了少量的关键点特征中,以便下一步的RoI-pooling。论文还提出了Predicted Keypoint Weighting模块,通过从3D标注框中获取的免费点云分割标注,来更加凸显前景关键点的特征,削弱背景关键点的特征。除此之外,论文还设计了更强的点云3D RoI Pooling操作,也就是论文提出的RoI-grid Pooling: 与前面不同,每个RoI里面均匀的sample一些grid point,然后将grid point当做球中心,去聚合周围的keypoint的特征。通过Voxel-to-keypoint与keypoint-to-grid这两个point-voxel特征交互的过程,显著增强了PV-RCNN的结构多样性,使其可以从点云数据中学习更多样性的特征,来提升最终的3D检测性能。算法在仅使用LiDAR传感器的setting下,在自动驾驶领域Waymo Open Challenge点云挑战赛中取得了(所有不限传感器算法榜单)三项亚军、Lidar单模态算法三项第一的成绩,以及在KITTI Benchmark上保持总榜第一的成绩超过半年。
SA-SSD
SA-SSD将二阶段方法独有精细回归运用在一阶段的的检测方法上,为此作者采用了SECOND作为backbone,添加了两项附加任务,使得backbone具有structure aware的能力,定位更加准确,如下图所示,辅助头参与训练,推理阶段可以消除!
PV-RCNN++
PV-RCNN++提出了基于点体素区域的卷积神经网络,用于从点云中检测三维目标。首先,论文提出了一种新的三维检测器,它包括两个步骤:体素到关键点场景编码和关键点到网格RoI特征提取。这两个步骤将3D体素CNN与基于PointNet的集合抽象深度集成,以提取判别特征。除此之外,还提出了一个先进的框架PV-RCNN++,用于更有效和准确的3D对象检测。它包括两个主要的改进:一个是分区化的以提案为中心的策略,用于高效地生成更多代表性的关键点;另一个是矢量池聚合,用于以更少的资源消耗更好地聚合局部点特征。通过这两种策略,PV-RCNN++比PV-RCNN快两倍以上,同时在检测范围为150m×150m的大规模Waymo开放数据集上也实现了更好的性能。此外,提出的PV-RCNN在Waymo开放数据集和高度竞争的KITTI基准上都实现了最先进的3D检测性能。
基于多模态数据
基于多模态方法主要是结合点云、图像、深度图、range图等其中的两种或者多种来完成3D检测,性能一般要比单模态数据好。
MV3D
3D点云数据的一些主要问题可以体现在其稀疏性、无序性、冗余性三个方面。对于稀疏性,现有的一些方法喜欢引入体素(Voxel)进行三维空间的划分,然后将稀疏、无序,分布不均匀的点云数据分配于不同的体素,接着利用MLP、卷积、池化等操作实现对体素(点云)进行特征提取,很明显这种方法会引入大量的计算量。考虑到这一点,MV3D并没有使用类似的方法,而是将点云数据和图片数据映射到三个不同的维度进行特征融合,然后进行物体的定位和识别。这三个维度分别为:点云的BEV图、点云的前视图以及RGB图。MV3D结构如下图所示,输入为BEV和FV以及RGB图,在BEV分支申城3D proposal,然后送入到三个分支上,最后通过ROI pooling提取特征,然后汇总三个分支特征,进行分类和回归!相比于同时代的方法,KITTI上SOTA!
AVOD
AVOD输入RGB图像以及BEV(Bird's Eye View) Map,利用FPN网络得到二者全分辨率的feature map,然后通过crop&resize提取两个feature map对应的feature crop并融合,最后挑选出3D proposal以实现3D物体检测,整个过程是two-stage detection,可以理解为MV3D的加强版。相比于MV3D最大改进是3D RPN,MV3D使用的是微调的VGG16,同时做了一些操作(upsampling+remove some pooling layer),使得最终的feature map相对于input是 8x downsampling ;而AVOD使用的是FPN,包含了encoder和decoder,在保证最终的feature map相对于input是full-resolution的同时,并且还结合了底层细节信息和高层语义信息,因此能显著提高物体特别是小物体的检测效果。同时期来说,速度快,但性能未有非常大优势!
MVXNet
MVXNet提出目前3D检测网络大多基于点云数据,通常基于单一模式,无法利用来自其它模式(如camera)的信息。虽然有几种方法融合不同模态的数据,但这些方法要么使用复杂的pipeline顺序处理模态,要么执行后期融合,无法在早期阶段了解不同模态之间的相互作用。MVXNet提出了点融合和体素融合:两种简单而有效的早期融合方法,通过利用最近引入的VoxelNet框架,将RGB和点云模式结合起来。在KITTI数据集的评估表明,与仅使用点云数据的方法相比,性能有显著提高。此外,通过使用简单的单级网络,所提出的方法提供了与最先进的multimodal算法对比的结果,在KITTI基准上的六个鸟瞰图和3D检测类别中的五个类别中排名前二。
PointPainting
3D物体目标检测任务最好采用哪种传感器?Camera还是Lidar?不同团队给出了不同的答案。Camera和Lidar作为目标检测领域的两大巨头传感器,各有优缺点:图像的分辨率比较高,纹理信息比较丰富,但深度信息相对模糊;点云的空间信息、深度信息比较准确丰富,但数据往往比较稀疏、不够完整。由于两种传感器在一些方面存在互补关系,所以很多人相信我们可以利用多模态的方案来实现强强联合,开创1+1>2的局面,但实际却是...各种1+1<1。这是因为图像和点云两种数据之间存在着完全不同的特性,这种差异性致使我们无法通过一些“理所当然”的方案来实现性能的叠加。虽然已经有很长一段时间各大榜单被Lidar-only的方案所霸占(最近好像有逆转的趋势),但在之间也不乏一些多模态方法的优秀工作,比如PointPainting。PointPainting是工业界发表的一篇多模态3D物体目标检测Paper,在文中作者提出了一种图像与点云的新型融合方案。PointPainting提出一种顺序融合的方法来解决该问题,其工作原理是将LIDAR点投影到图像语义分割网络的输出中,并将分类分数附加到每个点云上,Painted的点云可以输入任何LIDAR点云的网络,在Point-RCNN、voxelnet、pointpillar上均实现涨点。PointPainting是按顺序设计的,因此不能端到端优化!
如下图所示,PointPainting架构包括三个主要阶段:(1)基于图像的语义网络(2)融合(绘制)和(3)基于激光雷达的检测器。在第一步中,图像通过语义分割网络获得逐像素分割分数。在第二阶段,将激光雷达点投影到分割掩模中,并用在前一步骤中获得的分数进行装饰。最后,基于激光雷达的目标检测器可用于装饰(绘制)的点云,以获得3D检测结果!
3D-CVF
3D-CVF提出由于视角不同,相机特征投影到3D世界坐标中时,会丢失空间信息,因为这个转换是一对多(one-to-many)的映射。此外,投影坐标与LIDAR 3D坐标之间可能存在不一致性,因此如何在不损失信息的情况下融合2种特征至关重要。论文提出了一种融合camera和LIDAR进行3D目标检测的网络,camera和LIDAR存在的一个难点是:二者获取信息的视角不同,因此,在不丢失信息的情况下组合两个异构特征图毕竟困难。3D-CVF采用自动校准投影 (auto-calibrated projection),将2D camera特征转换为与BEV中的 LiDAR 特征对应性最高的平滑空间特征图。然后,应用gated feature fusion network,利用空间注意力机制,根据region适当地混合camera和LIDAR的特征。紧接着,在proposal refinement stage,进一步实现了camera-LIDAR的特征融合。使用ROI-based feature pooling分别池化low-level的camera和LIDAR特征,然后与联合camera-LIDAR特征融合以进一步refine结果。在KITTI和 nuScenes取得了SOTA结果。
CLOCs
CLOCs融合提供了一个低复杂度的多模态融合框架,显著提高了单模态检测器的性能。在任何2D和3D检测器的非最大抑制(NMS)之前,CLOCs对组合输出候选对象进行操作,并经过训练,利用它们的几何和语义一致性,生成更准确的最终3D和2D检测结果。我们对具有挑战性的KITTI目标检测基准的实验评估,包括3D和鸟瞰指标,显示了显著的改进,特别是在长距离,比最先进的基于融合的方法。在提交时,CLOCs在所有基于融合的方法中排名最高的官方KITTI排行榜。
工程落地支持
一般来说多模态性能>基于点云>基于双目>基于双目,单目本身无法获取深度学习,天生的缺陷导致其性能并不高,双目虽然可以借助几何关系获取更高的表征,但还是逊色于点云Lidar方案!下面是nuscene上3D检测榜单结果,可以看到基于camera的网络最高mAP在0.525,激光雷达方式在0.688,多模态方式(以最常见的Lidar+Camera为例)在0.756!
基于激光雷达:
基于Camera的:
基于多模态:
总结
聊一下目前工程上使用比较多的模型,基于单目的主要是FCOS3D、SMOKE、FCOS3D++等结构,结构相对简单,纯卷积方案(BEV感知也是一部分,但不在今天的讨论范围内!)
双目方案整体来说,相关研究较少(不那么热门),主要表现在开源数据base少,而且业内的一些自动驾驶方案不采用双目视觉方案,目前的一些思路主要是双目视觉图像生成深度图/伪激光雷达数据,然后送入基于点云的3D检测网络中,解决了激光雷达昂贵的问题。也有一些网络联合深度估计和3D检测任务,端到端。每个公司的落地方案暂时不明确,仁者见仁智者见智!
基于Lidar方案比较受欢迎的是PointPillars、SECOND,在一些自动驾驶公司和造车新势力产品上被广泛采用,速度快,性能佳!另外,一些框架如商汤的mmdeploy以及支持PointPillars到ONNX、TensorRT、OpenVINO了,部署起来很方便!不得不说,mmlab很给力~
多模态领域上使用CLOCs、Fast-CLOCs、PointPainting(pointaugmenting效果更好)使用较多,简单高效、容易部署!
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)