记录centerpoint学习笔记。目前被引用1275次,非常高。
地址:Center-Based 3D Object Detection and Tracking (thecvf.com)
GitHub - tianweiy/CenterPoint
CenterPoint:三维点云目标检测算法梳理及最新进展(CVPR2021)_哔哩哔哩_bilibili 作者解释。
CenterPoint 是一种用于激光点云的3D目标检测与跟踪算法框架,由2021年CVPR论文《Center-based 3D Object Detection and Tracking》提出。与以往算法不同,CenterPoint使用关键点而不是边界框来表示、检测和跟踪3D目标。
具体来说,CenterPoint算法分为两个阶段:
-
第一阶段:使用关键点检测器检测目标的中心点,然后基于中心点特征回归出目标的3D尺寸、朝向和速度等属性。
-
第二阶段:基于目标额外的点特征,对第一阶段得到的属性进行优化。
CenterPoint算法的优点包括简单高效,在nuScenes和Waymo数据集上都取得了state-of-the-art的性能表现。此外,目标跟踪被简化为一个简单的最近点匹配过程。
2D目标检测:
2D目标检测需要输出每个对象的类别(如人、车、猫等)以及一个包围框(bounding box),该包围框在图像中精确地定位了对象的位置。常见算法有基于区域提议(region proposal)的两阶段检测算法(如Faster R-CNN)和基于单阶段检测(one-stage detection)的算法(如YOLO、RetinaNet)
anchor
anchor(锚点)通常是指在目标检测任务中使用的一系列预定义的边界框(bounding boxes)。这些锚点具有不同的尺寸和宽高比,以覆盖图像中可能出现的各种形状和大小的目标。
锚点机制的工作流程如下:
- 在训练阶段,网络首先生成一系列锚点,这些锚点覆盖了图像中可能出现的各种形状和大小的目标。
- 然后,网络预测每个锚点内部是否包含一个目标,如果是,则进一步预测目标的类别和锚点需要调整的偏移量,以更好地匹配目标的真实边界框。
- 在推理阶段,网络使用这些锚点作为初始猜测,快速检测图像中的目标
缺点:不是end2end,需要nms后处理。
NMS
NMS(Non-Maximum Suppression,非极大值抑制)是一种在目标检测任务中常用的后处理步骤,用于去除冗余的检测边界框,确保每个目标只被检测一次。
NMS的主要步骤如下:
-
排序:首先,根据检测边界框的置信度(通常由检测算法给出)对所有边界框进行降序排序。
-
选择最高置信度的边界框:选择置信度最高的边界框作为当前考虑的边界框。
-
抑制与当前边界框高度重叠的边界框:计算当前边界框与其他所有边界框的交并比(IoU,Intersection over Union),如果IoU超过某个预定义的阈值(例如0.5),则将这些边界框抑制(即移除或忽略)。
-
重复步骤2和3:从剩余的边界框中选择置信度最高的边界框,重复步骤3,直到所有的边界框都被处理过。
-
输出最终检测结果:最后,剩下的边界框就是NMS处理后的检测结果,每个目标只被检测一次。
NMS在目标检测算法中起着关键作用,可以显著减少冗余的检测结果,提高检测的准确性和效率。然而,NMS也有一些局限性,例如可能会抑制一些具有高置信度但与当前边界框重叠的边界框,这可能导致一些真正的目标被遗漏。为了解决这个问题,研究者们提出了改进的NMS算法,如Soft-NMS、Softer-NMS等,它们通过更柔和的抑制策略来减少误抑制。
3D目标检测:
3D目标检测是计算机视觉领域的一项重要任务,其目标是在三维空间中检测和定位图像中的各种对象。与2D目标检测相比,3D目标检测不仅需要输出每个对象的类别和位置,还需要输出其在三维空间中的尺寸、方向和姿态等信息。
为了实现3D目标检测,研究者们提出了多种算法,包括基于深度学习的端到端检测算法和基于几何学的算法。近年来,基于深度学习的3D目标检测算法取得了显著的进展,特别是基于点云(如PointNet、PointNet++)和基于体素(如VoxelNet)的方法。
2D的预测:xy,wh(宽高),cls类别
3D的预测:xyz,lwh(长宽高),θ朝向角度,cls类别
pointnet
PointNet是一种用于点云处理的深度学习模型,由2017年CVPR论文《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》提出。该模型的主要思想是将点云数据作为输入,通过神经网络对其进行处理,以实现对点云数据的深度学习分析。
PointNet的关键创新点包括:
-
对称函数(Set Abstraction):为了处理点云的无序性,PointNet引入了对称函数,也称为集合函数。该操作将无序的点集表示为固定长度的向量。在PointNet中,集合函数的实现形式是基于最大池化(max)。
-
T-Net:为了获得点云的几何变换不变性,PointNet通过学习几何变换的参数,对点云数据进行对齐和变换。T-Net通过生成变换矩阵对原始点云数据进行变换,以更好地进行特征学习和提取。
-
多层感知器(MLP):PointNet使用多层感知器(MLP)对点云进行特征提取和分类/分割。
PointNet的主要应用包括:
- 3D物体分类:给定N个3D的点云,通过PointNet进行分类。
- 3D物体分割:对点云进行语义分割或实例分割。
PointNet的优势在于其简单高效的设计,能够直接处理点云数据,而无需将其转换为其他表示形式(如体素或网格)。这使得PointNet在基于点云的3D物体检测和分割任务中取得了当时最先进的性能。
voxelnet
VoxelNet是一种用于基于点云的3D物体检测的端到端学习框架,由2018年CVPR论文《VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection》提出。该框架的主要思想是将稀疏的点云数据转换成密集的体素表示,然后使用3D卷积网络进行特征提取和物体检测。
VoxelNet框架主要包括以下步骤:
-
点云预处理:将稀疏的点云数据转换成规则的体素网格表示。这一步通过将点云划分成规则的体素,并对每个体素内的点进行统计(如最大值、最小值、平均值等)来实现。
-
体素特征提取:使用3D卷积网络从体素网格中提取特征。这些特征能够描述体素内的点云分布和结构信息。
-
区域提议网络(RPN):基于提取的体素特征,使用RPN生成候选物体的3D边界框提议。RPN是一个全卷积网络,能够输出一系列3D边界框提议以及每个提议的置信度。
-
边界框回归和分类:对RPN生成的边界框提议进行回归和分类,以获得最终的物体检测结果。这一步通常使用3D卷积网络实现。
pointpillar
PointPillar是一种用于基于激光雷达(LiDAR)点云的3D物体检测的算法,由2019年CVPR论文《PointPillars: Fast Encoders for Object Detection from Point Clouds》提出。该算法的主要思想是将稀疏的点云数据转换成伪图像表示(每一个pixel不仅有原始的2D信息还包括了高度信息),然后使用2D卷积网络进行特征提取和物体检测。voxelnet很慢也很占内存。
PointPillar框架主要包括以下步骤:
-
点云预处理:将稀疏的点云数据转换成规则的伪图像表示。这一步通过将点云划分成规则的柱体(pillars),并对每个柱体内的点进行统计(如最大值、最小值、平均值等)来实现。
-
伪图像特征提取:使用2D卷积网络从伪图像中提取特征。这些特征能够描述每个柱体内的点云分布和结构信息。
-
区域提议网络(RPN):基于提取的伪图像特征,使用RPN生成候选物体的3D边界框提议。RPN是一个全卷积网络,能够输出一系列3D边界框提议以及每个提议的置信度。
-
边界框回归和分类:对RPN生成的边界框提议进行回归和分类,以获得最终的物体检测结果。这一步通常使用3D卷积网络实现。
PointPillar的创新之处在于其高效的计算方式,能够将稀疏的点云数据转换为密集的伪图像表示,从而利用成熟的2D卷积网络进行特征提取。这使得PointPillar在基于激光雷达的3D物体检测任务中取得了当时最先进的性能。
centerpoint
当anchor感应到附件有目标物体的时候,就会有一个很大的激活值,就是上面红色部分。
当物体是旋转的时候,anchor会误匹配,主要是因为anchor是正的,不能斜着
中心点的表征是热力图(关键点检测的loss):CLS*H*W,热力图的局部最大值认为是有目标obj