依赖项准备
执行以下安装程序时,都以管理员身份运行
-
Git for Windows
- 安装时,请勾选Git from the command line and also from 3rd-party software
- 安装完成后,确认
...\Git\cmd
已添加至环境变量Path中,否则手动添加
-
Visual Studio Community 2019
- 安装时,请勾选使用C++的桌面开发
- 安装完成后,将
...\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\Hostx86\x64
添加到环境变量Path中(注意替换VS版本)
-
Anaconda
- 安装完成后,将
...\anaconda3
、...\anaconda3\Scripts
、...\anaconda3\Library\bin
都添加到环境变量Path中
- 安装完成后,将
-
CUDA Toolkit & cuDNN
- 参考本人的这篇博客来选择合适的版本进行安装(若未安装驱动,也请注意安装驱动)
- 安装CUDA Toolkit时,注意勾选Visual Studio Integration
- 安装完成后,添加
...\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin
、...\NVIDIA GPU Computing Toolkit\CUDA\v11.1\libnvvp
到环境变量Path中(注意替换CUDA版本) - 新建环境变量CUDA_PATH为
...\NVIDIA GPU Computing Toolkit\CUDA\v11.1
,新建环境变量CUDA_PATH_V11_1为...\NVIDIA GPU Computing Toolkit\CUDA\v11.1
(注意替换CUDA版本)
- 注:由于本人的依赖项是陆陆续续安装的,以上依赖项不确定全部必需,也可能有遗漏之处,欢迎大家指出!
mmcv-full的编译与安装
-
以管理员身份运行Anaconda Powershell Prompt(注意一定要打开基于PowerShell的Prompt),并进入工作目录
cd D:/137/workspace
-
创建conda环境:
conda create -n mm python=3.8 conda activate mm
-
安装pytorch,这里也参考本人的这篇博客来选择
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
-
下载mmcv源码
git clone https://github.com/open-mmlab/mmcv.git cd mmcv
-
安装mmcv所需的python依赖包
pip install -r requirements.txt
-
打开
mmcv/ops/csrc/ms_deform_attn_cuda_kernel.cuh
,搜索floor
,将其全部替换为floorf
,否则编译时会报错: -
打开
mmcv/ops/csrc/roi_align_rotated_cuda_kernel.cuh
,搜索ceil
,将其全部替换为ceilf
,否则编译时也会报上述类似的错 -
按指令编译mmcv-full:
$env:MMCV_WITH_OPS = 1 # 选择安装mmcv-full $env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置 $env:CUDA_HOME = $env:CUDA_PATH_V11_1 # CUDA_PATH_V11_1在准备依赖项时已设置好,注意替换CUDA版本 $env:TORCH_CUDA_ARCH_LIST="8.6" # RTX3090的算力是8.6 python setup.py build_ext python setup.py develop pip list # 检查是否安装成功
mmdetection的编译与安装
-
同上激活环境、下载源码
cd D:/137/workspace conda activate mm git clone https://github.com/open-mmlab/mmdetection.git cd mmdetection
-
安装python依赖包
pip install -r requirements.txt
-
打开setup.py,找到
extra_compile_args
,设置其中'cxx'
键的值为['-DMS_WIN64', '-MD']
(注:这一步本人不确定是否必需,大家可以试一下) -
编译安装mmdetection
python setup.py build_ext python setup.py develop
注:这里会报colorama的错,该模块是用来在命令行print彩色文字的,推测只是信息流print的一些小问题,后续本人使用mmdetection的过程中没有碰到任何问题
-
运行demo.py,测试mmdetection
注:以下代码修改自官方文档
代码运行结束后,打开work_dirs/demo.jpg查看检测结果
from mmdet.apis import init_detector, inference_detector import cv2 config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py' # download the checkpoint from model zoo and put it in `checkpoints/` # url: https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth checkpoint_file = 'work_dirs/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth' device = 'cuda:0' # init a detector model = init_detector(config_file, checkpoint_file, device=device) # inference the demo image result = inference_detector(model, 'demo/demo.jpg') img_show = cv2.imread('demo/demo.jpg') model.show_result(img_show, result, show=True, out_file='work_dirs/demo.jpg', score_thr=0.3) print(1)
最后注:pip list会显示mmcv和mmdet的安装目录,因为它们是develop(-e)安装,然后egg-link到指定目录的,不是在对应python的site-packages下安装的。conda list会报错,因为mmcv目录下同时有mmcv和mmcv-full的egg-info,把mmcv.egg-info目录重命名或删除即可。