参考官方文档:
https://mmcv.readthedocs.io/en/latest/get_started/build.html#prerequisite
https://mmdetection.readthedocs.io/zh_CN/v2.21.0/get_started.html#mmdetection
Windows 10
Python 3.8 (Anaconda虚拟环境)
PyTorch 1.8.1(对应torchvision的版本为0.9.1)
cudatoolkit=11.1(尽可能与Runtime CUDA的版本保持一致)
CUDA 11.1 & cuDNN(30系以上显卡必须使用CUDA11+,其他显卡推荐使用CUDA10.2)
Microsoft Visual C++ Build Tools(Visual Studio 2019)
以上环境的安装较为简单,网上的教程比较常见,这里不过多赘述,要注意的几点就是PyTorch、torchvision、CUDA、cuDNN、cudatoolkit的版本需要尽可能地严格匹配,这样后面的安装会省力不少;以及PyTorch和torchvision的安装推荐下载适合版本的whl到本地,再pip安装,因为直接使用conda命令有可能会装上CPU版本。
PyTorch whl文件下载链接:https://download.pytorch.org/whl/torch_stable.html
conda create -n mmdet python=3.8
conda activate mmdet
conda install cudatoolkit=11.1 -c pytorch
pip install path/to/torch-1.8.1+cu111-cp38-cp38-win_amd64.whl # 必须先安装torch再安装torchvision,因为torchvision依赖torch
pip install path/to/torchvision-0.9.1+cu111-cp38-cp38-win_amd64.whl # 先安装torchvision会自动安装torch,导致版本不可控
pip install cython matplotlib opencv-python
这里可以在python中验证PyTorch是否顺利安装:
python
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> a = torch.tensor([1, 2])
>>> a.cuda()
tensor([1, 2], device='cuda:0')
以上的CUDA_PATH和CUDA_PATH_V11_1应该会在你安装完CUDA后自动配置好。
需要在Path中手动添加Visual C++的编译器,此路径不绝对,可能在你的电脑上会不一样,该路径下应该会有一个cl.exe:
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x64
配置好环境变量后,可以进入cmd,输入cl,出现以下输出即可:
MMCV的安装对Windows极不友好,无论是mim安装还是pip安装都不可控,且有极大可能性报错,所以这里我们使用源码编译,确保万无一失。
打开Anaconda Powershell Prompt,注意不是Anaconda Prompt。
conda activate mmdet
cd mmcv-master (这里使用git clone和直接下载源码都可)
pip install -r .\requirments\runtime.txt
pip install -r .\requirments\optional.txt
$env:CUDA_HOME=$env:CUDA_PATH_V11_1
$env:TORCH_CUDA_ARCH_LIST="8.6" # 8.6取决于你的显卡算力,在这里查询显卡算力 https://developer.nvidia.com/cuda-gpus
$env:MMCV_WITH_OPS=1 # 安装mmcv-full必要
$env:MAX_JOBS=8 # 如果你的CPU性能不强,推荐使用4
python setup.py build_ext
python setup.py develop
如果到这一步都没有报错失败,那么恭喜你已经离成功不远了。
再确认一下,mmcv安装成功:
python
>>> from mmcv.ops import RoIPool
>>>
如果这里import报错缺少DLL,大概率是mmcv安装失败,需要检查前置步骤是否出错,再重新编译安装mmcv。
这一步应该确定MMDetection和MMCV的版本不冲突,可以查看此网站确认https://mmdetection.readthedocs.io/zh_CN/v2.21.0/get_started.html#mmdetection
这里我们使用的都是master分支,不太可能会出现版本冲突。
cd ..
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection
pip install -r requirements/build.txt
pip install -v -e .
在mmdetection-master目录下新建checkpoints目录,下载FasterRcnn权重并放入这个文件夹中,运行以下命令:
python demo/image_demo.py demo/demo.jpg configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py checkpoints/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth
我本人几乎是用一整天的时间来安装mmdetection,最后终于成功了。踩得坑包括但不限于:“conda自动安装torch-CPU版本”,“CUDA10.2不支持30系显卡”,“torch找不到Runtime CUDA”, “mmcv编译出错”, “anaconda莫名暗中切换虚拟环境”。写这样一篇博文也是希望能让别人安装得更加顺利一些,同时也防止自己以后忘了再踩一边坑T.T。