Win10 安装Detectron2 Bugs整理

因为不知名的原因,要在win10上安装Detectron2(尽管这个东西对linux比较友好,win10上一堆坑...),踩了无数的坑,翻了各种攻略终于成功了!记录一下,献给同样的踩坑人~


安装环境

  • VS2019 Community
  • Anaconda3
  • CUDA10.2
  • cudnn10.2
    没有安装好的自己搜一下吧~ 网上一大片~~

新建环境
我自己喜欢启动Anaconda 新建一个隔离环境,这里我们命名为detecron2,也可以用命令行设置。注意python的版本为3.6(其他的我没试过)

conda creat -n detectron2 python=3.6
conda activate detectron2

设置cl环境变量
根据自己VS的安装路径,找到cl.exe设置环境变量。我的是在:
D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\Hostx64\x64\cl.exe
进入cmd,输入cl

安装依赖包

pip install cython pyyaml tabulate termcolor yacs iopath ninja
pip install opencv-python
pip install omegaconf==2.1.0.dev22
pip install cloudpickle
pip install Matplotlib
pip install pydot
pip install tensorboard
pip install pycocotools>=2.0.2

安装torch,torchvision
下载路径:https://download.pytorch.org/whl/torch_stable.html
选择对应的版本号,并进入下载路径。

pip install torch-1.6.0-cp36-cp36m-win_amd64.whl
pip install torchvision-0.7.0-cp36-cp36m-win_amd64.whl

安装cocoapi
pycocotools不支持windows,所以必须使用git地址下载
https://github.com/philferriere/cocoapi
cd到下载路径

python setup.py build_ext --inplace
python setup.py build_ext install

安装fvcore
下载地址:https://github.com/facebookresearch/fvcore
cd到下载路径。

python setup.py build --force develop

安装detectron2
下载地址:https://github.com/facebookresearch/detectron2(注意下载对应的cuda的版本,默认是最新版,我下载的是tag 0.4
cd到下载路径。

python setup.py build --force develop

这个地方会有一堆错误,我们一个一个解决!

BUGs汇总

Q1: UserWarning: Error checking compiler version for cl: 'utf-8' codec can't decode byte 0xd3 in position 0: invalid continuation byte

打开你环境下的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'])
            version = version.decode().strip().split('.')
        else:
            minimum_required_version = MINIMUM_MSVC_VERSION
            compiler_info = subprocess.check_output(compiler, stderr=subprocess.STDOUT)
            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

Q2: 修改pyTorch代码
有外国友人修改了部分代码,我没修改也没啥问题。你要是有啥疑难杂症也不妨试试。

第一个文件的位置改了一下,:{your evn path}\Lib\site-packages\torch\include\torch\csrc\jit\runtime\argumenta_spec.h

Q3: 安装出现编译器错误
call一下本地的vs就好了(注意路径,如果不是默认安装可能在你的安装路径下)~~
call “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat”

Q4: DISTUTILS_USE_SDK设置错误
具体的错误没有截图了,反正就是就是告诉你没设置DISTUTILS_USE_SDK,让你设置。直接在cmd里面设置就行。set DISTUTILS_USE_SDK=1

Q5: CalledProcessError: Command ‘[‘ninja’, ‘-v’]’ returned non-zero exit status 1
千万不要修改成[ninja --v] 或者 [ninja -version]!!!
直接往上翻错误提示信息,在第一个failed的地方就会有新发现。

第一个Failed是编译到[6/11]的时候,deform_conv_cuda_kernel.obj出不来,下面说的是error: identifier "__floorf" is undefined in device code
第二个Failed也差不多,说"__ceilf"未定义啥的。

找到ROIAlignRotated_cuda.cudeform_conv_cuda_kernel.cu文件,把里面的ceilfloor后面都加上f就完事,即ceil改为ceilffloor改为floorf

[参考链接]
https://www.pythonf.cn/read/123901
https://blog.csdn.net/qq114480/article/details/116058168
https://zhuanlan.zhihu.com/p/363295722
https://blog.csdn.net/nefetaria/article/details/105728008
https://blog.csdn.net/tanmx219/article/details/100829920

你可能感兴趣的:(Win10 安装Detectron2 Bugs整理)