上周 MMDetection3D v1.1.1 正式发布!在新版本 1.1 中我们相继支持了 3 个 LiDAR Segmentation 方法与 2 个最新的数据增强方法。本次更新,基于上一版本支持的方法,我们在 SemanticKITTI 数据集上构建了一个全面的 LiDAR Semantic Segmentation Benchmark,为社区提供强力的 Baseline 并分享相关经验供大家进一步深入研究!
LiDAR Semantic Segmentation
该图由 MMDetection3D 可视化工具生成
MMDetection3D 链接:
https://github.com/open-mmlab/mmdetection3d
(欢迎体验,文末点击阅读原文可直达)
功能概览
在之前的版本中,我们就对室内场景的点云语义分割提供了一波支持,详见推文。虽然咱们名叫 MMDetection3D ,但我们能做的不仅限于检测,我们致力于集成最经典和最前沿的三维空间感知算法。在新版本 1.1 的有关更新中,我们对自动驾驶场景的激光雷达语义分割做了一次全面的支持,下图列举了当前版本 MMDetection3D 所支持的有关 LiDAR Segmentation 的算法,数据集和相应工具。
MMDetection3D 1.1 新特性
LiDAR Segmentation 相关支持功能
在 LiDAR Segmentation 领域,不乏涌现出优秀的工作与模型。然而这一领域一直缺乏一个能够支持各类模型公平比较的开源项目,导致很多工作难以复现出最新的 SOTA 结果。了解到社区的呼声之后,我们致力于打造一个全面的 LiDAR Segmentation 算法框架以弥补现存的不足并为领域发展提供持续支持。
相关工作介绍
与 3D 检测类似,在 3D 语义分割任务中,根据不同的三维空间表示,模型可以分为以下几类:
-
基于 点 (Raw Point) 的方法,如 PointNet++[6],KPConv[7],然而单纯基于点的方法在大范围场景下的分割效果不如以下其余类型;
基于 Raw Point 的 3D 语义分割方法[7]
-
基于 投影 (Projection) 的方法,主要包括以下两个类别:
-
基于距离视图 (Range View) 投影的方法,如 RangeNet++[5],SqueezeSegV3[8] 和 RangeFormer[22];
基于 Range View 投影的 3D 语义分割方法[8]
-
基于鸟瞰图 (Bird's Eye View) 投影的方法,如 PolarNet[11];
基于 Bird's Eye View 投影的 3D 语义分割方法[11]
以上两类方法都是先将 3D 场景投影成 2D 伪图,从而可以使用 2D 的网络和标准的 2D 卷积 / TransFormer,优点是推理速度快,易于部署;
-
基于 体素 (Voxel) 的方法,如 MinkUNet[2],SPVCNN[1],Cylinder3D[12] 和 SphereFormer[15],这类算法是先将点云进行体素化,然后使用稀疏 3D 卷积构建模型,优点是推理精度高,本次主要支持了此类型方法;
基于 Voxel 的 3D 语义分割方法[12]
-
除以上纯激光雷达的模型之外,近期还涌现了一批 多模态融合 (Multi-Modality Fusion) 的方法,如 Range View 与 Bird's Eye View 两个视角融合的 AMVNet[10],Range-Point-Voxel 三表征融合的 RPVNet[9],以及融合了 2D 图像表征的 PMF[13] 等等。
基于 Multi-Modality Fusion 的 3D 语义分割方法[10]
-
今年火热的纯视觉占用网格预测模型也可以做激光雷达的语义分割任务,比如我们此次支持的模型 TPVFormer[3]。
基于 Camera 的 3D 语义分割方法[3]
主流数据集介绍
在激光雷达语义分割任务中,最常使用的数据集是 SemanticKITTI[17] ,此外 nuScenes[16] 与 Waymo Open[18] 的 LiDAR Segmentation 任务也是热门的数据集,本次 MMDetection3D 主要支持了 SemanticKITTI 数据集,此外也在 TPVFormer 的 Projects 中支持了 nuScenes Lidarseg 数据集,Waymo Open Lidarseg 也提上日程。我们在这简单介绍如何上手 SemanticKITTI :
SemanticKITTI 样本示例
SemanticKITTI 是激光雷达语义分割任务中最为广泛使用的数据集之一,包含在 19 个语义类别(推荐在 OpenDataLab 中下载)。数据集结构为:
semantickitti
└── sequences
├── 00
│ ├── labels
│ │ ├── 000000.label
│ │ ├── ..
│ │ └── 004540.bin
│ └── velodyne
│ ├── 000000.bin
│ ├── ..
│ └── 004540.bin
├── 01
├── ..
└── 21
sequences 中包含 22 个序列,其中 [0-7] , [9-10] 作为训练集(约 19k 训练样本),序列 8 作为验证集(约 4k 验证样本),[11-21] 作为测试集 (约 20k 测试样本)。其中每个序列包含 velodyne 和 labels 两个文件夹分别存放激光雷达点云数据和分割标注 (其中高 16 位存放实例分割标注,低 16 位存放语义分割标注)。
在 MMDetection3D 中,我们支持生成数据集信息的脚本,用于训练和测试。首先将 semantickitti 链接到 data/semantickitti 路径下,之后运行:
python ./tools/create\_data.py semantickitti --root-path ./data/semantickitti --out-dir ./data/semantickitti --extra-tag semantickitti
运行后:
semantickitti
├── semantickitti_infos_test.pkl
├── semantickitti_infos_train.pkl
├── semantickitti_infos_val.pkl
└── sequences
├── 00
├── ..
└── 21
现在就可以开始尝试 SemanticKITTI 的训练与测试了!
LiDAR Semantic Segmentation Benchmark
由于目前 LiDAR Segmentation 研究领域内的模型往往添加了不同的训练 trick ,缺乏广泛使用的 baseline,导致模型性能比较并不公平。为此,在本次更新中,我们重点构建了一个全面的 LiDAR Semantic Segmentation Benchmark 并提供一个强大的 Baseline 供社区进一步研究。
在我们的训练配置下, CVPR 2019 的模型在 Semantic KITTI 的验证集的 mIoU 可以比肩甚至超越 CVPR 2023 最新的模型! 获得如此提升离不开两种数据增强的方法即 PolarMix[21] 与 LaserMix[4]。下图是它们的可视化,更多细节可查看:https://github.com/open-mmlab/mmdetection3d/blob/3fa0e8bbe63d4febb6b546df158e9746e76305ca/mmdet3d/datasets/transforms/transforms\_3d.py#L2373
PolarMix 可视化,蓝色为样本 1,粉色为样本 2
LaserMix 可视化,蓝色为样本 1,粉色为样本 2
在一般的点云语义分割训练配置的基础上,我们在 train_pipeline 中,增加了随机选择 PolarMix 和 LaserMix 两种配置,如下所示:
train_pipeline = [
dict(type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4),
dict(
type='LoadAnnotations3D',
with_bbox_3d=False,
with_label_3d=False,
with_seg_3d=True,
seg_3d_dtype='np.int32',
seg_offset=2**16,
dataset_type='semantickitti'),
dict(type='PointSegClassMapping'),
dict(
type='RandomChoice',
transforms=[
[
dict(
type='LaserMix',
num_areas=[3, 4, 5, 6],
pitch_angles=[-25, 3],
...
],
[
dict(
type='PolarMix',
instance_classes=[0, 1, 2, 3, 4, 5, 6, 7],
swap_ratio=0.5,
rotate_paste_ratio=1.0,
...
],
],
prob=[0.5, 0.5]),
...
]
再加上亿点点调参,我们的 Lidar Semantic Segmentation Benchmark 相对于 原论文 / 原复现 的结果都有明显提升,结果如下表:
Note*: Cylinder3D 官方代码库模型缺少论文中的 Point-wise Refinement Module ,实际训练得到的模型精度比论文中的低,MinkUNetv2 参照 PCSeg[14] 对 MinkUNet 做了改进。
更多详情可参看我们的具体配置文件,也希望感兴趣的小伙伴可以在这套配置上继续深入研究。
稀疏卷积哪家强?
基于体素的方法绕不开的网络关键模块——稀疏卷积,目前我们在 MMDetection3D 中支持了三种不同的稀疏卷积后端,分别是 Minkowski Engine ,Spconv 和 Torchsparse 。
MMDetection3D 实现的 MinkUNet 支持一键切换稀疏卷积后端,以下展示将默认的 Torchsparse 稀疏卷积后端切换为 Spconv 后端的 config 文件:
_base_ = [
'./minkunet34_w32_torchsparse_8xb2-laser-polar-mix-3x_semantickitti.py'
]
model = dict(
data_preprocessor=dict(batch_first=True), # 注意不同稀疏卷积后端的batch_size所在维度
backbone=dict(sparseconv_backend='spconv'))
我们还提供了它们的简易接口和基本模块,在这基础上,我们比较了各个稀疏卷积构建的 MinkUNet34 的性能。如下表所示:
Note*: Spconv v2.3.6 推理时开启 FP16 存在 bug
可以看到在 MinkUNet34 上 Spconv 稀疏卷积后端在开启混合精度训练的情况下,训练速度是最快的。推理阶段,Torchsparse 开启 FP16 后的推理速度最快。开启混合精度训练,可以有效降低显存。在精度方面,不同卷积后端差异并不大。
Occupancy Network 是未来吗?
Occupancy Network —— TPVFormer[3]
小彩蛋 :在这次更新中,我们还以 project 的形式支持了 TPVFormer,一种纯视觉的激光雷达语义分割算法。对纯视觉的点云分割以及占有网格预测感兴趣的朋友们可以率先体验和保持关注!我们也会对这一方向进行持续推进。
该算法在近年火热的 BEV 系列算法的基础上,通过预测三维空间的三面投影来表达占有网格预测。算法通过点云语义分割标注的监督来训练,而在推理的时候只需要纯视觉的输入。算法建立了 3D Semantic Occupancy Prediction 任务的学术基准,并在 nuScenes Lidarseg 数据集上达到了 69.4% 的 test mIoU 。这一结果与基于激光雷达的算法相当。MMDetection3D 后续还将持续关注和支持 Occupancy Prediction 相关的 benchmark / challenge / 新算法。
总结
以上,是 MMDetection3D 1.1 中有关 LiDAR Segmentation 的主要更新。在此,特别感谢社区小伙伴对我们的贡献。如果您对 LiDAR Segmentation 和 3D Semantic Occupancy Prediction 感兴趣的话,请持续关注我们的开发动态。在后续开发中, MMDetection3D 会支持更多相关的数据集和算法!最后希望大家为我们 MMDetection3D 点个 star,有任何疑问欢迎在社区中提出。
参考文献
[1] H. Tang, Z. Liu, S. Zhao, Y. Lin, J. Lin, H. Wang, and S. Han, “Searching efficient 3d architectures with sparse point-voxel convolution,” in European Conference on Computer Vision (ECCV), 2020.
[2] C. Choy, J. Gwak, and S. Savarese, “4d spatio-temporal convnets: Minkowski convolutional neural networks,” in IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pp. 3075–3084, 2019.
[3] Y. Huang, W. Zheng, Y. Zhang, J. Zhou, and J. Lu, “Tri-perspective view for vision-based 3d semantic occupancy prediction,” in IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pp. 9223–9232, 2023.
[4] L. Kong, J. Ren, L. Pan, and Z. Liu, “Lasermix for semi-supervised lidar semantic segmentation,” in IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pp. 21705–21715, 2023.
[5] A. Milioto, I. Vizzo, J. Behley, and C. Stachniss, “Rangenet++: Fast and accurate lidar semantic segmentation,” in IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), pp. 4213–4220, 2019.
[6] C. R. Qi, L. Yi, H. Su, and L. J. Guibas, “Pointnet++: Deep hierarchical feature learning on point sets in a metric space,” Advances in Neural Information Processing Systems (NeurIPS), vol. 30, 2017.
[7] H. Thomas, C. R. Qi, J.-E. Deschaud, B. Marcotegui, F. Goulette, and L. J. Guibas, “Kpconv: Flexible and deformable convolution for point clouds,” in IEEE/CVF International Conference on Computer Vision (ICCV), pp. 6411–6420, 2019.
[8] C. Xu, B. Wu, Z. Wang, W. Zhan, P. Vajda, K. Keutzer, and M. Tomizuka, “Squeezesegv3: Spatially-adaptive convolution for efficient point-cloud segmentation,” in European Conference on Computer Vision (ECCV), pp. 1–19, 2020.
[9] J. Xu, R. Zhang, J. Dou, Y. Zhu, J. Sun, and S. Pu, “Rpvnet: A deep and efficient range-point-voxel fusion network for lidar point cloud segmentation,” in IEEE/CVF International Conference on Computer Vision (ICCV), pp. 16024–16033, 2021.
[10] V. E. Liong, T. N. Nguyen, S. Widjaja, D. Sharma, Z. J. Chong. "Amvnet: Assertion-based multi-view fusion network for lidar semantic segmentation." arXiv preprint arXiv:2012.04934. 2020.
[11] Y. Zhang, Z. Zhou, P. David, X. Yue, Z. Xi, B. Gong, and H. Foroosh, “Polarnet: An improved grid representation for online lidar point clouds semantic segmentation,” in in IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pp. 9601–9610, 2020.
[12] X. Zhu, H. Zhou, T. Wang, F. Hong, Y. Ma, W. Li, H. Li, and D. Lin, “Cylindrical and asymmetrical 3d convolution networks for lidar segmentation,” in IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2021.
[13] Z. Zhuang, R. Li, K. Jia, Q. Wang, Y. Li, and M. Tan, “Perception-aware multi-sensor fusion for 3d lidar semantic segmentation,” in IEEE/CVF International Conference on Computer Vision (ICCV), pp. 16280–16290, 2021.
[14] K. L. C. R. H. Y. S. B. L. Y. Liu Youquan, Bai Yeqi, “Pcseg: An open source point cloud segmentation codebase,” https://github.com/PJLab-ADG/PCSeg, 2023.
[15] X. Lai, Y. Chen, F. Lu, J. Liu, and J. Jia, “Spherical transformer for lidar-based 3d recognition,” in IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), pp. 17545–17555, 2023.
[16] H. Caesar, V. Bankiti, A. H. Lang, S. Vora, V. E. Liong, Q. Xu, A. Krishnan, Y. Pan, G. Baldan, and O. Beijbom, “nuScenes: A multimodal dataset for autonomous driving,” in IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2020, pp. 11 621–11 631.
[17] J. Behley, M. Garbade, A. Milioto, J. Quenzel, S. Behnke, C. Stachniss, and J. Gall, “SemanticKITTI: A Dataset for Semantic Scene Understanding of LiDAR Sequences,” in IEEE/CVF International Conference on Computer Vision (ICCV), 2019.
[18] P. Sun, H. Kretzschmar, X. Dotiwalla, A. Chouard, V. Patnaik, P. Tsui, J. Guo, Y. Zhou, Y. Chai, B. Caine et al., “Scalability in perception for autonomous driving: Waymo open dataset,” in IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), 2020, pp. 2446–2454.
[19] S. Contributors, “Spconv: Spatially sparse convolution library,” https://github.com/traveller59/spconv, 2022.
[20] H. Tang, Z. Liu, X. Li, Y. Lin, and S. Han, “TorchSparse: Efficient Point Cloud Inference Engine,” in Conference on Machine Learning and Systems (MLSys), 2022.
[21] A. Xiao, J. Huang, D. Guan, K. Cui, S. Lu, and L. Shao, “Polarmix: A general data augmentation technique for lidar point clouds,” in Advances in Neural Information Processing Systems (NeurIPS), 2022.
[22] L. Kong, Y. Liu, R. Chen, Y. Ma, X. Zhu, Y. Li, Y. Hou, Y. Qiao and Z. Liu. “Rethinking Range View Representation for LiDAR Segmentation.” arXiv preprint arXiv:2303.05367, 2023.