3D OD

0、LiDAR

数据格式:3D点云;每一个点除了包含X,Y,Z坐标,还包含一个反射强度R,类似与毫米波雷达里的RCS

1、3D OD算法(https://zhuanlan.zhihu.com/p/390156904, https://zhuanlan.zhihu.com/p/412161451)

3D目标检测任务:根据点云数据来找到场景中所有感兴趣的物体,比如自动驾驶场景中的车辆,行人,静态障碍物等等
3D目标检测任务输入:3D点云数据
3D目标检测任务输出:3D BBox,常用的表示为中心点3D坐标,长宽高,以及3D旋转角度来表示
3D目标检测任务的Loss计算:和2D类似,3D BBox和gt的3DIOU
评测:类似2D的AP

1.1 VeloFCN

思路:3D点云转换到与图像相似的正视图(Front View),得到一个"点云伪图像",然后使用2D的检测思路
优点:沿用2D检测的方法
缺点:1、个点可能映射到图像坐标的同一个位置,这样会造成信息的丢失 2、3D的点映射到2D平面,深度信息被嵌入到了像素值中,3D信息的提取就变得相对困难

1.2 MV3D

思路:和VeloFCN相比,将3D点云同时映射到正视图和俯视图,并与2D图像数据进行融合。

1.3 VoxelNet(3D点云第一个端对端的物体检测网络)

思路:1、特征学习网络:将点云量化到一个均匀的3D网格中,每个网格内部随机采样固定数量的点(不足的就重复),每个点用7维特征表示,包括该点的X,Y,Z坐标,反射强度R,以及该点相对网格质心(网格内所有点位置的均值)的位置差ΔX,ΔY和ΔZ。全连接层被用来提取点的特征,然后每个点的特征再与网格内所有点的特征均值进行拼接,得到新的点特征。这种特征的优点在于同时保留了单个点的特性和该点周围一个局部小区域(网格)的特性。这个点特征提取的过程可以重复多次,以增强特征的描述能力(下图中的Stacked Voxel Feature Encoding)。最终网格内的所有点进行最大池化操作(Max Pooling),以得到一个固定长度的特征向量,形状为4D的Tensor(对应X,Y,Z坐标和特征)
2、目标检测头:特征学习网络,其输出是一个4D的Tensor(对应X,Y,Z坐标和特征)。这与一般的图像数据不同(图像是3D Tensor,只有X,Y坐标和特征),因此还没法直接采用图像物体检测的方法。VoxelNet中采用3D卷积对Z维度进行压缩(比如stride=2)。假设4D Tensor的维度为HxWxDxC,经过若干次3D卷积后,Z维度的大小被压缩为2(也就是HxWx2xC'),然后直接将Z维度与特征维度合并,生成一个3D的Tensor(HxWx2C')。这就和标准的图像数据格式相似了,因此可以接上图像物体检测网络(比如Region Proposal Network,RPN)来生成物体检测框,只不过这里生成的是3D的检测框。
问题:中间层的3D卷积计算量太大
疑问:1、特征学习网络 每个点的特征不是7维,是4维(x,y,z,特征)?

1.3 PointNet++

该方法的前身是PointNet,PointNet处理的是点云分类任务,其主要思路是直接处理原始的点云。除了一些几何变换之外,PointNet主要有两个操作:MLP(多个全连接层)提取点特征,MaxPooling得到全局特征。物体分类网络采用全局特征作为输入,而分割网络则同时采用全局特征和点特征,PointNet分类网络分类器要使用到检测任务,需要Sliding Window的机制,也就是说在场景内的各个位置应用PointNet来区分物体和背景,以达到物体检测的效果。
PointNet++ 用聚类的方式来产生多个候选区域(每个区域是一个点集),在每个候选区域内采用PointNet来提取点的特征。这个过程以一种层级化的方式重复多次,每一次聚类算法输出的多个点集都被当做抽象后的点云再进行下一次处理(Set Abstraction,SA)。这样得到的点特征具有较大的感受野,包含了局部邻域内丰富的上下文信息。最后,在多层SA输出的点集上进行PointNet分类,以区分物体和背景
优点:
1)没有量化带来的信息损失,也无需调节量化超参数(网格大小);
2)忽略空白区域,避免了无效的计算
缺点:
1)无法利用成熟的基于空间卷积的2D物体检测算法;
2)虽然避免了无效计算,但是GPU对于点云的处理效率远低于网格数据,因此实际的运行速度甚至更慢。

1.4 发展期(2018年-2020年)

  • 基于栅格网络VoxelNet:中间层的3D卷积计算量太大,导致其运行速度只有大约2FPS(Frame Per Second);
    • SECOND[7]采用稀疏卷积策略,避免了空白区域的无效计算,将运行速度提升到了26FPS,同时也降低了显存的使用量
    • PIXOR[8]提出通过手工设计的方式,将3D的Voxel压缩到2D的Pixel。这样做避免了3D卷积,但是损失了高度方向上的信息,导致检测准确度下降很多
    • PointPillar[9]的思路也是3D转2D,也就是将点3D点云量化到2D的XY平面网格。但是与PIXOR手工设计特征的方式不同,PointPillar把落到每个网格内的点直接叠放在一起,形象的称其为柱子(Pillar),然后利用与PointNet相似的方式来学习特征,最后再把学到的特征向量映射回网格坐标上,得到与图像类似的数据。这样做一来避免了VoxelNet中的3D卷积和空白区域的无效计算(运行速度达到62FPS),二来避免了手工设计特征导致信息丢失和网络适应性不强的问题,可以说是很巧妙的思路。不好的方面是,点特征的学习被限制在网格内,无法有效的提取邻域的上下文信息。
  • 基于点的网络PointNN:基于聚类的方法来层级化的提取邻域特征以及获得物体候选,这种做法效率比较低,而且也很难做并行加速。而这恰巧是传统的2D卷积网络的强项,因此后续的工作逐渐将2D物体检测算法中的一些思路拿过来,用来解决PointNet++中的问题
    • Point-RCNN[10]首先在这个方向了进行了探索,可以称得上3D物体检测领域的又一个里程碑式的工作。从名字上就能看出,这个方法将点云处理和2D物体检测领域的开山之作Faster RCNN结合了起来。首先,PointNet++被用来提取点特征。点特征被用来进行前景分割,以区分物体上的点和背景点。同时,每个前景点也会输出一个3D候选BBox。接下来就是将候选BBox内的点再做进一步的特征提取,输出BBox所属的物体类别,并且对其位置,大小进行细化。看到这里,熟悉2D物体检测的朋友肯定会说,这不就是一个典型的两阶段检测模型嘛。没错,但不同的是,Point-RCNN只在前景点上生成候选,这样避免了3D空间中生成稠密候选框所带来的巨大计算量。尽管如此,作为一个两阶段的检测器,加上PointNet++本身较大的计算量,Point-RCNN的运行效率依然不高,只有大约13FPS 。Point-RCNN后来被扩展为Part-A2[11],速度和准确度都有一定的提升。
    • 3D-SSD[12]通过对之前Point-based方法的各个模块进行分析,得出结论:FP(Feature Propagation)层和细化层(Refinement)是系统运行速度的瓶颈。FP层的作用是将SA层抽象后的点特征再映射回原始的点云,可以理解为上图中Point-RCNN的Point Cloud Decoder。这一步非常必要,因为SA输出的抽象点并不能很好的覆盖所有的物体,会导致很大的信息丢失。3D-SSD提出了一种新的聚类方法,同时考虑点与点之间在几何空间和特征空间的相似度。通过这种改进的聚类方法,SA层的输出可以直接用来生成物体Proposal,避免了FP层带来的大计算量。同时,为了避免Refinement阶段的Region Pooling,3D-SSD直接采用SA输出的代表点,利用前面提到了改进聚类算法找到其邻域点,用一个简单的MLP来预测类别和物体框3D BBox。3D-SSD可以认为是一个Anchor-Free的单阶段检测器,这也符合整个物体检测领域的发展趋势。通过以上改进,3D-SSD的运行速度可以达到25FPS。
  • 融合
    基于栅格的方法速度较快,准确度偏低。基于Point的方法速度明显偏慢,但是准确度相对较高
    PointPillar就是一个例子,虽然点云被按照类似Voxel的方式进行量化,但是点特征的学习是采用类似PointNet的方式。虽然说算法的性能并不是最好的,但是其思路还是非常值得思考的。
    两者融合的基本思路是:利用较低分辨率的Voxel来提取上下文特征(比如PV-CNN [14])或者生成物体候选(Fast Point RCNN [15]),或者二者兼有(比如PV-RCNN [16],SA-SSD[17]),然后再与原始的点云结合,这样单个点的特征和点点之间的空间关系也可以同时保留。
    PV-CNN一个分支采用低分辨率的Voxel来提取具有邻域信息的特征,然后再通过插值的方法映射回每个点上。另一个分支直接从原始点出发,利用MLP来提取点特征,这时虽然没有邻域信息,但是单个点的特征提取是相对精确的。最后把两个分支的特征进行拼接,作为下一步的输入
    PV-RCNN的一个分支将点云量化到不同分辨率的Voxel,以提取上下文特征和生成3D物体候选。另外一条分支上采用类似于PointNet++中Set Abstraction的操作来提取点特征。这里比较特别的是,每个点的领域点并不是原始点云中的点,而是Voxel中的点。由于Voxel中的点具有多分辨率的上下文信息,点特征提取也就同时兼顾了单个点以及邻域信息,这与PV-CNN中的思路是类似的。值得一提的是,PV-RCNN和Fast Point RCNN都属于两阶段的检测方法,有一个ROI Pooling的步骤,因此运行速度会收到影响(PV-RCNN只有12.5FPS,Fast Point R-CNN也只有16.7FPS)
    SA-SSD通过附加的前景分割和物体中心点估计任务引导Voxel分支去更好的学习点特征和利用点之间的空间关系,同时也避免了3D物体候选框和ROI Pooling步骤。作为一个单阶段的检测器,SA-SSD可以达到25FPS,准确度也仅比PV-RCNN略低(79.79% vs. 81.43%)
  • 落地期(2020年至今)
    现阶段3D物体检测的发展有两个趋势:一个是追求速度和准确度的平衡,另一个是在保证一定速度的前提下最大化准确度。前者一般会采用Voxel加单阶段检测器,后者一般会融合Voxel和Point,甚至采用两阶段的检测器,以获得更为精细的物体框。下面结合几个2021年最新的工作,来做进一步的分析。
    SIENet[18]是一个基于Voxel和Point融合的两阶段检测方法,其融合策略与PV-RCNN相似。为了解决远处物体点云相对稀疏的问题,SIENet采用了一个附加分支,将Voxel的网格看做额外的点,以此来对远处物体进行补全。SIENet在KITTI车辆检测上的AP为81.71%,但是速度只有12.5FPS,基本上与PV-RCNN相当。
    Voxel R-CNN[19]也是一个两阶段检测器,但是只采用了Voxel来做特征提取,其结构更加简洁。通过一个特别设计的Voxel ROI Pooling模块,该方法可以进一步提高物体检测的精确度。其余的部分与一般的基于Voxel方法非常相似,这里就不详细描述了。Voxel RCNN在KITTI车辆检测上的AP为81.62%,与SIENet相当,但是速度提升了一倍,达到25.2FPS。
    CIA-SSD[20]是一个基于Voxel的单阶段检测方法。其特征提取阶段与SECOND类似,都是采用稀疏3D卷积。不同的是CIA-SSD将网格内点的均值作为起始特征(没有采用VoxelNet中的多阶段MLP),而且通过不断降低空间分辨率来进一步减少计算量,最后将Z方向的特征拼接以得到2D特征图(类似VoxelNet中的做法)。作为一个单阶段的检测器,CIA-SSD借鉴了图像物体检测领域的一些技巧。比如,为了更好的提取空间和语义特征,CIA-SSD采用了一种类似于Feature Pyramid Network (FPN)的结构,当然这里的细节设计稍微复杂一些。此外,为了解决单阶段检测器分类置信度和定位准确度之间的差异问题,CIA-SSD采用了IoU预测分支,以修正分类的置信度和辅助NMS。结合以上这些策略,CIA-SSD在KITTI车辆检测的AP达到80.28%,速度为33FPS。CIA-SSD之后被扩展为SE-SSD[21],速度不变,AP提升到82.54%,这其实已经超越了基于Voxel和Point融合的两阶段检测器。
    CenterPoint[22]是由目前图像物体检测中流行的CenterNet演化得到的。与CenterNet的单阶段检测不同,CenterPoint采用了两阶段的方式。在第一阶段中,其特征提取的主干网络可以采用VoxelNet或者PointPillar的方式,得到的是一个HxWxC的二维图像加通道的数据结构。检测网络的部分和CenterNet非常相似,只是针对BEV数据非常稀疏的特点,调整高斯分布的参数,以增加正样本的数量。在第二阶段中,从已经预测的BBox出发,收集BBox边缘的点特征,用一个MLP对置信度和BBox参数进行细化。这与传统的两阶段检测非常相似,只不过ROI Pooling只在一些稀疏的点上进行,效率比较高。CenterNet的整个流程非常简洁,但是在NuScenes和Waymo数据库上的准确度都到达了state-of-the-art,充分说明了目前业界追求简单高效的趋势。
    Voxel的单阶段方法成为主流,这也与图像物体检测领域的发展趋势相契合,前文介绍的很多技巧,比如轻量级的Voxel特征提取,稀疏3D卷积,FPN,IoU预测分支等等,都在获胜的算法中有所体现。这从另一个侧面说明了当前技术的最高水平,也为3D物体检测领域的进一步发展提供了方向

2、视觉+激光雷达融合(https://zhuanlan.zhihu.com/p/417375291)

传感器相关优缺点:

  • 视觉
  • 特征:由真实世界通过透视投影得到的二维表示,规则的,有序的,稠密的
  • 优点:感知技术相对成熟
  • 缺点:1、受光照天气影响较大 2、物体的深度(距离)信息困难和精度不准
  • 激光雷达
  • 特征:真实世界欧式坐标系中的三维信息,不规则的,无序的,稀疏的
  • 优点:深度信息
  • 缺点:1、计算量大 2、成本大 3、3D点云较像素稀疏,远距离,小物体,遮挡物体会由于反射点少漏报

3、视觉+毫米波雷达融合(https://zhuanlan.zhihu.com/p/417375291)

融合策略:决策层融合,决策+特征层融合,以及特征层融合。

3.1 决策层融合

图像和点云分别得到物体检测结果(BoundingBox),转换到统一坐标系后再进行合并。这种策略中用到的大都是一些传统的方法,比如IoU计算,卡尔曼滤波等,与深度学习关系不大,本文就不做介绍了。下面重点来讲讲后两种融合策略

3.2 决策+特征层融合

思路:1、先通过一种数据生成物体的候选框(Proposal);如果采用图像数据,那么生成的就是2D候选框,如果采用点云数据,那么生成的就是3D候选框 2、将候选框与另外一种数据相结合来生成最终的物体检测结果(也可以再重复利用生成候选框的数据)。这个结合的过程就是将候选框和数据统一到相同的坐标系下,可以是3D点云坐标(比如F-PointNet),也可以是2D图像坐标(比如IPOD)

posted @ 2022-06-29 20:33  哈哈哈喽喽喽  阅读(222)  评论(0编辑  收藏  举报