PMF
Perception-aware multi-sensor fusion for 3D LiDAR semantic segmentation (ICCV 2021)
Install / Use
/learn @ICEORY/PMFREADME
Perception-Aware Multi-Sensor Fusion for 3D LiDAR Semantic Segmentation (ICCV 2021)
[中文|EN]
概述
本工作主要探索一种高效的多传感器(激光雷达和摄像头)融合点云语义分割方法。现有的多传感器融合方法主要将点云投影到图像上,获取对应的像素位置之后,将对应位置的图像信息投影回点云空间进行特征融合。但是,这种方式下并不能很好的利用图像丰富的视觉感知特征(例如形状、纹理等)。因此,我们尝试探索一种在RGB图像空间进行特征融合的方式,提出了一个基于视觉感知的多传感器融合方法(PMF)。详细内容可以查看我们的公开论文。

更新
我们对PMF进行了拓展,进一步提升该方法的效率和精度,同时提供了更多的分析结果。未来我们将公开相关的预训练模型以及代码。(如图为EPMF-ResNet34结果)

主要实验结果
Leader board of SensatUrban@ICCV2021

更多实验结果
我们在持续探索PMF框架的潜力,包括探索更大的模型、更好的ImageNet预训练模型、其他的数据集等。我们的实验结果证明了,PMF框架是易于拓展的,并且其性能可以通过使用更好的主干网络而实现提升。详细的说明可以查看文件。
| 方法 | 数据集 | mIoU (%) | | --------------- | ------------------------------------------------------------ | ------------- | | PMF-ResNet34 | SemanticKITTI Validation Set | 63.9 | | PMF-ResNet34 | nuScenes Validation Set | 76.9 | | PMF-ResNet50 | nuScenes Validation Set | 79.4 | | PMF48-ResNet101 | SensatUrban Test Set (ICCV2021 Competition) | 66.2 (排名 5) |
使用说明
注:代码中涉及到包括数据集在内的各种路径配置,请根据自己的实际路径进行修改
代码结构
|--- pc_processor/ 点云处理的Python包
|--- checkpoint/ 生成实验结果目录
|--- dataset/ 数据集处理
|--- layers/ 常用网络层
|--- loss/ 损失函数
|--- metrices/ 模型性能指标函数
|--- models/ 网络模型
|--- postproc/ 后处理,主要是KNN
|--- utils/ 其他函数
|--- tasks/ 实验任务
|--- pmf/ PMF 训练源代码
|--- pmf_eval_nuscenes/ PMF 模型在nuScenes评估代码
|--- testset_eval/ 合并PMF以及salsanext结果并在nuScenes测试集上评估
|--- xxx.py PMF 模型在nuScenes评估代码
|--- pmf_eval_semantickitti/ PMF 在SemanticKITTI valset上评估代码
|--- salsanext/ SalsaNext 训练代码,基于官方公开代码进行修改
|--- salsanext_eval_nuscenes/ SalsaNext 在nuScenes 数据集上评估代码
环境配置
- PMF/EPMF的环境配置相对简单,主要依赖 pytorch1.13
conda create -n pmf python=3.8
conda activate pmf
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116
pip install -r requirements.txt
模型训练
训练任务代码目录结构
|--- pmf/
|--- config_server_kitti.yaml SemanticKITTI数据集训练的配置脚本
|--- config_server_nus.yaml nuScenes数据集训练的配置脚本
|--- main.py 主函数
|--- trainer.py 训练代码
|--- option.py 配置解析代码
|--- run.sh 执行脚本,需要 chmod+x 赋予可执行权限
步骤
- 进入
tasks/pmf目录,修改配置文件config_server_kitti.yaml中数据集路径data_root为实际数据集路径。如果有需要可以修改gpu,batch_size等参数 - 修改
run.sh确保nproc_per_node的数值与yaml文件中配置的gpu数量一致 - 运行如下指令执行训练脚本
./run.sh
# 或者 bash run.sh
- 执行成功之后会在
PMF/experiments/PMF-SemanticKitti路径下自动生成实验日志文件,目录结构如下:
|--- log_dataset_network_xxxx/
|--- checkpoint/ 训练断点文件以及最佳模型参数
|--- code/ 代码备份
|--- log/ 控制台输出日志以及配置文件副本
|--- events.out.tfevents.xxx tensorboard文件
控制台输出内容如下,其中最后的输出时间为实验预估时间

模型推理
模型推理代码目录结构
|--- pmf_eval_semantickitti/ SemanticKITTI评估代码
|--- config_server_kitti.yaml 配置脚本
|--- infer.py 推理脚本
|--- option.py 配置解析脚本
步骤
- 进入
tasks/pmf_eval_semantickitti目录,修改配置文件config_server_kitti.yaml中数据集路径data_root为实际数据集路径。修改pretrained_path指向训练生成的日志文件夹目录。 - 运行如下命令执行脚本
python infer.py config_server_kitti.yaml
- 运行成功之后,会在训练模型所在目录下生成评估结果日志文件,文件夹目录结构如下:
|--- PMF/experiments/PMF-SemanticKitti/log_xxxx/ 训练结果路径
|--- Eval_xxxxx/ 评估结果路径
|--- code/ 代码备份
|--- log/ 控制台日志文件
|--- pred/ 用于提交评估的文件
预训练模型
下一个工作
- 后续工作请关注REO,基于全局交叉注意力机制的传感器融合方式,在输入层面摒弃了传感器标定信息,让模型学习点云与图像以及到GT坐标系下的空间关系,一方面可以对于车载传感器抖动更加鲁棒,一方面在速度也有明显提升,openoccupancy-nuscenes数据集上±51.2米范围0.2栅格大小,语义占据预测推理耗时70多毫秒(不采用TensorRT加速,3090单卡单帧)
引用
@InProceedings{Zhuang_2021_ICCV,
author = {Zhuang, Zhuangwei and Li, Rong and Jia, Kui and Wang, Qicheng and Li, Yuanqing and Tan, Mingkui},
title = {Perception-Aware Multi-Sensor Fusion for 3D LiDAR Semantic Segmentation},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2021},
pages = {16280-16290}
}
@article{tan2024epmf,
title={EPMF: Efficient Perception-Aware Multi-Sensor Fusion for 3D Semantic Segmentation},
author={Tan, Mingkui and Zhuang, Zhuangwei and Chen, Sitao and Li, Rong and Jia, Kui and Wang, Qicheng and Li, Yuanqing},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
year={2024},
publisher={IEEE}
}
Related Skills
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
