-
Notifications
You must be signed in to change notification settings - Fork 599
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add doc structures and formulate requirements (#32)
- Loading branch information
Showing
23 changed files
with
376 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# Minimal makefile for Sphinx documentation | ||
# | ||
|
||
# You can set these variables from the command line, and also | ||
# from the environment for the first two. | ||
SPHINXOPTS ?= | ||
SPHINXBUILD ?= sphinx-build | ||
SOURCEDIR = . | ||
BUILDDIR = _build | ||
|
||
# Put it first so that "make" without argument is like "make help". | ||
help: | ||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | ||
|
||
.PHONY: help Makefile | ||
|
||
# Catch-all target: route all unknown targets to Sphinx using the new | ||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). | ||
%: Makefile | ||
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
# Configuration file for the Sphinx documentation builder. | ||
# | ||
# This file only contains a selection of the most common options. For a full | ||
# list see the documentation: | ||
# https://www.sphinx-doc.org/en/master/usage/configuration.html | ||
|
||
# -- Path setup -------------------------------------------------------------- | ||
|
||
# If extensions (or modules to document with autodoc) are in another directory, | ||
# add these directories to sys.path here. If the directory is relative to the | ||
# documentation root, use os.path.abspath to make it absolute, like shown here. | ||
# | ||
import os | ||
import sys | ||
|
||
sys.path.insert(0, os.path.abspath('..')) | ||
|
||
# -- Project information ----------------------------------------------------- | ||
|
||
project = 'MMTracking' | ||
copyright = '2018-2020, OpenMMLab' | ||
author = 'MMTracking Authors' | ||
version_file = '../mmtrack/version.py' | ||
|
||
|
||
def get_version(): | ||
with open(version_file, 'r') as f: | ||
exec(compile(f.read(), version_file, 'exec')) | ||
return locals()['__version__'] | ||
|
||
|
||
# The full version, including alpha/beta/rc tags | ||
release = get_version() | ||
|
||
# -- General configuration --------------------------------------------------- | ||
|
||
# Add any Sphinx extension module names here, as strings. They can be | ||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom | ||
# ones. | ||
extensions = [ | ||
'sphinx.ext.autodoc', | ||
'sphinx.ext.napoleon', | ||
'sphinx.ext.viewcode', | ||
'recommonmark', | ||
'sphinx_markdown_tables', | ||
] | ||
|
||
autodoc_mock_imports = [ | ||
'matplotlib', 'pycocotools', 'terminaltables', 'mmtrack.version', | ||
'mmcv.ops' | ||
] | ||
|
||
# Add any paths that contain templates here, relative to this directory. | ||
templates_path = ['_templates'] | ||
|
||
# The suffix(es) of source filenames. | ||
# You can specify multiple suffix as a list of string: | ||
# | ||
source_suffix = { | ||
'.rst': 'restructuredtext', | ||
'.md': 'markdown', | ||
} | ||
|
||
# The master toctree document. | ||
master_doc = 'index' | ||
|
||
# List of patterns, relative to source directory, that match files and | ||
# directories to ignore when looking for source files. | ||
# This pattern also affects html_static_path and html_extra_path. | ||
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] | ||
|
||
# -- Options for HTML output ------------------------------------------------- | ||
|
||
# The theme to use for HTML and HTML Help pages. See the documentation for | ||
# a list of builtin themes. | ||
# | ||
html_theme = 'sphinx_rtd_theme' | ||
|
||
# Add any paths that contain custom static files (such as style sheets) here, | ||
# relative to this directory. They are copied after the builtin static files, | ||
# so a file named "default.css" will overwrite the builtin "default.css". | ||
html_static_path = ['_static'] | ||
|
||
# def builder_inited_handler(app): | ||
# subprocess.run(['./stat.py']) | ||
|
||
# def setup(app): | ||
# app.connect('builder-inited', builder_inited_handler) |
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,187 @@ | ||
## Prerequisites | ||
|
||
- Linux or macOS (Windows is in experimental support) | ||
- 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://mmcv.readthedocs.io/en/latest/#installation) | ||
|
||
The compatible MMDetection and MMCV versions are as below. Please install the correct version of MMCV to avoid installation issues. | ||
|
||
| MMDetection version | MMCV version | | ||
|:-------------------:|:-------------------:| | ||
| master | mmcv-full>=1.1.5, <1.3| | ||
| 2.7.0 | mmcv-full>=1.1.5, <1.3| | ||
| 2.6.0 | mmcv-full>=1.1.5, <1.3| | ||
| 2.5.0 | mmcv-full>=1.1.5, <1.3| | ||
| 2.4.0 | mmcv-full>=1.1.1, <1.3| | ||
| 2.3.0 | mmcv-full==1.0.5| | ||
| 2.3.0rc0 | mmcv-full>=1.0.2 | | ||
| 2.2.1 | mmcv==0.6.2 | | ||
| 2.2.0 | mmcv==0.6.2 | | ||
| 2.1.0 | mmcv>=0.5.9, <=0.6.1| | ||
| 2.0.0 | mmcv>=0.5.1, <=0.5.8| | ||
|
||
Note: 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`. | ||
|
||
## Installation | ||
|
||
1. Create a conda virtual environment and activate it. | ||
|
||
```shell | ||
conda create -n open-mmlab python=3.7 -y | ||
conda activate open-mmlab | ||
``` | ||
|
||
2. 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.1 installed under `/usr/local/cuda` and would like to install | ||
PyTorch 1.5, you need to install the prebuilt PyTorch with CUDA 10.1. | ||
|
||
```shell | ||
conda install pytorch cudatoolkit=10.1 torchvision -c pytorch | ||
``` | ||
|
||
`E.g. 2` If you have CUDA 9.2 installed under `/usr/local/cuda` and would like to install | ||
PyTorch 1.3.1., you need to install the prebuilt PyTorch with CUDA 9.2. | ||
|
||
```shell | ||
conda install pytorch=1.3.1 cudatoolkit=9.2 torchvision=0.4.2 -c pytorch | ||
``` | ||
|
||
If you build PyTorch from source instead of installing the prebuilt pacakge, | ||
you can use more CUDA versions such as 9.0. | ||
|
||
3. Install mmcv-full, we recommend you to install the pre-build package as below. | ||
|
||
```shell | ||
pip install mmcv-full==latest+torch1.6.0+cu101 -f https://download.openmmlab.com/mmcv/dist/index.html | ||
``` | ||
|
||
See [here](https://github.com/open-mmlab/mmcv#install-with-pip) 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 will be installed after this step | ||
cd .. | ||
``` | ||
|
||
Or directly run | ||
|
||
```shell | ||
pip install mmcv-full | ||
``` | ||
|
||
4. Clone the MMDetection repository. | ||
|
||
```shell | ||
git clone https://github.com/open-mmlab/mmdetection.git | ||
cd mmdetection | ||
``` | ||
|
||
5. Install build requirements and then install MMDetection. | ||
|
||
```shell | ||
pip install -r requirements/build.txt | ||
pip install -v -e . # or "python setup.py develop" | ||
``` | ||
|
||
Note: | ||
|
||
a. Following the above instructions, MMDetection is installed on `dev` mode | ||
, any local modifications made to the code will take effect without the need to reinstall it. | ||
|
||
b. If you would like to use `opencv-python-headless` instead of `opencv | ||
-python`, | ||
you can install it before installing MMCV. | ||
|
||
c. Some dependencies are optional. Simply running `pip install -v -e .` will | ||
only install the minimum runtime requirements. To use optional dependencies like `albumentations` and `imagecorruptions` either install them manually 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 extras field are: `all`, `tests`, `build`, and `optional`. | ||
|
||
### 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/webcam_demo.py for example. | ||
However some functionality is gone in this mode: | ||
- Deformable Convolution | ||
- Deformable ROI pooling | ||
- CARAFE: Content-Aware ReAssembly of FEatures | ||
- nms_cuda | ||
- sigmoid_focal_loss_cuda | ||
So if you try to run inference with a model containing deformable convolution you will get an error. | ||
### Another option: Docker Image | ||
We provide a [Dockerfile](https://github.com/open-mmlab/mmdetection/blob/master/docker/Dockerfile) to build an image. Ensure that you are using [docker version](https://docs.docker.com/engine/install/) >=19.03. | ||
```shell | ||
# build an image with PyTorch 1.6, CUDA 10.1 | ||
docker build -t mmdetection docker/ | ||
``` | ||
Run it with | ||
```shell | ||
docker run --gpus all --shm-size=8g -it -v {DATA_DIR}:/mmdetection/data mmdetection | ||
``` | ||
### A from-scratch setup script | ||
Assuming that you already have CUDA 10.1 installed, here is a full script for setting up MMDetection with conda. | ||
```shell | ||
conda create -n open-mmlab python=3.7 -y | ||
conda activate open-mmlab | ||
conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch -y | ||
# install the latest mmcv | ||
pip install mmcv-full==latest+torch1.6.0+cu101 -f https://download.openmmlab.com/mmcv/dist/index.html | ||
# install mmdetection | ||
git clone https://github.com/open-mmlab/mmdetection.git | ||
cd mmdetection | ||
pip install -r requirements/build.txt | ||
pip install -v -e . | ||
``` | ||
### Developing with multiple MMDetection versions | ||
The train and test scripts already modify the `PYTHONPATH` to ensure the script use the MMDetection in the current directory. | ||
To use the default MMDetection 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 | ||
``` | ||
## Verification | ||
To verify whether MMDetection and the required environment are installed correctly, we can run sample python codes to initialize a detector and inference a demo image: | ||
```python | ||
from mmdet.apis import init_detector, inference_detector | ||
config_file = 'configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py' | ||
device = 'cuda:0' | ||
# init a detector | ||
model = init_detector(config_file, device=device) | ||
# inference the demo image | ||
inference_detector(model, 'demo/demo.jpg') | ||
``` | ||
The above code is supposed to run successfully upon you finish the installation. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
Welcome to MMTracking's documentation! | ||
======================================= | ||
|
||
.. toctree:: | ||
:maxdepth: 2 | ||
:caption: Get Started | ||
|
||
get_started.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
@ECHO OFF | ||
|
||
pushd %~dp0 | ||
|
||
REM Command file for Sphinx documentation | ||
|
||
if "%SPHINXBUILD%" == "" ( | ||
set SPHINXBUILD=sphinx-build | ||
) | ||
set SOURCEDIR=. | ||
set BUILDDIR=_build | ||
|
||
if "%1" == "" goto help | ||
|
||
%SPHINXBUILD% >NUL 2>NUL | ||
if errorlevel 9009 ( | ||
echo. | ||
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx | ||
echo.installed, then set the SPHINXBUILD environment variable to point | ||
echo.to the full path of the 'sphinx-build' executable. Alternatively you | ||
echo.may add the Sphinx directory to PATH. | ||
echo. | ||
echo.If you don't have Sphinx installed, grab it from | ||
echo.http://sphinx-doc.org/ | ||
exit /b 1 | ||
) | ||
|
||
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% | ||
goto end | ||
|
||
:help | ||
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% | ||
|
||
:end | ||
popd |
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
version: 2 | ||
|
||
python: | ||
version: 3.7 | ||
install: | ||
- requirements: requirements/docs.txt | ||
- requirements: requirements/readthedocs.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,3 @@ | ||
coverage | ||
mmcls | ||
mmcv>=1.0.0 | ||
mmdet | ||
motmetrics | ||
numpy | ||
torch>=1.3 | ||
torchvision | ||
-r requirements/build.txt | ||
-r requirements/runtime.txt | ||
-r requirements/tests.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# These must be installed before building mmdetection | ||
cython | ||
numpy |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
recommonmark | ||
sphinx | ||
sphinx_markdown_tables | ||
sphinx_rtd_theme |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
mmcv | ||
torch | ||
torchvision |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
matplotlib | ||
mmcls | ||
mmpycocotools | ||
motmetrics | ||
numpy | ||
six | ||
terminaltables |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
asynctest | ||
codecov | ||
flake8 | ||
interrogate | ||
isort==4.3.21 | ||
# Note: used for kwarray.group_items, this may be ported to mmcv in the future. | ||
kwarray | ||
pytest | ||
ubelt | ||
xdoctest>=0.10.0 | ||
yapf |