【Win10+RTX3090】Windows下最新版本mmdetection的安装/环境配置流程

依赖项准备

执行以下安装程序时,都以管理员身份运行

  • Git for Windows
    1. 安装时,请勾选Git from the command line and also from 3rd-party software
    2. 安装完成后,确认...\Git\cmd已添加至环境变量Path中,否则手动添加
  • Visual Studio Community 2019
    1. 安装时,请勾选使用C++的桌面开发
    2. 安装完成后,将...\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\Hostx86\x64添加到环境变量Path中(注意替换VS版本)
  • Anaconda
    1. 安装完成后,将...\anaconda3...\anaconda3\Scripts...\anaconda3\Library\bin都添加到环境变量Path
  • CUDA Toolkit & cuDNN
    1. 参考本人的这篇博客来选择合适的版本进行安装(若未安装驱动,也请注意安装驱动)
    2. 安装CUDA Toolkit时,注意勾选Visual Studio Integration
    3. 安装完成后,添加...\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin...\NVIDIA GPU Computing Toolkit\CUDA\v11.1\libnvvp到环境变量Path中(注意替换CUDA版本)
    4. 新建环境变量CUDA_PATH...\NVIDIA GPU Computing Toolkit\CUDA\v11.1,新建环境变量CUDA_PATH_V11_1...\NVIDIA GPU Computing Toolkit\CUDA\v11.1(注意替换CUDA版本)
  • 注:由于本人的依赖项是陆陆续续安装的,以上依赖项不确定全部必需,也可能有遗漏之处,欢迎大家指出!

mmcv-full的编译与安装

  1. 管理员身份运行Anaconda Powershell Prompt(注意一定要打开基于PowerShell的Prompt),并进入工作目录

    cd D:/137/workspace
    
  2. 创建conda环境:

    conda create -n mm python=3.8
    conda activate mm
    
  3. 安装pytorch,这里也参考本人的这篇博客来选择

    conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
    
  4. 下载mmcv源码

    git clone https://github.com/open-mmlab/mmcv.git
    cd mmcv
    
  5. 安装mmcv所需的python依赖包

    pip install -r requirements.txt
    
  6. 打开mmcv/ops/csrc/ms_deform_attn_cuda_kernel.cuh,搜索floor,将其全部替换为floorf,否则编译时会报错:

    【Win10+RTX3090】Windows下最新版本mmdetection的安装/环境配置流程

    【Win10+RTX3090】Windows下最新版本mmdetection的安装/环境配置流程

  7. 打开mmcv/ops/csrc/roi_align_rotated_cuda_kernel.cuh,搜索ceil,将其全部替换为ceilf,否则编译时也会报上述类似的错

  8. 按指令编译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的编译与安装

  1. 同上激活环境、下载源码

    cd D:/137/workspace
    conda activate mm
    git clone https://github.com/open-mmlab/mmdetection.git
    cd mmdetection
    
  2. 安装python依赖包

    pip install -r requirements.txt
    
  3. 打开setup.py,找到extra_compile_args,设置其中'cxx'键的值为['-DMS_WIN64', '-MD'](注:这一步本人不确定是否必需,大家可以试一下)

  4. 编译安装mmdetection

    python setup.py build_ext
    python setup.py develop
    

    注:这里会报colorama的错,该模块是用来在命令行print彩色文字的,推测只是信息流print的一些小问题,后续本人使用mmdetection的过程中没有碰到任何问题

    【Win10+RTX3090】Windows下最新版本mmdetection的安装/环境配置流程

  5. 运行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目录重命名或删除即可。

参考

  1. WINDOWS 下 MMCV | MMCV-full 的安装
  2. mmdetection在windows10系统环境中搭建
  3. Windows 10 上安装有 GPU 支持 mmcv-full
上一篇:MMDection(机翻)


下一篇:增量 t-SNE