VoxelNext 3D论文复现
虽然网上有很多复现的方法,但是并没有基于docker的复现方法,我就在前人的基础上提供我的方法,感谢其他各位复现的前辈
以下是正文
硬件配置表如下
cpu:13700
gpu:4070ti super 16g
docker型号
nvidia/cuda 11.3.1-cudnn8-devel-ubuntu20.04
docker pull nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04
conda虚拟环境配置:
conda create -n voxel_next python=3.8
配置Pytorch:
conda activate voxel_next
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
测试Pytorch:
>>> import torch
>>> print(torch.__version__)
1.10.0+cu113
配置Spconv-2.x:
pip install spconv-cu113
测试Spconv:
python
>>>import spconv.pytorch as spconv
- Python库配置
删掉requirements .txt中的 pytorch 和 torchvision,在终端运行:
pip install -r requirements.txt
另外由于docker的特殊性,在装完opencv后需要如下操作
pip install opencv-python-headless
apt-get update
apt-get install ffmpeg libsm6 libxext6 -y
apt-get install libgl1
这些命令安装通常存在于本地计算机上的 cv2 依赖项,但可能会在您的 Docker 容器中丢失,从而导致问题。
配置OpenPcdet(==0.6)
numpy==1.23.5
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
pip install pycocotools
利用脚本配置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
注意!!!: 如使用nuscense_mini数据集,要修改VoxelNeXt-master/tools/cfgs/dataset_configs/nuscenes_dataset.yaml : VERSION: ‘v1.0-trainval’ 为 VERSION: ‘v1.0-mini’
运行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
train
bash scripts/dist_train.sh NUM_GPUS --cfg_file PATH_TO_CONFIG_FILE
##for example
bash scripts/dist_train.sh 1 --cfg_file cfgs/nuscenes_models/cbgs_voxel0075_voxelnext.yaml
注意,我在最后跑完模型报这个问题,是因为numpy在1.24后取消了float包,所以要用特定的1.23.5版本,但是前面的requirement我已经写好了,所以如果还出问题的同学可以看看这个
成功解决AttributeError: module 'numpy' has no attribute 'float'.
pip install numpy==1.23.5