From 597b8a61c7d941219d76cf14729b3ea9b0fb0fb8 Mon Sep 17 00:00:00 2001 From: John Zhu <31381602+johnzja@users.noreply.github.com> Date: Fri, 28 Aug 2020 11:34:44 +0800 Subject: [PATCH] Windows Support (Experimental) (#75) * Windows basic support * getting_started updated for Windows. * add experimental * install.md restructured to seperate Windows & Linux. * fix problems in install.md * fix mmcv version problem. * Fix fastscnn resize problems. (#82) * Fix fast_scnn resize problems * Fix fast_scnn resize problems 1 * Fix fast_scnn resize problems 2 * test for pascal voc * [Doc] Add annotaion format note (#77) * update pytorch version to 1.6.0 in install.md * del fastscnn_pascal config * del create_symlink=True * Merge instructions for Linux & Windows * mmcv version updated * redundant newline deleted * Update docs/install.md Co-authored-by: Jerry Jiarui XU * Update docs/install.md Co-authored-by: Jerry Jiarui XU Co-authored-by: Jerry Jiarui XU --- docs/install.md | 82 ++++++++++++++++++++++++++++++-------- mmseg/__init__.py | 2 +- mmseg/utils/collect_env.py | 10 +++-- 3 files changed, 73 insertions(+), 21 deletions(-) diff --git a/docs/install.md b/docs/install.md index a6def65d6..a48302365 100644 --- a/docs/install.md +++ b/docs/install.md @@ -1,13 +1,11 @@ -## Installation +## Requirements -### Requirements - -- Linux (Windows is not officially supported) +- Linux or Windows(Experimental) - Python 3.6+ - PyTorch 1.3 or higher - [mmcv](https://github.com/open-mmlab/mmcv) -### Install mmsegmentation +## Installation a. Create a conda virtual environment and activate it. @@ -17,15 +15,17 @@ conda activate open-mmlab ``` b. Install PyTorch and torchvision following the [official instructions](https://pytorch.org/). -Here we use PyTorch 1.5.0 and CUDA 10.1. +Here we use PyTorch 1.6.0 and CUDA 10.1. You may also switch to other version by specifying the version number. ```shell -conda install pytorch=1.5.0 torchvision cudatoolkit=10.1 -c pytorch +conda install pytorch=1.6.0 torchvision cudatoolkit=10.1 -c pytorch ``` c. Install [MMCV](https://mmcv.readthedocs.io/en/latest/) following the [official instructions](https://mmcv.readthedocs.io/en/latest/#installation). -Either `mmcv` or `mmcv-full` is compatible with MMSegmentation, but for methods like CCNet and PSANet, CUDA ops in `mmcv-full` is required +Either `mmcv` or `mmcv-full` is compatible with MMSegmentation, but for methods like CCNet and PSANet, CUDA ops in `mmcv-full` is required. + +**Install mmcv for Linux:** The pre-build mmcv-full (with PyTorch 1.5 and CUDA 10.1) can be installed by running: (other available versions could be found [here](https://mmcv.readthedocs.io/en/latest/#install-with-pip)) @@ -33,6 +33,33 @@ The pre-build mmcv-full (with PyTorch 1.5 and CUDA 10.1) can be installed by run pip install mmcv-full==latest+torch1.5.0+cu101 -f https://openmmlab.oss-accelerate.aliyuncs.com/mmcv/dist/index.html ``` +**Install mmcv for Windows (Experimental):** + +For Windows, the installation of MMCV requires native C++ compilers, such as cl.exe. Please add the compiler to %PATH%. + +A typical path for cl.exe looks like the following if you have Windows SDK and Visual Studio installed on your computer: + +```shell +C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.26.28801\bin\Hostx86\x64 +``` + +Or you should download the cl compiler from web and then set up the path. + +Then, clone mmcv from github and install mmcv via pip: + +```shell +git clone https://github.com/open-mmlab/mmcv.git +cd mmcv +pip install -e . +``` + +Or simply: +```shell +pip install mmcv +``` + +Currently, mmcv-full is not supported on Windows. + d. Install MMSegmentation. ```shell @@ -47,24 +74,28 @@ pip install git+https://github.com/open-mmlab/mmsegmentation.git # install the m Instead, if you would like to install MMSegmentation in `dev` mode, run following ```shell -git clone https://github.com/open-mmlab/mmsegmentation +git clone https://github.com/open-mmlab/mmsegmentation.git cd mmsegmentation pip install -e . # or "python setup.py develop" ``` Note: -1. The `version+git_hash` will also be saved in trained models meta, e.g. 0.5.0+c415a2e. +1. When training or testing models on Windows, please ensure that all the '\\' in paths are replaced with '/'. Add .replace('\\', '/') to your python code wherever path strings occur. -2. When MMsegmentation is installed on `dev` mode, any local modifications made to the code will take effect without the need to reinstall it. +2. The `version+git_hash` will also be saved in trained models meta, e.g. 0.5.0+c415a2e. -3. If you would like to use `opencv-python-headless` instead of `opencv-python`, +3. When MMsegmentation is installed on `dev` mode, any local modifications made to the code will take effect without the need to reinstall it. + +4. If you would like to use `opencv-python-headless` instead of `opencv-python`, you can install it before installing MMCV. -4. Some dependencies are optional. Simply running `pip install -e .` will only install the minimum runtime requirements. +5. Some dependencies are optional. Simply running `pip install -e .` will only install the minimum runtime requirements. To use optional dependencies like `cityscapessripts` either install them manually with `pip install -r requirements/optional.txt` or specify desired extras when calling `pip` (e.g. `pip install -e .[optional]`). Valid keys for the extras field are: `all`, `tests`, `build`, and `optional`. -### A from-scratch setup script + +## A from-scratch setup script +### Linux Here is a full script for setting up mmsegmentation with conda and link the dataset path (supposing that your dataset path is $DATA_ROOT). @@ -72,12 +103,31 @@ Here is a full script for setting up mmsegmentation with conda and link the data conda create -n open-mmlab python=3.7 -y conda activate open-mmlab -conda install pytorch=1.5.0 torchvision cudatoolkit=10.1 -c pytorch +conda install pytorch=1.6.0 torchvision cudatoolkit=10.1 -c pytorch pip install mmcv-full==latest+torch1.5.0+cu101 -f https://openmmlab.oss-accelerate.aliyuncs.com/mmcv/dist/index.html -git clone https://github.com/open-mmlab/mmsegmentation +git clone https://github.com/open-mmlab/mmsegmentation.git cd mmsegmentation pip install -e . # or "python setup.py develop" mkdir data ln -s $DATA_ROOT data ``` + +### Windows(Experimental) +Here is a full script for setting up mmsegmentation with conda and link the dataset path (supposing that your dataset path is +%DATA_ROOT%. Notice: It must be an absolute path). + +```shell +conda create -n open-mmlab python=3.7 -y +conda activate open-mmlab + +conda install pytorch=1.6.0 torchvision cudatoolkit=10.1 -c pytorch +set PATH=full\path\to\your\cpp\compiler;%PATH% +pip install mmcv + +git clone https://github.com/open-mmlab/mmsegmentation.git +cd mmsegmentation +pip install -e . # or "python setup.py develop" + +mklink /D data %DATA_ROOT% +``` diff --git a/mmseg/__init__.py b/mmseg/__init__.py index abaee5889..0ab33a8ed 100644 --- a/mmseg/__init__.py +++ b/mmseg/__init__.py @@ -3,7 +3,7 @@ import mmcv from .version import __version__, version_info MMCV_MIN = '1.0.5' -MMCV_MAX = '1.1.0' +MMCV_MAX = '1.1.1' def digit_version(version_str): diff --git a/mmseg/utils/collect_env.py b/mmseg/utils/collect_env.py index c2b1cd4e9..3fcead459 100644 --- a/mmseg/utils/collect_env.py +++ b/mmseg/utils/collect_env.py @@ -40,10 +40,12 @@ def collect_env(): devices[torch.cuda.get_device_name(k)].append(str(k)) for name, devids in devices.items(): env_info['GPU ' + ','.join(devids)] = name - - gcc = subprocess.check_output('gcc --version | head -n1', shell=True) - gcc = gcc.decode('utf-8').strip() - env_info['GCC'] = gcc + try: + gcc = subprocess.check_output('gcc --version | head -n1', shell=True) + gcc = gcc.decode('utf-8').strip() + env_info['GCC'] = gcc + except subprocess.CalledProcessError: + env_info['GCC'] = 'n/a' env_info['PyTorch'] = torch.__version__ env_info['PyTorch compiling details'] = get_build_config()