欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-06 21:42:01
...

前言

在查了半天的资料,踩了无数的坑后,我来给大家总结下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显示如下内容:
Windows10下安装detectron2超详细教程(小白视角)
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路径和版本不一样,找到自己的路径和版本,然后替换掉上面的。
操作完毕显示内容如下:
Windows10下安装detectron2超详细教程(小白视角)

安装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,删除如下参数

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

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

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

安装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

安装成功显示如下:
Windows10下安装detectron2超详细教程(小白视角)
pip list查看结果

Windows10下安装detectron2超详细教程(小白视角)
最后来总结一些坑,以及坑产生的原因与解决方案

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

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

Windows10下安装detectron2超详细教程(小白视角)
产生原因:amd64 -vcvars_ver=14.24 版本不一致,我的是14.27。
解决方案:查看自身版本
Windows10下安装detectron2超详细教程(小白视角)

  1. 在执行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后,报如下错误
Windows10下安装detectron2超详细教程(小白视角)解决方案:

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