CenterPoint是一种anchor free的三维目标检测算法模型,发表在CVPR 2021,论文名称为《Center-based 3D Object Detection and Tracking》。其主要特点在于通过预测物体的中心点来进行目标检测和位置回归,而不需要预先产生大量候选框(anchor)。因而,这种方法的后处理更加简洁,相邻目标可通过直接选择热力图中心点来确定最终目标,不需要非极大值抑制(NMS)操作来合并重叠的候选框。但这也会带来一个缺点,CenterPoint无法区分同类型且中心点接近的目标。CenterPoint可看作是二维CorneNet和CenterNet到三维空间的一个扩展。因此,了解CornerNet和CenterNet模型有利于加深对CenterPoint的理解。CenterPoint和CenterNet来源于同一个课题组的研究成果。在nuScenes数据集的3D检测和跟踪任务中,单阶段的CenterPoint模型的NDS为65.5,AMOTA为63.8。
1 源码与输入数据
接下来介绍的源码来源于mmdetection3d框架中的CenterPoint模型。mmdetection3d安装和调试验证可参考本专栏之前的博客【mmdetection3d】mmdetection3d安装详细步骤_Coding的叶子的博客-CSDN博客_mmdetection3d安装,里面有详细介绍。
数据采用的是nuScenes数据集,完整版和Mini版均可。NuScenes数据集详细介绍请参考博文:nuScenes数据集详细介绍_Coding的叶子的博客-CSDN博客_nuscence数据集。
2 mmdetection3d nuScenes数据处理与模型训练
mmdetection3d NuScenes处理过程请参考博文:mmdetection3d nuScenes (持续更新)_Coding的叶子的博客-CSDN博客。
完整版NuScenes处理命令为:
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
Mini版NuScenes处理命令为:
python tools/create_data.py nuscenes --version v1.0-mini --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
在进行程序研究或调试时,建议直接采用Mini 版NuScenes,下载速度较快且占用存储空间较小。mmdetection3d NuScenes数据集预处理完成之后,运行下述命令即可开始CenterPoint训练。
python tools/train.py configs/centerpoint/centerpoint_0075voxel_second_secfpn_4x8_cyclic_20e_nus.py
3 CenterPoint简介
CenterPoint模型的整体结构如下图所示,由最初的一阶段模型扩展为了两阶段模型。第二阶段负责对第一阶段的检测结果进行微调修正,与基于候选框的两阶段目标检测思想基本一致。这里重点介绍CenterPoint的第一个阶段,并且单阶段的CenterPoint可直接完成对三维目标的检测。
图1 CenterPoint模型结构
CenterPoint模型的关键数据和路径包含如下几个方面。带着这几个关键点来深入理解算法程序时效率会大大提高。
3.1 输入数据
输入数据来源于nuScenes的顶部激光雷达点云数据。点云数据包含了空间三维坐标x、y、z、雷达反射强度和雷达线束序号,共5个维度。线束序号取值范围0~31,即雷达的32线。数据包括10个类别,分属6个大类,如下所示。
[['car'],
['truck', 'construction_vehicle'],
['bus', 'trailer'],
['barrier'],
['motorcycle', 'bicycle'],
['pedestrian', 'traffic_cone']]
3.2 真实标签
真实标签主要包括中心偏移(dx、dy)、高度(z)、尺寸对数(log(size_x)、log(size_y)、log(size_z))、偏航角正弦值(sin(rot))、偏航角余弦值(cos(rot))、速度(vx、vy)和热力图(heatmap)。
每个热力图检测一个小类目标,即场景中相同类型目标的中心由同一个特征图来预测。因此,在计算热力图的真实标签时,同一类型多目标的高斯热力图可能会出现重叠,重叠时保留最大值。另一方面,在预测时,如果相邻的预测中心点其热力图峰值也相近,而后处理直接以最大取值作为最终预测结果。因此,CenterPoint无法区分同类型且中心点接近的目标。
3.3 模型推理
CenterPoint模型推理过程如下:
- 输入点云通过体素化和稀疏卷积特征得到256x180x180特征图,尺度为180x180,特征维度为256。
- 特征图通过Second主干网络和Neck拼接得到512x180x180维特征。
- 由于输入数据被分为了6个大类,且每个热力图仅预测一类目标,因而模型预测任务也被分为6个Head。每个Head分别预测相应类别目标的位置偏移(reg,2x180x180)、高度(height,1x180x180)、尺寸(dim,3x180x180)、偏航角(rot,2x180x180)、速度(vel,2x180x180)、热力图(heatmap,Kx180x180)。其中,热力图维度中的K表示每个大类下的子类别个数,进步确定一个热力图只能预测一个类别。
模型推理预测的结果与真实标签一一对应。热力图的损失函数为GaussianFocalLoss。其它预测值的损失函数为L1Loss,并且速度损失权重为0.2,其它权重均为1.0。
4 模型结构与代码详解
模型详细结构及推理过程请参考下一篇博客:【三维目标检测】CenterPoint(二)_Coding的叶子的博客-CSDN博客。