BEVFormer 代码运行笔记
注意:根据你的cuda版本选择相应的版本,并注意它们之间的版本依赖关系。把Mini的压缩包都放在同一个目录,例如名为v1.0-mini,然后解压,解压的时候会有一些目录合并。把全量的压缩包都放在同一个目录,例如名为v1.0-full,然后解压,解压的时候会有一些目录合并。把v1.0-mini改名为v1.0-trainval,这样得到的目录是。需要下载TrainVal, Test和can_bus,得
1. 代码下载
git clone https://github.com/fundamentalvision/BEVFormer.git
2. 环境配置
使用conda创建环境
conda create -n bevformer python=3.8 -y
进入环境
conda activate bevformer
允许使用pip安装依赖库
export PIP_REQUIRE_VIRTUALENV=false
安装pytorch和torchvision
注意:根据你的cuda版本选择相应的版本,并注意它们之间的版本依赖关系。此处的例子适合cuda 11.3或11.4:
pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html
Install gcc>=5 in conda env (optional).
conda install -c omgarcia gcc-6 # gcc-6.2
安装mmcv-full
pip install mmcv-full==1.4.0
安装mmdet和mmseg
pip install mmdet==2.14.0
pip install mmsegmentation==0.14.1
安装mmdet3d的依赖库
pip install ninja tensorboard==2.13.0 nuscenes-devkit==1.1.10 scikit-image==0.19.0 lyft-dataset-sdk==0.0.8
pip install numpy==1.19.5 pandas==1.4.4 llvmlite==0.31.0 setuptools==59.5.0
安装mmdet3d
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
git checkout v0.17.1 # Other versions may not be compatible.
pip install -r requirements.txt
pip install .
安装Detectron2 and Timm.
pip install einops fvcore seaborn iopath==0.1.9 timm==0.6.13 typing-extensions==4.5.0 pylint ipython==8.12 numba==0.48.0 scikit-image==0.19.3 yapf==0.40.1
git clone https://github.com/facebookresearch/detectron2.git
cd detectron2
pip install .
3. 准备数据
3.1. 下载数据
下载地址 https://www.nuscenes.org/download
从这里点击下载


3.1.1. 下载Mini数据
需要下载Mini, Test和can_bus,得到如下文件
v1.0-mini.tgz
v1.0-test_blobs.tgz
v1.0-test_meta.tgz
can_bus.zip
3.1.2. 下载全量数据
需要下载TrainVal, Test和can_bus,得到如下文件
v1.0-trainval01_blobs.tgz
v1.0-trainval02_blobs.tgz
v1.0-trainval03_blobs.tgz
v1.0-trainval04_blobs.tgz
v1.0-trainval05_blobs.tgz
v1.0-trainval06_blobs.tgz
v1.0-trainval07_blobs.tgz
v1.0-trainval08_blobs.tgz
v1.0-trainval09_blobs.tgz
v1.0-trainval10_blobs.tgz
v1.0-trainval_meta.tgzv1.0-test_blobs.tgz
v1.0-test_meta.tgz
can_bus.zip
3.2. 组织数据
3.2.1. 组织Mini数据
把Mini的压缩包都放在同一个目录,例如名为v1.0-mini,然后解压,解压的时候会有一些目录合并。
把v1.0-mini改名为v1.0-trainval,这样得到的目录是
maps
samples
sweeps
v1.0-test
v1.0-trainval
can_bus
3.2.2. 组织全量数据
把全量的压缩包都放在同一个目录,例如名为v1.0-full,然后解压,解压的时候会有一些目录合并。
maps
samples
sweeps
v1.0-test
v1.0-trainval
can_bus
3.3. 预处理数据
python tools/create_data.py nuscenes --root-path [your path]/v1.0-mini/ --out-dir [your path]/v1.0-mini/ --extra-tag nuscenes --version v1.0 --canbus [your path]
4. 训练
打开文件projects/configs/bevformer/bevformer_base.py,修改data_root.
./tools/dist_train.sh ./projects/configs/bevformer/bevformer_base.py 8
没有改变其它参数,即:
samples_per_gpu=1 workers_per_gpu=4
显存占用情况如下:

5. 评测
./tools/dist_test.sh ./projects/configs/bevformer/bevformer_base.py ./path/to/ckpts.pth 8
参考文献
https://github.com/fundamentalvision/BEVFormer/blob/master/docs/install.md
https://github.com/fundamentalvision/BEVFormer/blob/master/docs/getting_started.md
更多推荐



所有评论(0)