目录
前言
没有GPU的用户可以跳过了!1
mmdet3d官方的教程对于mmdet3d的依赖库的版本描述存在一定的问题,经过多日痛苦的环境配置,对mmdet3d的安装流程做了一个总结。当然,经常配置环境的朋友都知道,这是一个玄学问题,所以该教程也难以覆盖到配置过程中的各种问题,本教程仅可作为参考!
(一) Windows平台
mmdet3d官方文档中说明,对于Windows平台是实验性支持,经过实测,PointPillar网络+KITTI数据集的配置成功在Windows11系统中完成运行和推理。但是个人感觉,对于深度学习,相同的硬件条件下,Windows平台的速度要低于Linux(以Ubuntu进行实测)的速度,个人更推荐在Linux系统中进行配置。2
1. 虚拟环境创建
首先你需要有conda(默认你已经会安装Anaconda,Miniconda等Conda包管理器并且完成了安装和配置,也知道下载慢可以通过更换镜像或者科学上网解决),然后打开Anaconda Powershell Prompt,创建一个Python版本为3.9的环境3。现成的安装指令如下。
conda create -n mmdet3d python=3.9 -c conda-forge -y
随后激活该环境:
conda activate mmdet3d
2. Pytorch安装
在进行这一步之前,首先需要考虑自己的需求,如果要复现别人的论文,根据论文提供的代码的需求进行配置,如果是个人学习,可以选择较新的稳定版本,以获得一些新特性带来的运行速度的提升。
-
进入Pytorch官网,下拉找到如下表格:
-
如果是安装最新版本,选择Conda(此处推荐Conda安装,可以直接同步安装cuda依赖,降低版本冲突的可能),选择需要的CUDA版本,复制对应的指令,进入1.中打开的命令行窗口中,输入,回车。这条指令总会安装最新的版本,当然CUDA版本可能会不支持,要灵活变通。截止写稿时间,安装的是Pytorch 2.5.0版本。
conda install pytorch torchvision pytorch-cuda=12.1 -c pytorch -c nvidia -y
-
如果选择安装先前版本,找到表格上方install previous version of Pytorch,点击进入,选择对应的平台和版本。这里选择如下:
Conda; Linux or Windows; CUDA12.1; Pytorch 2.3.1
安装指令:
conda install pytorch==2.3.1 torchvision==0.18.1 pytorch-cuda=12.1 -c pytorch -c nvidia -y
3. C++构建工具安装
C++构建工具是为了后续和NVCC交叉编译mmdet3d的库。根据微软提供的Microsoft Visual C++ 编译器版本控制信息,Visual Studio 2022 版本 17.10对应的版本号_MSC_VER
值为1940,大于该版本的VS将与CUDA的host_config.h头文件中#if _MSC_VER < 1910 || _MSC_VER >= 1940
宏定义冲突,导致编译错误。
- 在引导程序下载页面,下载小于等于17.10版本且仍在支持周期内的构建工具的Build Tools,安装C++构建工具。
- 进入安装界面,选择
使用C++的桌面开发
,勾选如下可选项,点击安装,等待安装完成。
- 将
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.40.33807\bin\Hostx64\x64
添加到系统PATH环境变量中,具体路径需要根据安装目录进行调整。 - 打开终端,输入
cl.exe
回车,识别到cl,说明环境变量配置正确。
4. CUDA安装
这里安装CUDA是由于后续的包需要自行编译,需要用到NVCC编译器。
-
进入CUDA下载页面,如果是最新版本,直接选择对应平台进行下载。这里的配置,CUDA版本为12.1,需要找到先前版本,选择对应的Windows平台。这里提供
Windows11 CUDA12.1
的版本链接。
-
选择自定义安装,安装如图所示组件,程序将自动添加环境变量。
-
打开终端,输入nvcc -V,出现如下提示,CUDA安装完成。
5. openmmlab基础系列安装
官方给出的安装教程中,由于不同库更新的频率不同,导致出现了版本冲突,经过实测,合理的安装指令为:
pip install -U openmim
mim install "mmengine>=0.7.1,<1.0.0"
mim install "mmcv>=2.0.0rc4, <2.2.0"
mim install "mmdet>=3.0.0,<3.3.0"
这里给出pip设置镜像的指令:
pip config set global.index-url 'https://mirrors.cloud.tencent.com/pypi/simple'
-
执行
pip install -U openmim
后,如果出现提示:
继续执行conda install mkl fsspec -c conda-forge
。 -
执行
mim install "mmengine>=0.7.1,<1.0.0"
完成后,通过以下命令,验证安装。python -c 'import mmengine;print(mmengine.__version__)'
-
执行
mim install "mmcv>=2.0.0rc4, <2.2.0"
,此过程根据版本不同,可能需要编译,根据系统硬件配置不同,执行时间不同,大概半个小时左右,请耐心等待。执行以下命令,验证安装。python -c 'import mmcv;print(mmcv.__version__)'
如果前置安装的CUDA为低于12.1的版本,可通过mmcv官方文档页面下方选择预购构建的包进行安装,但必须保证mmcv版本满足上述需求。
-
执行
mim install "mmdet>=3.0.0,<3.3.0"
,不出意外,很快安装完成。通过以下步骤,验证安装。- 下载配置文件和模型权重文件
mim download mmdet --config rtmdet_tiny_8xb32-300e_coco --dest .
- 创建demo文件夹
mkdir demo
- 下载测试图像
powershell中执行
cmd中执行curl https://raw.githubusercontent.com/open-mmlab/mmdetection/main/demo/demo.jpg -O ./demo/demo.jpg
curl https://raw.githubusercontent.com/open-mmlab/mmdetection/main/demo/demo.jpg -o -L ./demo/demo.jpg
- 创建测试脚本
输入notepad test.py
,在打开的文件中输入
执行from mmdet.apis import init_detector, inference_detector config_file = 'rtmdet_tiny_8xb32-300e_coco.py' checkpoint_file = 'rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth' model = init_detector(config_file, checkpoint_file, device='cuda:0') # or device='cpu' print(inference_detector(model, 'demo/demo.jpg'))
python test.py
,出现类似输出,说明mmdet安装正确。
- 下载配置文件和模型权重文件
-
mmdet3d安装
- 从Github克隆mmdet3d源码(这里
-b v1.4.0
表示指定版本)git clone -b v1.4.0 https://github.com/open-mmlab/mmdetection3d.git
- 安装依赖
将上述内容复制到文本文件中,命名为lyft_dataset_sdk networkx>=2.5 numba # you should install numba==0.53.0 if your environment is cuda-9.0 numpy==1.23.0 #np.long 异常,后续版本将np.long修改为了np.longlong nuscenes-devkit open3d plyfile scikit-image tensorboard trimesh
requirements.txt
,执行:pip install -r requirements.txt
- 安装mmdet3d
cd mmdetection3d pip install -v -e . # "-v" 指详细说明,或更多的输出 # "-e" 表示在可编辑模式下安装项目,因此对代码所做的任何本地修改都会生效,从而无需重新安装。
- 验证
- 下载配置文件和模型权重文件
mim download mmdet3d --config pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car --dest .
- 执行以下命令
出现类似如下结果,说明安装成功python demo/pcd_demo.py demo/data/kitti/000008.bin pointpillars_hv_secfpn_8xb6-160e_kitti-3d-car.py hv_pointpillars_secfpn_6x8_160e_kitti-3d-car_20220331_134606-d42d15ed.pth --show
- 下载配置文件和模型权重文件
- 从Github克隆mmdet3d源码(这里
(二) Linux(Ubuntu)平台
Linux平台的步骤与Windows平台基本一致,区别在于一些依赖的配置和命令的使用。
1. C++套件安装
安装mmvc过程中出现编译错误,要求GCC,G++等编译器版本为11,通过以下命令安装gcc11:(执行gcc -v
,如果当前GCC版本为11,则跳过此步骤)
# 添加Ubuntu Toolchain测试版源:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
# 安装最新版本的GCC(版本为11):
sudo apt-get install gcc-11 g++-11
# 设置gcc-11的优先级,最后的数越大,
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
# 查看当前系统中的GCC版本:
gcc -v
2. 其余项目安装
Linux一般作为服务器使用,本身已经有一些Pytorch,CUDA等的配置,根据已有配置,参考(一)完成各种环境的安装。4