VoxelNext代码复现
代码链接:GitHub - dvlab-research/VoxelNeXt: VoxelNeXt: Fully Sparse VoxelNet for 3D Object Detection and Tracking (CVPR 2023)
原文地址:https://arxiv.org/abs/2303.11301
1.pytorch环境配置
我的环境:
- Ubuntu 18.04
- Python 3.8
- Pytorch 1.10.0
- CUDA 11.3
Conda虚拟环境配置:
conda create -n voxel_next python=3.8
配置Pytorch:
pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0
-f https://download.pytorch.org/whl/cu113/torch_stable.html
-t ./anaconda3/envs/voxel_next/lib/python3.8/site-packages
-i https://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn
测试Pytorch:
>>> import torch
>>> print(torch.__version__)
1.10.0+cu113
配置Spconv-2.x:
pip install spconv-cu113
-t ./anaconda3/envs/voxel_next/lib/python3.8/site-packages
-i https://pypi.mirrors.ustc.edu.cn/simple/
--trusted-host pypi.mirrors.ustc.edu.cn
测试Spconv:
python
>>>import spconv.pytorch as spconv
2.Python库配置
删掉requirements .txt中的 pytorch 和 torchvision,在终端运行:
pip install -r requirements.txt
-t ./anaconda3/envs/voxel_next/lib/python3.8/site-packages
-i https://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn
输入下面指令来,完成Pcdet的相关库配置
python setup.py develop
配置OpenPcdet(==0.6)
更改requirements.txt为以下内容:
numpy
llvmlite
numba
tensorboardX
easydict
pyyaml
scikit-image
tqdm
SharedArray
opencv-python
pyquaternion
kornia==0.5.8 #一定要是这个版本要不后面会报错
av2
opencv-contrib-python
输入下面命令来,完成Pcdet的配置
python setup.py develop
输出下图为配置成功:
nuScenes数据集配置
安装nuscnenes相关依赖
pip install nuscenes-devkit==1.0.5 -t ./anaconda3/envs/Openpcdet/lib/python3.8/site-packages
-i https://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn
pip install pycocotools -t ./anaconda3/envs/Openpcdet/lib/python3.8/site-packages
-i https://pypi.mirrors.ustc.edu.cn/simple/ --trusted-host pypi.mirrors.ustc.edu.cn
利用脚本配置nuscnenes数据集:
python -m pcdet.datasets.nuscenes.nuscenes_dataset \
--func create_nuscenes_infos \
--cfg_file tools/cfgs/dataset_configs/nuscenes_dataset.yaml \
--version v1.0-trainval (or v1.0-mini)
数据集存放格式:
原始格式
VoxelNext
├── data
│ ├── nuscenes
│ │ │── v1.0-trainval (or v1.0-mini)
│ │ │ │── samples # 对keyframes的,各种sensor的数据,包括了相机、毫米波雷达和激光雷达
│ │ │ │── sweeps # intermediate frames(过渡帧或中间帧)的sensor data
│ │ │ │── maps # 存放着所有的map files,包括栅格化后的png图片和向量化后的json文件
│ │ │ │── v1.0-trainval (or v1.0-mini) # 存放着所有meta data和annotations的JSON table
处理后的格式
VoxelNext
├── data
│ ├── nuscenes
│ │ │── v1.0-trainval (or v1.0-mini)
│ │ │ │── samples
│ │ │ │── sweeps
│ │ │ │── maps
│ │ │ │── v1.0-trainval (or v1.0-mini) # 存放着所有meta data和annotations的JSON table
│ │── gt_database_10sweeps_withvelo # mini版本里没有
│ │── nuscenes_infos_10sweeps_train.pkl
│ │── nuscenes_infos_10sweeps_val.pkl
│ │── nuscenes_dbinfos_10sweeps_withvelo.pkl
脚本运行结果如图所示
运行eval
下载预训练模型
nuScenes Detection Set mAP NDS Download
VoxelNeXt val 60.5 66.6 Pre-trained
这个对应的cfg文件是:
VoxelNeXt/tools/cfgs/nuscenes_models/cbgs_voxel0075_voxelnext.yaml
cd tools
bash scripts/dist_test.sh NUM_GPUS --cfg_file PATH_TO_CONFIG_FILE --ckpt PATH_TO_MODEL
#For example,
bash scripts/dist_test.sh 8 --cfg_file PATH_TO_CONFIG_FILE --ckpt PATH_TO_MODEL
H_TO_CONFIG_FILE --ckpt PATH_TO_MODEL
#For example,
bash scripts/dist_test.sh 1 --cfg_file ./cfgs/nuscenes_models/cbgs_voxel0075_voxelnext.yaml
--ckpt ../voxelnext_nuscenes_kernel1.pth
运行结果: