下载链接:pointpainting下载
conda create -n pp python=3.7 # 创建python3.7环境
conda activate pp # 激活环境
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio=0.7.0 cudatoolkit=10.2 -c pytorch
OpenPCDet 是一个开源的 LiDAR 检测框架。 它支持许多流行的数据集,如 Kitti、Nuscenes 等。我们使用 OpenPCDet 作为 LiDAR 检测器。 要安装 OpenPCDet,请先安装它的requirements。 作者修改了 OpenPCDet 的某些部分(包括数据集加载器和训练配置)以支持绘制的 Kitti 数据集,您可以直接在./detector
中使用修改后的版本。 作者给出的运行命令为:
cd PointPainting/detector
python setup.py develop
但是openpcdet的依赖配置很复杂,尤其涉及点云卷积库spconv的部分,因此可以参考:
OpenPCDet安装及其3D检测算法实现
对于基于图像的语义分割,我们使用mmsegmentation (OpenLab V3+) 。 要安装此软件包,请运行以下命令您可能需要在安装 mmcv-full时更改地址以匹配您的 torch 和 CUDA 版本。
pip install terminaltables
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html
您可能会注意到./painting/mmseg
中有一个文件夹,因此您不必手动克隆其存储库。
注:(1)在下载的文件 ./painting/mmseg 中有一个文件夹,作者已经下载了,因此您不必手动克隆其存储库。
(2)对于mmcc-full的下载,有时pip 的安装有时会有问题,可以直接下载手动安装:
此工程还支持用于语义分割的分层多尺度注意力。 虽然我们已经在 ./painting/hma
下为您克隆了他们的 github 存储库(进行了一些修改以处理 kitti 数据集),但请参阅上面的github链接
以安装其依赖项。
目前我们只支持 Kitti 数据集,我们预计未来会更新对 Nuscenes 数据集的支持。 对于 Kitti 数据集,您可能需要如下所示管理数据集。 Kitti 数据集可以在这里找到。 您可能还需要下载 OpenPCDet 提供的planes。
detector
├── data
│ ├── kitti
│ │ │── ImageSets
│ │ │── training
│ │ │ ├── calib
│ │ │ ├── image_2
│ │ │ ├── image_3
│ │ │ ├── label_2
│ │ │ ├── velodyne
│ │ │ ├── planes
│ │ │ ├── painted_lidar (keep it empty)
│ │ │── kitti_infos_train.pkl
│ │ │── kitti_info_val.pkl
注:请注意,我们已经为您生成了 train 和 val 信息。 所以在kitti官网下载好对应数据集后,一定只能将 Kitti 原始数据放入上表相应的文件夹中。
进行painting
,需要依赖具体的语义分割模型
当您按如下所示管理数据时,绘画应该非常容易。 首先检查painting.py
脚本并选择您要使用的分割网络索引! 我们建议使用 DeepLab V3+,这是默认设置。 要使用 DeepLab V3+ 需要下载模型的权重,可以运行./painting
下的脚本get_deeplabv3plus_model.sh
。 然后你可以运行以下命令:
cd painting
python painting.py
painting 过程可能需要数小时,具体取决于您的计算设备性能。 完成绘画后,您可以继续进行 LiDAR Detector 培训!
此时,出现的报错(一):
这是因为MMCV的版本过高,只能兼容1.1.4-1.4.0之间的版本,可以选择1.4.0
下载后手动安装:
报错(二):
这是mmsegmentation部分缺少权重文件:
需要运行指令:
除了使用 DeepLab V3+,您还可以基于 HMA 生成分割分数。 如果你想使用 HMA,请在 ./painting
下运行以下命令。 它将下载所需的权重并处理整个分割过程。 同样,可能需要几个小时才能完成。
$ sh generate_hma_score.sh
分割分数将保存在./detector/data/kitti/training/score_hma/
下。 当你运行完脚本后,查看painting.py
脚本并设置SEG_NET = 2
。然后参考Painting进行后续步骤。
对于训练部分,您应该运行以下命令以基于绘制的点云开始训练。
cd detector
python -m pcdet.datasets.kitti.painted_kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/painted_kitti_dataset.yaml
对该命令执行的源码文件/home/ypx/ws/PointPainting_ws/detector/pcdet/datasets/kitti/painted_kitti_dataset.py
进行修改:
参考:TypeError: load() missing 1 required positional argument: ‘Loader‘
cd tools
python train.py --cfg_file cfgs/kitti_models/pointpillar_painted.yaml
使用经过训练的权重,您可以运行演示以根据绘制的点云推断结果。 我们使用 OpenPCDet 提供的演示脚本并稍微修改visualize_utils.py
。 要运行演示,请尝试执行以下命令:
pip install mayavi
cd tools
python demo.py --cfg_file cfgs/kitti_models/pointpillar_painted.yaml --ckpt ${your trained ckpt} --data_path ${painted .npy file} --ext .npy