3D点云目标检测:Centerformer训练waymo数据集

一、环境准备

项目地址:centerformer

1.0、基础环境

python == 3.8.0

torch == 1.9.1+cu111

waymo-open-dataset-tf-2-6-0 == 1.4.9

spconv ==1.2.1

其余按照requirement.txt里安装就行

bash 复制代码
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

由于我本人是在docker容器中训练的,里面的opencv-python和opencv-contrib-python需要替换成headless版本的。

直接pip 安装即可,

bash 复制代码
pip install opencv-python-headless opencv-contrib-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple


注意:centerformer项目作者提到除了spconv必须使用1.2.1版本,对其他包的版本没有特别需求,例如我在python==3.6和torch==1.6的环境下也能正常训练centerformer模型

spconv1.2.1的编译方法可以看我以前的文章Ubuntu安装spconv1.2.1,我在编译的时候只加了一句#include <iostream>就通过了。

编译完直接pip install 这个文件就可以了。

其他

protobuf版本不能太高,我一开始默认装的是4.24.2,降低到3.20.1版本就可以了

bash 复制代码
pip install protobuf==3.20.1

1.1、编译

bash setup.sh

执行setup前可以在下图所示位置处添加上--user

这样做的原因是可以将编译后的MultiScaleDeformableAttention添加到python环境变量中,这样这个包可以被直接import,(python3.6环境下不加也可以)

export PYTHONPATH

在~/.bashrc文件中添加 export PYTHONPATH="${PYTHONPATH}:PATH_TO_CENTERFORMER",PATH_TO_CENTERFORMER是你自己的centerformer文件夹的路径。

添加后执行source ~/.bashrc令其生效。

测试一下,可以看到centerformer的核心组建 det3d能被import。表明整个环境都搭建好了。

1.2、存在的问题

1)import tensorflow错误

2)import spconv错误

导入spconv时提示找不到libcuhash.so文件

通过find 命令查找这个文件

bash 复制代码
find / -name libcuhash.so

将该文件所在的路径加入环境变量中

bash 复制代码
vim ~/.bashrc

保存退出后执行 source使其生效。

bash 复制代码
source ~/.bashrc

重新导入测试

其他:我遇到的一般都是python库版本太高的问题。

二、数据集准备

waymo数据集存储格式时.tfrecord,一个文件包含200帧连续数据,分别放在tfrecord_training,tfrecord_validation,tfrecord_testing里

分别执行下面的命令解出点云和标签信息。

bash 复制代码
# train set 
CUDA_VISIBLE_DEVICES=-1 python det3d/datasets/waymo/waymo_converter.py --record_path 'WAYMO_DATASET_ROOT/tfrecord_training/*.tfrecord'  --root_path 'WAYMO_DATASET_ROOT/train/'

# validation set 
CUDA_VISIBLE_DEVICES=-1 python det3d/datasets/waymo/waymo_converter.py --record_path 'WAYMO_DATASET_ROOT/tfrecord_validation/*.tfrecord'  --root_path 'WAYMO_DATASET_ROOT/val/'

# testing set 
CUDA_VISIBLE_DEVICES=-1 python det3d/datasets/waymo/waymo_converter.py --record_path 'WAYMO_DATASET_ROOT/tfrecord_testing/*.tfrecord'  --root_path 'WAYMO_DATASET_ROOT/test/'

train解析后的结果,annos保存的是每一帧的gt信息,lidar保存的是每一帧的点云信息。

建立软连接

bash 复制代码
mkdir data && cd data
ln -s WAYMO_DATASET_ROOT Waymo

WAYMO_DATASET_ROOT是你自己的数据集的实际路径。

生成info信息

bash 复制代码
python tools/create_data.py waymo_data_prep --root_path=data/Waymo --split train --nsweeps=1

python tools/create_data.py waymo_data_prep --root_path=data/Waymo --split val --nsweeps=1

python tools/create_data.py waymo_data_prep --root_path=data/Waymo --split test --nsweeps=1

最终结果

三、训练

4卡

bash 复制代码
python -m torch.distributed.launch --nproc_per_node=4 ./tools/train.py configs/waymo/voxelnet/waymo_centerformer.py

单卡

bash 复制代码
python tools/train.py configs/waymo/voxelnet/waymo_centerformer.py

训练输出:

四、结果

模型训练结束后在work_dir/waymo_centerformer目录下可以看到保存的结果

下一步计算评估指标AP和APH,按照centerformer官方代码的指导,执行以下操作:

bash 复制代码
python -m torch.distributed.launch --nproc_per_node=4 ./tools/dist_test.py CONFIG_PATH --work_dir work_dirs/CONFIG_NAME --checkpoint work_dirs/CONFIG_NAME/latest.pth 

运行完后在输出目录里生成detection_pred.bin文件。

得到模型精度指标有两种方式,一种是提交到waymo官方网站进行评估,第二种是在本地进行评估。我这里用的是第二种方法。

首先需要将gt信息也转换成.bin文件,执行下面的操作

bash 复制代码
python det3d/datasets/waymo/waymo_common.py --info_path data/Waymo/infos_val_01sweeps_filter_zero_gt.pkl --result_path data/Waymo/ --gt 

运行完后会在data/waymo文件夹下生成gt_preds.bin文件。

下面需要用到waymo官方提供的工具来计算精度指标,github地址,clone后切换到r1.3分支。

按照这里的教程编译精度评价工具.

先准备好编译所需的基础环境,这里主要是bazel这个工具。

然后执行语句,编译时间特别长,我差不多用了一个多小时,如何能够翻墙应该会很快,编译正确的截图忘记保存了。

bash 复制代码
bazel test waymo_open_dataset/metrics:all

然后执行

bash 复制代码
bazel build waymo_open_dataset/metrics/tools/compute_detection_metrics_main

编译正确的输出如下图,bazel-bin/waymo_open_dataset/metrics/tools/compute_detection_metrics_main就是编译得到的检测精度评估工具。

执行:

bash 复制代码
bazel-bin/waymo_open_dataset/metrics/tools/compute_detection_metrics_main detection_pred.bin gt_preds.bin 

最终结果如下:

相关推荐
极智视界9 个月前
3D目标检测跟踪 | 基于kitti+waymo数据集的自动驾驶场景的3D目标检测+跟踪渲染可视化
目标检测·目标跟踪·自动驾驶·3d目标检测·kitti·waymo·渲染可视化
CV511 年前
CV计算机视觉每日开源代码Paper with code速览-2023.11.1
计算机视觉·数字人·多模态·点云目标检测·vit·伪装目标检测·医学图像分割