--- a +++ b/ViTPose/docs/en/install.md @@ -0,0 +1,202 @@ +# Installation + +<!-- TOC --> + +- [Requirements](#requirements) +- [Prepare Environment](#prepare-environment) +- [Install MMPose](#install-mmpose) +- [Install with CPU only](#install-with-cpu-only) +- [A from-scratch setup script](#a-from-scratch-setup-script) +- [Another option: Docker Image](#another-option-docker-image) +- [Developing with multiple MMPose versions](#developing-with-multiple-mmpose-versions) + +<!-- TOC --> + +## Requirements + +- Linux (Windows is not officially supported) +- Python 3.6+ +- PyTorch 1.3+ +- CUDA 9.2+ (If you build PyTorch from source, CUDA 9.0 is also compatible) +- GCC 5+ +- [mmcv](https://github.com/open-mmlab/mmcv) (Please install the latest version of mmcv-full) +- Numpy +- cv2 +- json_tricks +- [xtcocotools](https://github.com/jin-s13/xtcocoapi) + +Optional: + +- [mmdet](https://github.com/open-mmlab/mmdetection) (to run pose demos) +- [mmtrack](https://github.com/open-mmlab/mmtracking) (to run pose tracking demos) +- [pyrender](https://pyrender.readthedocs.io/en/latest/install/index.html) (to run 3d mesh demos) +- [smplx](https://github.com/vchoutas/smplx) (to run 3d mesh demos) + +## Prepare environment + +a. Create a conda virtual environment and activate it. + +```shell +conda create -n open-mmlab python=3.7 -y +conda activate open-mmlab +``` + +b. Install PyTorch and torchvision following the [official instructions](https://pytorch.org/), e.g., + +```shell +conda install pytorch torchvision -c pytorch +``` + +```{note} +Make sure that your compilation CUDA version and runtime CUDA version match. +``` + +You can check the supported CUDA version for precompiled packages on the [PyTorch website](https://pytorch.org/). + +`E.g.1` If you have CUDA 10.2 installed under `/usr/local/cuda` and would like to install PyTorch 1.8.0, +you need to install the prebuilt PyTorch with CUDA 10.2. + +```shell +conda install pytorch==1.8.0 torchvision==0.9.0 cudatoolkit=10.2 -c pytorch +``` + +`E.g.2` If you have CUDA 9.2 installed under `/usr/local/cuda` and would like to install PyTorch 1.7.0., +you need to install the prebuilt PyTorch with CUDA 9.2. + +```shell +conda install pytorch==1.7.0 torchvision==0.8.0 cudatoolkit=9.2 -c pytorch +``` + +If you build PyTorch from source instead of installing the pre-built package, you can use more CUDA versions such as 9.0. + +## Install MMPose + +a. Install mmcv, we recommend you to install the pre-built mmcv as below. + +```shell +# pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html +pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html +# We can ignore the micro version of PyTorch +pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9/index.html +``` + +mmcv-full is only compiled on PyTorch 1.x.0 because the compatibility usually holds between 1.x.0 and 1.x.1. If your PyTorch version is 1.x.1, you can install mmcv-full compiled with PyTorch 1.x.0 and it usually works well. + +See [here](https://github.com/open-mmlab/mmcv#installation) for different versions of MMCV compatible to different PyTorch and CUDA versions. + +Optionally you can choose to compile mmcv from source by the following command + +```shell +git clone https://github.com/open-mmlab/mmcv.git +cd mmcv +MMCV_WITH_OPS=1 pip install -e . # package mmcv-full, which contains cuda ops, will be installed after this step +# OR pip install -e . # package mmcv, which contains no cuda ops, will be installed after this step +cd .. +``` + +**Important:** You need to run `pip uninstall mmcv` first if you have mmcv installed. If mmcv and mmcv-full are both installed, there will be `ModuleNotFoundError`. + +b. Clone the mmpose repository + +```shell +git clone git@github.com:open-mmlab/mmpose.git # or git clone https://github.com/open-mmlab/mmpose +cd mmpose +``` + +c. Install build requirements and then install mmpose + +```shell +pip install -r requirements.txt +pip install -v -e . # or "python setup.py develop" +``` + +If you build MMPose on macOS, replace the last command with + +```shell +CC=clang CXX=clang++ CFLAGS='-stdlib=libc++' pip install -e . +``` + +d. Install optional modules + +- [mmdet](https://github.com/open-mmlab/mmdetection) (to run pose demos) +- [mmtrack](https://github.com/open-mmlab/mmtracking) (to run pose tracking demos) +- [pyrender](https://pyrender.readthedocs.io/en/latest/install/index.html) (to run 3d mesh demos) +- [smplx](https://github.com/vchoutas/smplx) (to run 3d mesh demos) + +```{note} +1. The git commit id will be written to the version number with step c, e.g. 0.6.0+2e7045c. The version will also be saved in trained models. + It is recommended that you run step d each time you pull some updates from github. If C++/CUDA codes are modified, then this step is compulsory. + +1. Following the above instructions, mmpose is installed on `dev` mode, any local modifications made to the code will take effect without the need to reinstall it (unless you submit some commits and want to update the version number). + +1. If you would like to use `opencv-python-headless` instead of `opencv-python`, + you can install it before installing MMCV. + +1. If you have `mmcv` installed, you need to firstly uninstall `mmcv`, and then install `mmcv-full`. + +1. Some dependencies are optional. Running `python setup.py develop` will only install the minimum runtime requirements. + To use optional dependencies like `smplx`, either install them with `pip install -r requirements/optional.txt` + or specify desired extras when calling `pip` (e.g. `pip install -v -e .[optional]`, + valid keys for the `[optional]` field are `all`, `tests`, `build`, and `optional`) like `pip install -v -e .[tests,build]`. +``` + +## Install with CPU only + +The code can be built for CPU only environment (where CUDA isn't available). + +In CPU mode you can run the demo/demo.py for example. + +## A from-scratch setup script + +Here is a full script for setting up mmpose with conda and link the dataset path (supposing that your COCO dataset path is $COCO_ROOT). + +```shell +conda create -n open-mmlab python=3.7 -y +conda activate open-mmlab + +# install latest pytorch prebuilt with the default prebuilt CUDA version (usually the latest) +conda install -c pytorch pytorch torchvision -y + +# install the latest mmcv-full +# Please replace ``{cu_version}`` and ``{torch_version}`` in the url to your desired one. +# See [here](https://github.com/open-mmlab/mmcv#installation) for different versions of MMCV compatible to different PyTorch and CUDA versions. +pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html + +# install mmpose +git clone https://github.com/open-mmlab/mmpose.git +cd mmpose +pip install -r requirements.txt +pip install -v -e . + +mkdir data +ln -s $COCO_ROOT data/coco +``` + +## Another option: Docker Image + +We provide a [Dockerfile](/docker/Dockerfile) to build an image. + +```shell +# build an image with PyTorch 1.6.0, CUDA 10.1, CUDNN 7. +docker build -f ./docker/Dockerfile --rm -t mmpose . +``` + +**Important:** Make sure you've installed the [nvidia-container-toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker). + +Run the following cmd: + +```shell +docker run --gpus all\ + --shm-size=8g \ + -it -v {DATA_DIR}:/mmpose/data mmpose +``` + +## Developing with multiple MMPose versions + +The train and test scripts already modify the `PYTHONPATH` to ensure the script use the MMPose in the current directory. + +To use the default MMPose installed in the environment rather than that you are working with, you can remove the following line in those scripts. + +```shell +PYTHONPATH="$(dirname $0)/..":$PYTHONPATH +```