CUDA环境
首先我们需要打上对应版本的显卡驱动:
接下来下载CUDA包和CUDNN包:
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run
sudo sh cuda_11.6.2_510.47.03_linux.run
wget https://developer.nvidia.com/compute/cudnn/secure/8.4.0/local_installers/11.6/cudnn-local-repo-ubuntu2004-8.4.0.27_1.0-1_amd64.deb
sudo apt install ./cudnn-local-repo-ubuntu2004-8.4.0.27_1.0-1_amd64.deb
打开 ~/.bashrc文件,添加以下内容到最后:
export CUDA_HOME=/usr/local/cuda-11.6
export PATH="/usr/local/cuda-11.6/bin:$PATH"
export LD_LIBRARY_PATH="/usr/lcoal/cuda-11.6/lib64:$LD_LIBRARY_PATH"
前置环境(可选)
需要安装openmpi(这个我也不确定需不需要,小伙伴们可以试试)
下载openmpi安装包:
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.4.tar.gz
解压安装
cd openmpi-4.1.4
./configure --prefix=/usr/local/openmpi
make -j8
sudo make install
~/.bashrc文件里添加环境变量:
MPI_HOME=/usr/local/openmpi
OMPI_MCA_opal_cuda_support=true
export PATH=${MPI_HOME}/bin:$PATH
export LD_LIBRARY_PATH=${MPI_HOME}/lib:$LD_LIBRARY_PATH
export MANPATH=${MPI_HOME}/share/man:$MANPATH
测试安装是否成功
cd openmpi-x.x.x/examples
make
mpirun -np 4 hello_c
conda安装
找一个Anaconda或者miniconda下载安装:
bash Anaconda3-2021.05-Linux-x86_64.sh
正式环境配置
OK,准备完毕,开始正式配环境
首先创建一个虚拟环境:
conda create -n your_env_name python=3.8
conda activate your_env_name
接下来建议完全按照我的指令来,里面的版本问题我已经踩过坑了
pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
pip install mmdet==2.20.0
conda install openmpi
conda install mpi4py
pip install Pillow==8.4.0
pip install tqdm
pip install torchpack
pip install nuscenes-devkit
pip install ninja
pip install numpy==1.19
pip install numba==0.48.0
pip install shapely==1.8.0
参数修改
贴上MIT版本BEV FUSION的地址,clone一下代码:
git clone https://github.com/mit-han-lab/bevfusion.git
以下两处需要改!
首先是这个文件,里面的4096都改成256,否则会爆显存。
mmdet3d/ops/spconv/src/indice_cuda.cu
接下来是 项目根目录的setup.py,需要把显卡算力改成自己对应的,其余的注释掉。例如我的3080是86(具体的算力对应大家可以查查)
"-gencode=arch=compute_86,code=sm_86"
数据集准备
需要下载nuscenes数据集,大概600多GB,解压之后,把train数据集(包括地图扩展包)放到项目文件夹的data/nuscenes目录下,如下红框所示:
回到项目根目录,运行数据集生成脚本,大概跑1小时,最后会变成上图的样子:
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
运行代码
首先执行配置脚本:
python setup.py develop
接下来下载预训练参数:
./tools/download_pretrained.sh
最后执行训练指令,原文readme里-np后面是8,这里要改成1(因为我们PC上跑是单GPU),不然会卡住不动
torchpack dist-run -np 1 python tools/train.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages-pretrained.pth --load_from pretrained/lidar-only-det.pth