README.md 15.2 KB
Newer Older
1
<div align="center">
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  <img src="https://raw.githubusercontent.com/open-mmlab/mmcv/master/docs/en/mmcv-logo.png" width="300"/>
  <div>&nbsp;</div>
  <div align="center">
    <b><font size="5">OpenMMLab website</font></b>
    <sup>
      <a href="https://openmmlab.com">
        <i><font size="4">HOT</font></i>
      </a>
    </sup>
    &nbsp;&nbsp;&nbsp;&nbsp;
    <b><font size="5">OpenMMLab platform</font></b>
    <sup>
      <a href="https://platform.openmmlab.com">
        <i><font size="4">TRY IT OUT</font></i>
      </a>
    </sup>
  </div>
  <div>&nbsp;</div>
20
21
</div>

22
23
24
25
26
27
[![docs](https://img.shields.io/badge/docs-latest-blue)](https://mmcv.readthedocs.io/en/latest/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/mmcv)](https://pypi.org/project/mmcv/)
[![PyPI](https://img.shields.io/pypi/v/mmcv)](https://pypi.org/project/mmcv)
[![badge](https://github.com/open-mmlab/mmcv/workflows/build/badge.svg)](https://github.com/open-mmlab/mmcv/actions)
[![codecov](https://codecov.io/gh/open-mmlab/mmcv/branch/master/graph/badge.svg)](https://codecov.io/gh/open-mmlab/mmcv)
[![license](https://img.shields.io/github/license/open-mmlab/mmcv.svg)](https://github.com/open-mmlab/mmcv/blob/master/LICENSE)
28

29
30
English | [简体中文](README_zh-CN.md)

31
32
## Introduction

33
MMCV is a foundational library for computer vision research and supports many
Kai Chen's avatar
Kai Chen committed
34
research projects as below:
35

36
- [MIM](https://github.com/open-mmlab/mim): MIM installs OpenMMLab packages.
Zaida Zhou's avatar
Zaida Zhou committed
37
38
39
- [MMClassification](https://github.com/open-mmlab/mmclassification): OpenMMLab image classification toolbox and benchmark.
- [MMDetection](https://github.com/open-mmlab/mmdetection): OpenMMLab detection toolbox and benchmark.
- [MMDetection3D](https://github.com/open-mmlab/mmdetection3d): OpenMMLab's next-generation platform for general 3D object detection.
40
- [MMRotate](https://github.com/open-mmlab/mmrotate): OpenMMLab rotated object detection toolbox and benchmark.
Zaida Zhou's avatar
Zaida Zhou committed
41
- [MMSegmentation](https://github.com/open-mmlab/mmsegmentation): OpenMMLab semantic segmentation toolbox and benchmark.
42
43
44
45
46
47
- [MMOCR](https://github.com/open-mmlab/mmocr): OpenMMLab text detection, recognition, and understanding toolbox.
- [MMPose](https://github.com/open-mmlab/mmpose): OpenMMLab pose estimation toolbox and benchmark.
- [MMHuman3D](https://github.com/open-mmlab/mmhuman3d): OpenMMLab 3D human parametric model toolbox and benchmark.
- [MMSelfSup](https://github.com/open-mmlab/mmselfsup): OpenMMLab self-supervised learning toolbox and benchmark.
- [MMRazor](https://github.com/open-mmlab/mmrazor): OpenMMLab model compression toolbox and benchmark.
- [MMFewShot](https://github.com/open-mmlab/mmfewshot): OpenMMLab fewshot learning toolbox and benchmark.
Zaida Zhou's avatar
Zaida Zhou committed
48
49
- [MMAction2](https://github.com/open-mmlab/mmaction2): OpenMMLab's next-generation action understanding toolbox and benchmark.
- [MMTracking](https://github.com/open-mmlab/mmtracking): OpenMMLab video perception toolbox and benchmark.
50
- [MMFlow](https://github.com/open-mmlab/mmflow): OpenMMLab optical flow toolbox and benchmark.
Zaida Zhou's avatar
Zaida Zhou committed
51
52
- [MMEditing](https://github.com/open-mmlab/mmediting): OpenMMLab image and video editing toolbox.
- [MMGeneration](https://github.com/open-mmlab/mmgeneration): OpenMMLab image and video generative models toolbox.
53
- [MMDeploy](https://github.com/open-mmlab/mmdeploy): OpenMMLab model deployment framework.
54
55
56
57
58
59
60
61
62
63
64

It provides the following functionalities.

- Universal IO APIs
- Image/Video processing
- Image and annotation visualization
- Useful utilities (progress bar, timer, ...)
- PyTorch runner with hooking mechanism
- Various CNN architectures
- High-quality implementation of common CUDA ops

65
66
67
68
69
70
It supports the following systems.

- Linux
- Windows
- macOS

71
72
73
74
75
76
See the [documentation](http://mmcv.readthedocs.io/en/latest) for more features and usage.

Note: MMCV requires Python 3.6+.

## Installation

77
There are two versions of MMCV:
78

Zaida Zhou's avatar
Zaida Zhou committed
79
80
- **mmcv**: comprehensive, with full features and various CUDA ops out of box. It takes longer time to build.
- **mmcv-lite**: lite, without CUDA ops but all other features, similar to mmcv\<1.0.0. It is useful when you do not need those CUDA ops.
81

82
**Note**: Do not install both versions in the same environment, otherwise you may encounter errors like `ModuleNotFound`. You need to uninstall one before installing the other. `Installing the full version is highly recommended if CUDA is available`.
83

Zaida Zhou's avatar
Zaida Zhou committed
84
a. Install the full version.
85

Zaida Zhou's avatar
Zaida Zhou committed
86
Before installing mmcv, make sure that PyTorch has been successfully installed following the [official guide](https://pytorch.org/).
Kai Chen's avatar
Kai Chen committed
87

Zaida Zhou's avatar
Zaida Zhou committed
88
We provide pre-built mmcv packages (recommended) with different PyTorch and CUDA versions to simplify the building for **Linux and Windows systems**. In addition, you can run [check_installation.py](.dev_scripts/check_installation.py) to check the installation of mmcv after running the installation commands.
89

90
i. Install the latest version.
91

Zaida Zhou's avatar
Zaida Zhou committed
92
The rule for installing the latest `mmcv` is as follows:
93

94
```shell
Zaida Zhou's avatar
Zaida Zhou committed
95
pip install 'mmcv>=2.0.0rc1' -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
96
97
```

98
Please replace `{cu_version}` and `{torch_version}` in the url to your desired one. For example,
Zaida Zhou's avatar
Zaida Zhou committed
99
to install the latest `mmcv` with `CUDA 11.1` and `PyTorch 1.9.0`, use the following command:
100

101
```shell
Zaida Zhou's avatar
Zaida Zhou committed
102
pip install 'mmcv>=2.0.0rc1' -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
103
104
```

Zaida Zhou's avatar
Zaida Zhou committed
105
**Note**: mmcv 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 compiled with PyTorch 1.x.0 and it usually works well. For example, if your PyTorch version is 1.8.1 and CUDA version is 11.1, you can use the following command to install mmcv.
Zaida Zhou's avatar
Zaida Zhou committed
106
107

```shell
Zaida Zhou's avatar
Zaida Zhou committed
108
pip install 'mmcv>=2.0.0rc1' -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
Zaida Zhou's avatar
Zaida Zhou committed
109
110
```

111
For more details, please refer the the following tables and delete `=={mmcv_version}`.
112

113
ii. Install a specified version.
114

Zaida Zhou's avatar
Zaida Zhou committed
115
The rule for installing a specified `mmcv` is as follows:
116

117
```shell
Zaida Zhou's avatar
Zaida Zhou committed
118
pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
119
120
```

Zaida Zhou's avatar
Zaida Zhou committed
121
First of all, please refer to the Releases and replace `{mmcv_version}` a specified one. e.g. `2.0.0rc1`.
122
Then replace `{cu_version}` and `{torch_version}` in the url to your desired versions. For example,
Zaida Zhou's avatar
Zaida Zhou committed
123
to install `mmcv==2.0.0rc1` with `CUDA 11.1` and `PyTorch 1.9.0`, use the following command:
124

125
```shell
Zaida Zhou's avatar
Zaida Zhou committed
126
pip install mmcv==2.0.0rc1 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
127
128
129
130
```

For more details, please refer the the following tables.

Y. Xiong's avatar
Y. Xiong committed
131
132
133
134
<table class="docutils">
  <tbody>
    <tr>
      <th width="80"> CUDA </th>
135
      <th valign="bottom" align="left" width="120">torch 1.11</th>
136
137
138
139
140
141
      <th valign="bottom" align="left" width="120">torch 1.10</th>
      <th valign="bottom" align="left" width="120">torch 1.9</th>
      <th valign="bottom" align="left" width="120">torch 1.8</th>
      <th valign="bottom" align="left" width="120">torch 1.7</th>
      <th valign="bottom" align="left" width="120">torch 1.6</th>
      <th valign="bottom" align="left" width="120">torch 1.5</th>
Y. Xiong's avatar
Y. Xiong committed
142
    </tr>
143
144
    <tr>
      <td align="left">11.5</td>
Zaida Zhou's avatar
Zaida Zhou committed
145
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu115/torch1.11.0/index.html</code></pre> </details></td>
146
147
148
149
150
151
152
      <td align="left"></td>
      <td align="left"></td>
      <td align="left"> </td>
      <td align="left"> </td>
      <td align="left"> </td>
      <td align="left"> </td>
    </tr>
153
154
    <tr>
      <td align="left">11.3</td>
Zaida Zhou's avatar
Zaida Zhou committed
155
156
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html</code></pre> </details></td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html</code></pre> </details></td>
157
158
159
160
161
162
      <td align="left"></td>
      <td align="left"></code></pre> </details> </td>
      <td align="left"> </td>
      <td align="left"> </td>
      <td align="left"> </td>
    </tr>
zhouzaida's avatar
zhouzaida committed
163
164
    <tr>
      <td align="left">11.1</td>
165
      <td align="left"> </td>
Zaida Zhou's avatar
Zaida Zhou committed
166
167
168
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.10.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html</code></pre> </details> </td>
zhouzaida's avatar
zhouzaida committed
169
170
171
172
      <td align="left"> </td>
      <td align="left"> </td>
      <td align="left"> </td>
    </tr>
Y. Xiong's avatar
Y. Xiong committed
173
174
    <tr>
      <td align="left">11.0</td>
zhouzaida's avatar
zhouzaida committed
175
      <td align="left"> </td>
176
      <td align="left"> </td>
177
      <td align="left"> </td>
178
      <td align="left"> </td>
Zaida Zhou's avatar
Zaida Zhou committed
179
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html</code></pre> </details> </td>
Y. Xiong's avatar
Y. Xiong committed
180
181
182
183
184
      <td align="left"> </td>
      <td align="left"> </td>
    </tr>
    <tr>
      <td align="left">10.2</td>
Zaida Zhou's avatar
Zaida Zhou committed
185
186
187
188
189
190
191
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.11.0/index.html</code></pre> </details></td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html</code></pre> </details></td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code>pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.5.0/index.html</code></pre> </details> </td>
Y. Xiong's avatar
Y. Xiong committed
192
193
194
    </tr>
    <tr>
      <td align="left">10.1</td>
195
      <td align="left"> </td>
196
      <td align="left"> </td>
197
      <td align="left"> </td>
Zaida Zhou's avatar
Zaida Zhou committed
198
199
200
201
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.5.0/index.html</code></pre> </details> </td>
Y. Xiong's avatar
Y. Xiong committed
202
203
204
    </tr>
    <tr>
      <td align="left">9.2</td>
zhouzaida's avatar
zhouzaida committed
205
      <td align="left"> </td>
206
      <td align="left"> </td>
207
      <td align="left"> </td>
208
      <td align="left"> </td>
Zaida Zhou's avatar
Zaida Zhou committed
209
210
211
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.7.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.6.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.5.0/index.html</code></pre> </details> </td>
Y. Xiong's avatar
Y. Xiong committed
212
213
214
    </tr>
    <tr>
      <td align="left">cpu</td>
Zaida Zhou's avatar
Zaida Zhou committed
215
216
217
218
219
220
221
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.11.0/index.html</code></pre> </details></td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.10.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.9.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.8.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.7.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.6.0/index.html</code></pre> </details> </td>
      <td align="left"><details><summary> install </summary><pre><code> pip install mmcv=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.5.0/index.html</code></pre> </details> </td>
Y. Xiong's avatar
Y. Xiong committed
222
223
224
225
    </tr>
  </tbody>
</table>

Zaida Zhou's avatar
Zaida Zhou committed
226
**Note**: mmcv does not provide pre-built packages for `cu102-torch1.11` and `cu92-torch*` on Windows.
227

228
229
230
Another way is to compile locally by running

```python
Zaida Zhou's avatar
Zaida Zhou committed
231
pip install 'mmcv>=2.0.0rc1'
232
233
```

234
235
Note that the local compiling may take up to 10 mins.

Zaida Zhou's avatar
Zaida Zhou committed
236
237
238
b. Install the lite version.

```python
Zaida Zhou's avatar
Zaida Zhou committed
239
pip install mmcv-lite
Zaida Zhou's avatar
Zaida Zhou committed
240
241
```

242
If you would like to build MMCV from source, please refer to the [guide](https://mmcv.readthedocs.io/en/latest/get_started/build.html).
243
244
245
246

## FAQ

If you face some installation issues, CUDA related issues or RuntimeErrors,
247
you may first refer to this [Frequently Asked Questions](https://mmcv.readthedocs.io/en/latest/faq.html).
248

Zaida Zhou's avatar
Zaida Zhou committed
249
250
251
252
253
254
255
256
257
258
259
260
261
## Citation

If you find this project useful in your research, please consider cite:

```latex
@misc{mmcv,
    title={{MMCV: OpenMMLab} Computer Vision Foundation},
    author={MMCV Contributors},
    howpublished = {\url{https://github.com/open-mmlab/mmcv}},
    year={2018}
}
```

262
263
## Contributing

Jintao Lin's avatar
Jintao Lin committed
264
We appreciate all contributions to improve MMCV. Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for the contributing guideline.
265
266
267
268

## License

MMCV is released under the Apache 2.0 license, while some specific operations in this library are with other licenses. Please refer to [LICENSES.md](LICENSES.md) for the careful check, if you are using our code for commercial matters.