Windows10下安装detectron2超详细教程(小白视角)

it2023-02-01  70

深度学习中遇到的问题总结DAY 2

前言NVIDIA显卡驱动安装vs2019安装cocoapi(windows)安装fvcore:安装detectron2错误产生原因以及解决方案

前言

在查了半天的资料,踩了无数的坑后,我来给大家总结下windows10下安装detectron2的超详细教程(最终亲测成功)。关于anaconda3与pytorch安装百度很多了,这里就不介绍了。

NVIDIA显卡驱动

这里官方文档介绍采用CUDA10.1(其他旧版本驱动未测试)。 因此如果目前cuda的版本不是10.1或10.1以上,就卸载掉,然后安装cuda10.1。 cuda10.1完成以后,新增系统环境变量:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64

安装vs2019

1)detectron2需要vs2019最新的编译器,安装vs2019的社区/专业/企业版本均可,因为社区版较为简单,因此这里以社区版为例。 下载地址:https://visualstudio.microsoft.com/zh-hans/vs/ 点击跳转. 2)detectron2需要vs2019当中的cl.exe,因此你需要配置cl.exe的系统环境

参照我的: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64 注意记住这里的版本号14.27,后面用到,每个人可能不一样

配置好系统环境后请务必保证在打开cmd输入cl显示如下内容: 3)如果之前电脑上已经装了vs的其他版本,重新设置vs2019的编译器,操作如下: SET MSSdk=1 SET DISTUTILS_USE_SDK=1 call “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat” amd64 -vcvars_ver=14.27 每个人的vcvarsall.bat路径和版本不一样,找到自己的路径和版本,然后替换掉上面的。 操作完毕显示内容如下:

安装cocoapi(windows)

下载以下链接的cocoapi,因为cocoapi官方暂不支持Windows https://github.com/philferriere/cocoapi 点击跳转. 然后用以下指令安装 cd coco/PythonAPI python setup.py build_ext --inplace python setup.py build_ext install

如果报cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp” 和 cl: 命令行 error D8021 :无效的数值参数“/Wno-unused-function”,则打开setup.py,删除如下参数

打开cmd输入 import pycocotools; from pycocotools.coco import COCO 没报错即成功

安装fvcore:

下载链接:https://github.com/facebookresearch/fvcore 点击跳转. 然后cd到setup.py所在目录,用以下指令安装 python setup.py build --force develop 打开cmd输入 import fvcore 没报错即成功

安装detectron2

在安装detectron2前需要先修改detectron2与pytorch的代码以保证顺利安装。 下载地址:https://github.com/conansherry/detectron2 点击跳转. 1)根据官方文档对pytorch进行如下修改(觉得难找可以下载Everything)

file1: {your evn path}\Lib\site-packages\torch\include\torch\csrc\jit\argument_spec.h example: {C:\Miniconda3\envs\py36}\Lib\site-packages\torch\include\torch\csrc\jit\argument_spec.h(190)    static constexpr size_t DEPTH_LIMIT = 128;       change to -->    static const size_t DEPTH_LIMIT = 128; file2: {your evn path}\Lib\site-packages\torch\include\pybind11\cast.h example: {C:\Miniconda3\envs\py36}\Lib\site-packages\torch\include\pybind11\cast.h(1449)     explicit operator type&() { return *(this->value); }       change to -->    explicit operator type&() { return ((type)this->value); }

第一个文件的位置有变动为:{your evn path}\Lib\site-packages\torch\include\torch\csrc\jit\runtime\argumenta_spec.h

2)将detectron2\detectron2\layers\csrc\deformable 文件夹下三个文件中全部的 AT_CHECK 全部替换为 TORCH_CHECK

3)安装detectron2

//进入解压后setup.py的路径 cd detectron2 //安装 python setup.py build --force develop

安装成功显示如下: pip list查看结果

最后来总结一些坑,以及坑产生的原因与解决方案

错误产生原因以及解决方案

1)执行call “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat” amd64 -vcvars_ver=14.24后,报如下错误

产生原因:amd64 -vcvars_ver=14.24 版本不一致,我的是14.27。 解决方案:查看自身版本

在执行python setup.py build --force develop后,报如下错误

error: command ‘C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX86\x64\cl.exe’ failed with exit status 2

产生原因:存在多版本vs,未设置vs2019的编译器。 解决方案:

SET MSSdk=1 SET DISTUTILS_USE_SDK=1 call “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat” amd64 -vcvars_ver=14.27

3)在执行python setup.py build --force develop后,报如下错误 解决方案:

将detectron2\detectron2\layers\csrc\deformable 文件夹下三个文件中全部的 AT_CHECK 全部替换为 TORCH_CHECK

4)如果遇到编码错误问题请参照以下解决方案(本人暂未遇到) 打开你环境下的cpp_extension.py, 找到如下代码段的位置,在decode() 的括号中添加 ’ gbk’ (注意gbk前面有空格)

if sys.platform.startswith('darwin'): # There is no particular minimum version we need for clang, so we're good here. return True try: if sys.platform.startswith('linux'): minimum_required_version = MINIMUM_GCC_VERSION version = subprocess.check_output([compiler, '-dumpfullversion', '-dumpversion']) //修改处1 version = version.decode(' gbk').strip().split('.') else: minimum_required_version = MINIMUM_MSVC_VERSION compiler_info = subprocess.check_output(compiler, stderr=subprocess.STDOUT) //修改处2 match = re.search(r'(\d+)\.(\d+)\.(\d+)', compiler_info.decode(' gbk').strip()) version = (0, 0, 0) if match is None else match.groups() except Exception: _, error, _ = sys.exc_info() warnings.warn('Error checking compiler version for {}: {}'.format(compiler, error)) return False

以上就是我对Windows10下安装detectron2的总结以及一些常见的坑的解决方案,我也是第一次安装,查了半天的资料才完成,亲测有效,希望能够帮助各位少走弯路。如文章中出现错误,请大佬指出。

最新回复(0)