目标检测学习笔记——mmdet的mmcv安装
要求mmcv-full版本是1.1.5,经检测发现torch版本是1.10.0,cuda版本是11.3,通过mmcv官网pip install mmcv-full==1.1.5 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.htm下载失败,提示是:RuntimeError:The detected CUDA
目录
一、windows下安装mmcv
链接:https://zhuanlan.zhihu.com/p/308281195
1、环境准备
安装git
https://link.zhihu.com/?target=https%3A//git-scm.com/download/win
安装visual studio community 2019
https://link.zhihu.com/?target=https%3A//visualstudio.microsoft.com/
安装conda
安装对应版本的cuda和pytorch(如果cpu版本则不安装cuda)
2、设置python环境
-
从 Windows 菜单启动 Anaconda 命令行
-
如 Miniconda 安装程序建议,不要使用原始的
cmd.exe
或是powershell.exe
-
Anaconda 命令行有两个版本,一个基于 PowerShell,一个基于传统的
cmd.exe
。请注意以下说明都是使用的基于 PowerShell -
创建一个新的 Conda 环境
conda create --name mmcv python=3.7 # 3.6, 3.7, 3.8 经测试也能通过
conda activate mmcv # 确保做任何操作前先激活环境
- 安装 PyTorch,可以根据需要安装支持 CUDA 或不支持 CUDA 版本,根据目前的测试,至少需要安装 1.6.0 以上版本的 Pytorch
# CUDA version
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch
# CPU version
conda install pytorch torchvision cpuonly -c pytorch
- 准备 MMCV 源代码
git clone https://github.com/open-mmlab/mmcv.git
git checkout v1.2.0 # based on target version
cd mmcv
- 安装所需 Python 依赖包
pip3 install -r requirements.txt
3、设置 MSVC 编译器
设置环境变量。添加 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx86\x64
到 PATH
。则 cl.exe
可以在命令行中运行, 如下所示。
(base) PS C:\Users\WRH> cl
Microsoft (R) C/C++ Optimizing Compiler Version 19.27.29111 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
为了兼容性,我们使用 x86-hosted 以及 x64-targeted 版本,即路径中的 Hostx86\x64
。
因为 Pytorch 将解析 cl.exe
的输出以检查其版本,只有 utf-8 将会被识别,你可能需要将系统语言更改为英语。控制面板 -> 地区-> 管理-> 非 Unicode 来进行语言转换.
4、编译CUDA和CPU版本的OPs模块
安装环境变量
$env:MMCV_WITH_OPS = 1
$env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置
检查 CUDA_PATH
或者 CUDA_HOME
已经存在在 envs
之中。否则按照一下步骤设置:
$env:CUDA_HOME = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\"
或者
$env:CUDA_HOME = $env:CUDA_PATH_V10_2 # 如果 CUDA_PATH_V10_2 在CUDA安装过程中已经设置好
设置 CUDA 生成文件的架构
$env:TORCH_CUDA_ARCH_LIST="6.1" # 支持 GTX 1080
# 或者用所有支持的版本,但可能会变得很慢
$env:TORCH_CUDA_ARCH_LIST="3.5 3.7 5.0 5.2 6.0 6.1 7.0 7.5"
编译
$env:MMCV_WITH_OPS = 1
$env:MAX_JOBS = 8 # 根据你可用CPU以及内存量进行设置
conda activate mmcv # 激活环境
cd mmcv # 改变路径
python setup.py build_ext # 如果成功, cl 将会自动弹出来编译 flow_warp
python setup.py develop # 安装
pip list # 检查是否安装成功
二、linux下安装mmcv
官网: https://github.com/open-mmlab/mmcv
https://www.csdn.net/tags/MtjakgwsNDI1NTMtYmxvZwO0O0OO0O0O.html#
1、知道pytorch和cuda版本安装任意版本mmcv(torch.__version__与torch.cuda.version():
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
2、知道pytorch和cuda版本安装指定版本mmcv
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
注意:mmcv要与mmdet版本对应
过程记录: 要求mmcv-full版本是1.1.5,经检测发现torch版本是1.10.0,cuda版本是11.3,通过mmcv官网https://github.com/open-mmlab/mmcv
pip install mmcv-full==1.1.5 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.htm
下载失败,提示是:
RuntimeError:
The detected CUDA version (10.0) mismatches the version that was used to compile
PyTorch (11.3). Please make sure to use the same CUDA versions.
但是之前下载的提示还是找不到1.1.5对应版本,当时还可以下载1.2.0可是现在发现1.2.0都下载不了,那么我猜测难道cuda和torch版本真的显示不对?
按照提示去找对应cuda10.0和torch11.3的mmcv-full版本,发现在官网上找不到对应版本!
我只能用
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.htm
去下载默认的版本,结果顺利下载了默认的1.4.0版本的mmcv-full,所以错误原因肯定不是cuda和torch版本的问题,mmcv-full虽然顺利安装,但是版本是不对应的肯定不行,运行:
python mmdet/utils/collect_env.py
提示mmcv版本不对,我找到代码问题的源头,发现是在import mmdet时的__init__.py文件内部用assert构造了错误,于是我改掉了这个错误提示后就不会报版本错误,后面我也不知道会不会出现版本不对应的问题,目前问题是解决了。mmcv_maximum_version = '1.4.0'
3、mmdet安装
安装使用mmdet就是先把这个mmdet文件包放在工程文件下,然后运行
pip install -r requirements/build.txt
pip install -v -e . # or "python setup.py develop"
import mmcv
from .version import __version__, short_version
def digit_version(version_str):
digit_version = []
for x in version_str.split('.'):
if x.isdigit():
digit_version.append(int(x))
elif x.find('rc') != -1:
patch_version = x.split('rc')
digit_version.append(int(patch_version[0]) - 1)
digit_version.append(int(patch_version[1]))
return digit_version
mmcv_minimum_version = '1.1.1'
mmcv_maximum_version = '1.4.0'
mmcv_version = digit_version(mmcv.__version__)
assert (mmcv_version >= digit_version(mmcv_minimum_version)
and mmcv_version <= digit_version(mmcv_maximum_version)), \
f'MMCV=={mmcv.__version__} is used but incompatible. ' \
f'Please install mmcv>={mmcv_minimum_version}, <={mmcv_maximum_version}.'
__all__ = ['__version__', 'short_version']
更多推荐
所有评论(0)