Skip to content

In-depth guide to getting FCIS working on Windows 10 #153

@ferakon

Description

@ferakon

Hi all,

I had quite a bit of trouble getting this working on Windows 10, so wanted to share my setup process for others who may be struggling to get FCIS working. I understand that this isn't really an 'Issue' per se, but I think it might help a lot of people until these steps are better highlighted in the official repo README. Remember to replace Your_User_Name in some of the file paths I discuss here.

After following these steps I successfully managed to train FCIS on the COCO 2014 40K validation dataset.

1. Required software etc.

Visual Studio Community 2015
https://visualstudio.microsoft.com/vs/older-downloads/

  • 2015 > Download > Visual Studio Community 2015

CUDA Toolkit 8.0 GA2 (Feb 2017) and Patch 2:
https://developer.nvidia.com/cuda-toolkit-archive

  • Base Installer: Double click cuda_8.0.61_win10.exe (1.3GB)
  • Patch 2 (43.1MB)

cuDNN 6.0:
https://developer.nvidia.com/rdp/cudnn-download

  • Archived cuDNN Releases > Download cuDNN v6.0 (April 27, 2017), for CUDA 8.
  • Put files in associated CUDA folders: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

CMake:
https://cmake.org/download/

  • Binary distributions > cmake-3.16.3-win64-x64.msi

Open CV 3.4.9:
https://opencv.org/releases/
*OpenCV - 3.4.9 > Windows

  • Run the self-unzipper. Move unzipped files to C:\opencv

OpenBLAS:
https://sourceforge.net/projects/openblas/files/v0.3.6/
*OpenBLAS-0.3.6-x64.zip

  • Unzip to C:\OpenBLAS-0.3.6-x64

mingw64 DLLs:
https://sourceforge.net/projects/openblas/files/v0.2.12/mingw64_dll.zip/download

  • Put unzipped dlls in C:\common

2. Set Environment Variables:

Start > Advanced System Settings > Environment variables...

Then under User variables for User:

Path > Edit > New ...add the following to Path:

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cl.exe
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\
C:\opencv\build\x64\vc14\bin
C:\common
C:\Program Files (x86)\MSBuild\14.0\Bin

OK

Now back on 'Environment Variables'
Add the following new variables: New...

Variable Name: CUDACXX
Variable Value: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe
Variable Name: CUDNN_ROOT 
Variable Value: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
Variable Name: OpenBLAS_HOME
Variable Value: C:\OpenBLAS-0.3.6-x64
Variable Name: OpenCV_DIR
Variable Value: C:\opencv\build

3. Setup Python:

Anaconda 2.7 (...yes FCIS is written in 2.7 and would otherwise d require a lot of work to convert to 3)
https://www.anaconda.com/distribution/

  • Python 2.7 Version > 64-Bit Graphical Installer (413 MB)
    ...after installing open Anaconda2 and type:
    conda update --all
    pip install opencv-python

... everything else seemed to already be there but you might want to make sure to also pip:
Cython
easydict
hickle

4. Install git

Open Anaconda2 prompt and type:

conda install git

5. Download FCIS and fix code for Windows:

git clone https://github.com/msracver/FCIS.git

fix windows cuda setup by adding:

# remove ID=2
elif ',ID=2' in c: del cmd[idx]

...to the bottom of the elif statements in:
setup_windows_cuda.py in lib\nms (elif statement should be added within for loop that starts at line 85)
setup_windows.py in lib\mask (elif statement should be added within for loop that starts at line 82)

fix kvstore param problem by following instructions at #135
In summary:

Change some lines between 570--590 in ./fcis/core/module.py to the following:

if self._update_on_kvstore:
    try: # Add this try above following code
        _update_params_on_kvstore(self._exec_group.param_arrays,
        self._exec_group.grad_arrays,
        self._kvstore)
# Add this exception block below the above try
    except:
        _update_params_on_kvstore(self._exec_group.param_arrays,
        self._exec_group.grad_arrays,
        self._kvstore, param_names=self._exec_group.param_names)

6. Setup and compile proper mxnet version:

In command prompt go to:
C:\Users\**Your_User_Name**\Anaconda2\Lib\site-packages

Enter the follwoing commands:

git clone --recursive https://github.com/dmlc/mxnet.git

wait for mxnet to download...

git checkout 998378a
git submodule init
git submodule update

wait for submodules to update...

Copy files in FCIS repo .\fcis\operator_cxx to C:\Users\**Your_User_Name**\Anaconda2\Lib\site-packages\mxnet\src\operator\contrib

... 3 files will be overwritten

Navigate Anaconda2 prompt to:
C:\Users\**Your_User_Name**\Anaconda2\Lib\site-packages\mxnet

Enter commands:

mkdir build
cd build

make the code with the following command:

cmake -G "Visual Studio 14 2015 Win64" -T cuda=8.0,host=x64 -DUSE_CUDA=1 -DUSE_CUDNN=1 -DUSE_NVRTC=1 -DUSE_OPENCV=1 -DUSE_OPENMP=1 -DUSE_BLAS=open -DUSE_LAPACK=1 -DUSE_DIST_KVSTORE=0 -DCUDA_ARCH_LIST=Common -DCUDA_TOOLSET=8.0 -DCUDNN_INCLUDE="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include" -DCUDNN_LIBRARY="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cudnn.lib" "C:\Users\**Your_User_Name**\Anaconda2\Lib\site-packages\mxnet"

...compile code with the following command (may take a while, should end with warnings but no errors if previous steps have been followed correctly):

msbuild mxnet.sln /p:Configuration=Release;Platform=x64

After compile, setup mxnet for python (assuming you are currently still in C:\Users\**Your_User_Name**\Anaconda2\Lib\site-packages\mxnet\build:

cd ..
cd python
python setup.py install

Fix mxnet to behave like older version in base_module.py as described in #107

.. in summary:

Open: C:\Users\*Your_User_Name*\Anaconda2\Lib\site-packages\mxnet-0.10.1-py2.7.egg\mxnet\module\base_module.py

...delete allow_extra=allow_extra on line 649

Everything should now be ready to go. Follow instructions in README.md of FCIS repo to try demo code.

Hope that helps some people struggling with software versions / setup, or just finding it hard to get this working on windows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions