本文记录 Windows10 下安装 maskrcnn_benchmark 的过程.
安装环境:
Windows10
CUDA 9.0
python3.6
maskrcnn_benckmark 是 Facebook Research 下的一个项目。这个项目包含了多种通用目标检测(General Object Detection)算法的 PyTorch 实现。项目工程高度模块化,关键模块使用 cpp/cuda 实现,并将核心功能封装为 Python Package。
maskrcnn-benchmark已经冻结(maskrcnn-benchmark has been deprecated),即它将不在更新。
INSTALL
安装要求:
旧版本项目仅支持 pytorch 1.0 nightly.
现在版本可支持到 pytorch 1.3.
使用低于1.3版本的pytorch,运行需要修改源码。
创建虚拟环境:
>mkvirtualenv --no-site-packages -p "{path_to_python3.6_home}/python.exe" maskrcnn_benchmark
创建安装目录:
(maskrcnn-benchmark)>set ROOT_DIR=<path_to_the_parent_directory_OF_maskrcnn-benchmark>
(maskrcnn-benchmark)>md %ROOT_DIR% # {ROOT_DIR} means the parent directory of maskrcnn-benchmark
(maskrcnn-benchmark)>cd %ROOT_DIR%
下载 maskrcnn_benckmark 和 cocoapi 依赖:
(maskrcnn-benchmark)>pip install ipython ninja yacs cython matplotlib tqdm opencv-python
推荐使用 PyTorch 1.1.0
安装 pytorch 1.1.0 和 torchvision 0.3.0:
(maskrcnn-benchmark)>pip install torch==1.1.0 -f https://download.pytorch.org/whl/cu90/torch_stable.html
(maskrcnn-benchmark)>pip install torchvision==0.3.0
如果使用 PyTorch-nightly
安装 pytorch-nightly 和 torchvision-nightly:
(maskrcnn-benchmark)>pip install torch_nightly==1.0.0.dev20190409 -f https://download.pytorch.org/whl/nightly/cu90/torch_nightly.html
(maskrcnn-benchmark)>pip install torchvision-nightly==0.2.3
cocoapi
安装 pycocotools:
(maskrcnn-benchmark)>cd %ROOT_DIR%
(maskrcnn-benchmark)>git clone https://github.com/cocodataset/cocoapi.git
(maskrcnn-benchmark)>cd cocoapi/PythonAPI
打开 setup.py
,将第 14 行
extra_compile_args=['-Wno-cpp', '-Wno-unused-function', '-std=c99'],
修改为:
extra_compile_args={
'gcc': ['/Qstd=c99']},
保存后开始安装
(maskrcnn-benchmark)>python setup.py build_ext install
后续安装过程需要先安装 VS2017. 并按照下图所示安装 VC++ 2017 版本 15.4 v14.11 工具集(VC++ 2017 version 15.4 v14.11 toolset
).
在 cmd 中设置使用 VC++ 2017 version 15.4 v14.11 toolset
:
(maskrcnn_benchmark) > "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 -vcvars_ver=14.11
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.20
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
检查是否设置成功:
(maskrcnn_benchmark) > cl -Bv
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.11.25548.2 版
版权所有(C) Microsoft Corporation。保留所有权利。
编译器扫描遍数:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\cl.exe:
版本 19.11.25548.2
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c1.dll:
版本 19.11.25548.2
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c1xx.dll:
版本 19.11.25548.2
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\c2.dll:
版本 19.11.25548.2
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\link.exe:
版本 14.11.25548.2
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\mspdb140.dll: 版本 14.11.25548.2
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64\2052\clui.dll: 版本 19.11.25548.2
cl: 命令行 error D8003 :缺少源文件名
如果不进行上述设置,将会遇到下列报错.
D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\V9.0\bin\nvcc.exe -c >csrc/multi_tensor_sgd_kernel.cu -o build\temp.win-amd64-3.6\Release\csrc/multi_tensor_sgd_kernel.obj ->Xcompiler /wd4819 -Xcompiler /MD -IF:\01_pyenvs\maskrcnn_benchmark\lib\site-packages\torch\inc lude -IF:\01_pyenvs\maskrcnn_benchmark\lib\site-packages\torch\include\torch\csrc\api\include ->IF:\01_pyenvs\maskrcnn_benchmark\lib\site-packages\torch\include\TH ->IF:\01_pyenvs\maskrcnn_benchmark\lib\site-packages\torch\include\THC "-ID:\Program Files\NVIDIA GPU >Comp uting Toolkit\CUDA\V9.0\include" "-Id:\program files\python36\include" "-Id:\program files\python36\include" >"-IC:\Program Files (x86)\Microsoft Visual >Studio\2017\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft >Visual Studio\2 017\Community\VC\Tools\MSVC\14.16.27023\include" "-IC:\Program Files (x86)\Windows >Kits\10\include\10.0.17763.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" >"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" "-IC:\Progr am Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" "-IC:\Program Files (x86)\Windows >Kits\10\include\10.0.17763.0\cppwinrt" -lineinfo -O3 --use_fast_math -DVERSION_GE_1_1 ->DTORCH_API_INCLUDE_EXTENSION_H -DTORCH_EXTENSION_NAME=amp_C ->D_GLIBCXX_USE_CXX11_ABI=0 multi_tensor_sgd_kernel.cu d:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): fatal error C1189: >#error: -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are >supported! error: command 'D:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\V9.0\\bin\\nvcc.exe' failed with >exit status 2
在经过设置的 cmd 窗口中继续后面的安装过程. 关闭 cmd 窗口,设置将失效.
以上参考 issue1042 和 msvc-toolsets-in-visual-studio-2017.
安装 apex:
(maskrcnn-benchmark)>cd %ROOT_DIR%
(maskrcnn-benchmark)>git clone https://github.com/NVIDIA/apex.git
(maskrcnn-benchmark)>cd apex
(maskrcnn-benchmark)>python setup.py install --cuda_ext --cpp_ext
(maskrcnn-benchmark)>cd %ROOT_DIR%
(maskrcnn-benchmark)>git clone https://github.com/mcordts/cityscapesScripts.git
(maskrcnn-benchmark)>cd cityscapesScripts/
打开 setup.py
,将第 26 行
with open("README.md") as f:
修改为:
with open("README.md", encoding='UTF-8') as f:
保存后开始安装
(maskrcnn-benchmark)>python setup.py install --cuda_ext --cpp_ext
安装 maskrcnn_benckmark:
(maskrcnn-benchmark)>cd %ROOT_DIR%
(maskrcnn-benchmark)>git clone https://github.com/facebookresearch/maskrcnn-benchmark.git
(maskrcnn-benchmark)>cd maskrcnn-benchmark
# the following will install the lib with
# symbolic links, so that you can modify
# the files if you want and won't need to
# re-build it
(maskrcnn-benchmark)>python setup.py build develop
测试:
(maskrcnn-benchmark)>python -c "import maskrcnn_benchmark"
(maskrcnn-benchmark)>
成功安装