README.md 15.5 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
[![docs](https://img.shields.io/badge/docs-2.x-blue)](https://mmcv.readthedocs.io/en/2.x/)
23
24
25
26
27
[![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

It provides the following functionalities.

- Universal IO APIs
- Image/Video processing
- Image and annotation visualization
60
- Image transformation
61
62
63
- Various CNN architectures
- High-quality implementation of common CUDA ops

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

- Linux
- Windows
- macOS

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

Note: MMCV requires Python 3.6+.

## Installation

76
There are two versions of MMCV:
77

Zaida Zhou's avatar
Zaida Zhou committed
78
79
- **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.
80

81
**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`.
82

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

85
Before installing mmcv, make sure that PyTorch has been successfully installed following the [official guide](https://pytorch.org/). For macOS M1 users, please make sure you are using `PyTorch Nightly`.
Kai Chen's avatar
Kai Chen committed
86

Zaida Zhou's avatar
Zaida Zhou committed
87
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.
88

89
i. Install the latest version.
90

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

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

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

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

Zaida Zhou's avatar
Zaida Zhou committed
104
**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
105
106

```shell
Zaida Zhou's avatar
Zaida Zhou committed
107
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
108
109
```

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

112
ii. Install a specified version.
113

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

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

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

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

For more details, please refer the the following tables.

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

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

237
238
239
Another way is to compile locally by running

```python
Zaida Zhou's avatar
Zaida Zhou committed
240
pip install 'mmcv>=2.0.0rc1'
241
242
```

243
244
Note that the local compiling may take up to 10 mins.

Zaida Zhou's avatar
Zaida Zhou committed
245
246
247
b. Install the lite version.

```python
Zaida Zhou's avatar
Zaida Zhou committed
248
pip install mmcv-lite
Zaida Zhou's avatar
Zaida Zhou committed
249
250
```

251
If you would like to build MMCV from source, please refer to the [guide](https://mmcv.readthedocs.io/en/2.x/get_started/build.html).
252
253
254
255

## FAQ

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

Zaida Zhou's avatar
Zaida Zhou committed
258
259
260
261
262
263
264
265
266
267
268
269
270
## 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}
}
```

271
272
## Contributing

Jintao Lin's avatar
Jintao Lin committed
273
We appreciate all contributions to improve MMCV. Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for the contributing guideline.
274
275
276
277

## 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.