1、创建虚拟环境
conda create -n BevFusion python=3.8
conda activate BevFusionconda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch
查看显卡:nvidia -smi
查看CUDA版本 nvcc -v
安装gpu版本的torch:pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html
2、安装其它包
安装mmcv-full:pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
安装mmdet: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
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
3、更改配置文件
sudo gedit ~/.bashrc
把下面几句加入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
更新配置文件:soure ~/.bashrc
4、下载源代码
git clone https://github.com/mit-han-lab/bevfusion.git
现在git的版本是作者更新了
打开mmdet3d/ops/spconv/src/indice_cuda.cu,把4096改成256
打开根目录下的setup.py,保留"-gencode=arch=compute_86,code=sm_86"
编译
cd bevfusion
python setup.py develop
5、下载数据集
下载Map expansionv1.3,选Asia
下载trainval,有三百个G左右,如果内存不够可以下载mini版本,选Asia版本
下载test
将下载好的数据集组织成以下格式:
6、终端运行
数据预处理
cd bevfusion
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes#mini版本
python tools/create_data.py nuscenes --root-path ./data/nuscenes/ --version v1.0-mini --out-dir data/nuscenes/ --extra-tag nuscenes
数据集处理成以下格式
mini版本
下载预训练权重
./tools/download_pretrained.sh
多卡训练,-np 2是指我在两块显卡上分布式训练,可以根据自己需要改
torchpack dist-run -np 2 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 --run-dir output/bev_result/
# 多卡测试
torchpack dist-run -np 2 python tools/test.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml pretrained/bevfusion-det.pth --eval bbox
如果运行torchpack时,一直没有结果,不知道哪里报错,可以加上-v, torchpack dist-run -np 2 -v。pred是预测,gt是真实。
#可视化
torchpack dist-run -np 2 python tools/visualize.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml --checkpoint pretrained/bevfusion-det.pth --out-dir viz/fusion-det-pred --mode pred