一、安装环境
下面列出几个比较重要的版本:
显卡:4090&2080ti
CUDA=11.1
python=3.8
torch=1.9.0+cu111
torchvision=0.10.0+cu111
spconv-cu111=2.1.25
numpy=1.21.0
numba=0.48.0
mmdet=2.25.0
mmdet3d=0.17.1
mmcv-full=1.3.18
安装过程基本遵循MMDET3D,就是注意一些安装包版本:
二、环境搭建
1、配置mmdet3d环境
(1)创建虚拟环境(无需安装包,Anconda自动安装python):
conda create -n deepinteraction python=3.8
(2)激活环境
conda activate deepinteraction
(3)安装torch、torchvision
安装说明:推荐本地安装,否则pip会不小心安装成cpu版本。
①下载文件
链接:
百度云:找到以下文件夹,放着torch、torchvision安装包。
②安装
使用pip指令实现本地安装:
pip install torch-1.9.0+cu111-cp38-cp38-linux_x86_64.whl torchvision-0.10.0+cu111-cp38-cp38-linux_x86_64.whl
③测试
先输入python进入环境,输入以下指令:
import torch # 如正常则静默
torch.__version__ #查看torch版本
import torchvision
torchvision.__version__ #查看torchvision版本
torch.cuda.is_available() #正常的话返回“True”
a = torch.Tensor([1.]) # 如正常则静默
a.cuda() # 如正常则返回"tensor([ 1.], device='cuda:0')"
from torch.backends import cudnn # 如正常则静默
cudnn.is_acceptable(a.cuda()) # 如正常则返回 "True"
显示可以正常使用:
④官方下载网站
如果不想用百度云,下面是官方下载网站:
torch下载网站:https://download.pytorch.org/whl/torch_stable.html
torch 1.9.0+cu111:https://download.pytorch.org/whl/cu111/torch-1.9.0%2Bcu111-cp38-cp38-linux_x86_64.whl
torchvision 0.10.0+cu111:https://download.pytorch.org/whl/cu111/torchvision-0.10.0%2Bcu111-cp38-cp38-linux_x86_64.whl
(4)安装mmcv-full 1.3.18
①pip安装
pip install mmcv-full==1.3.18 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
这里不能只用pip install mmcv-full指令去安装,后面需要加上自己cuda信息和torch信息。
(5)安装mmsegmentation
安装说明:仅mmdet3d需要安装。
①pip 安装
pip install mmsegmentation==0.14.1
②本地安装
进入到/mmsegmentation-master文件夹下,执行:
pip install -r requirements.txt
python setup.py develop
(6)安装mmdet
安装说明:如果你想运行mmdet而非mmdet3d,推荐本地安装,方便后面跑数据
①pip安装mmdet
pip install mmdet==2.14.0
②本地安装mmdet
进入到/mmdetection文件夹下,执行:
pip install -r requirements.txt
python setup.py develop
(7)安装mmdet3d
①官方安装指令
git clone https://github.com/open-mmlab/mmdetection3d.git
cd mmdetection3d
git checkout v0.17.1
python setup.py install
②本地安装
进入到/mmdetection3d-master文件夹下
执行:
pip install -r requirements
python setup.py develop
(8)安装detectron2
用到了detectron2里面的Dynamic Conv模块,指令如下:
python -m pip install detectron2 -f \
https://dl.fbaipublicfiles.com/detectron2/wheels/cu111/torch1.9/index.html
2、下载并配置数据集
官网方法:
Dataset Preparation — MMDetection3D 1.2.0 documentationhttps://mmdetection3d.readthedocs.io/en/latest/user_guides/dataset_prepare.html通过将数据集解压到一个文件夹里,然后执行指令:
python tools/create_data.py nuscenes --root-path ./data/nuscenes --out-dir ./data/nuscenes --extra-tag nuscenes
转化后的结果如下:
3、 预训练权重
将预训练权重拷贝到pretrained/文件夹中:
三、Train & Test
# train with 8 GPUs
tools/dist_train.sh projects/configs/nuscenes/Fusion_0075_refactor.py 8
# test with 8 GPUs
tools/dist_test.sh projects/configs/nuscenes/Fusion_0075_refactor.py ${CHECKPOINT_FILE} 8 --eval=bbox
根据自己的需求,将GPU个数进行更改。
四、遇到问题
1、ModuleNotFoundError: No module named 'numba.errors'
解决方法:numba版本太高了,需要安装至0.48.0:
pip install numba==0.48.0
2、RuntimeError: Address already in use xxx
问题描述:端口已被占用
解决方案:
在/home/xd/xyy/DeepInteraction-main/tools/dist_train.sh文件中
可以指定终端指令的端口号,在运行终端指令后面加上--port 12345,端口号可以任意指定,五位数就可以。
3、KeyError: 'SwinTransformer is already registered in models'
解决方法:就是把/DeepInteraction-main/projects/mmdet3d_plugin/__init__.py中的from .swin_transformer import SwinTransformer注释了
参考:
FastBEV复现 Ubuntu_一只糊涂虫儿的博客-CSDN博客
4、from numba.errors import NumbaPerformanceWarning
解决方法:按照要求安装numba==1.48
5、AttributeError: 'ConfigDict' object has no attribute 'device'
解决方法:
在tools/train.py的meta['config'] = cfg.pretty_text
下面添加如下代码:
cfg.device='cuda'
参考:
6、 mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol: _Z27points_in_boxes_cpu_forwardN2at6TensorES0_S0_
解决方法:
pip install mmcv-full==1.3.18 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
这里不能只用pip install mmcv-full指令去安装,后面需要加上自己cuda信息和torch信息。