README.md 5.9 KB
Newer Older
N
Nikita Manovich 已提交
1 2
# Computer Vision Annotation Tool (CVAT)

D
DanVev 已提交
3
[![Build Status](https://travis-ci.org/opencv/cvat.svg?branch=develop)](https://travis-ci.org/opencv/cvat)
C
Codacy Badger 已提交
4
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/840351da141e4eaeac6476fd19ec0a33)](https://app.codacy.com/app/nmanovic/cvat?utm_source=github.com&utm_medium=referral&utm_content=opencv/cvat&utm_campaign=Badge_Grade_Settings)
5 6
[![Gitter chat](https://badges.gitter.im/opencv-cvat/gitter.png)](https://gitter.im/opencv-cvat)

N
Nikita Manovich 已提交
7 8
CVAT is completely re-designed and re-implemented version of [Video Annotation Tool from Irvine, California](http://carlvondrick.com/vatic/) tool. It is free, online, interactive video and image annotation tool for computer vision. It is being used by our team to annotate million of objects with different properties. Many UI and UX decisions are based on feedbacks from professional data annotation team.

N
Nikita Manovich 已提交
9
![CVAT screenshot](cvat/apps/documentation/static/documentation/images/cvat.jpg)
N
Nikita Manovich 已提交
10 11 12 13 14

## Documentation

- [User's guide](cvat/apps/documentation/user_guide.md)
- [XML annotation format](cvat/apps/documentation/xml_format.md)
15
- [AWS Deployment Guide](cvat/apps/documentation/AWS-Deployment-Guide.md)
I
idriss 已提交
16
- [Questions](#questions)
N
Nikita Manovich 已提交
17 18 19

## Screencasts

N
Nikita Manovich 已提交
20 21 22 23
- [Annotation mode](https://youtu.be/6h7HxGL6Ct4)
- [Interpolation mode](https://youtu.be/U3MYDhESHo4)
- [Attribute mode](https://youtu.be/UPNfWl8Egd8)
- [Segmentation mode](https://youtu.be/6IJ0QN7PBKo)
24
- [Tutorial for polygons](https://www.youtube.com/watch?v=XTwfXDh4clI)
N
Nikita Manovich 已提交
25

N
Nikita Manovich 已提交
26 27 28 29 30 31
## LICENSE

Code released under the [MIT License](https://opensource.org/licenses/MIT).

## INSTALLATION

32
The instructions below should work for `Ubuntu 16.04`. It will probably work on other Operating Systems such as `Windows` and `macOS`, but may require minor modifications.
N
Nikita Manovich 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

### Install [Docker CE](https://www.docker.com/community-edition) or [Docker EE](https://www.docker.com/enterprise-edition) from official site

Please read official manual [here](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/).

### Install docker-compose (1.19.0 or newer)

```bash
sudo pip install docker-compose
```

### Build docker images

To build all necessary docker images run `docker-compose build` command. By default, in production mode the tool uses PostgreSQL as database, Redis for caching.

B
Boris Sekachev 已提交
48
### Run docker containers
N
Nikita Manovich 已提交
49

B
Boris Sekachev 已提交
50
To start default container run `docker-compose up -d` command. Go to [localhost:8080](http://localhost:8080/). You should see a login page.
N
Nikita Manovich 已提交
51

B
Boris Sekachev 已提交
52
### You can include any additional components. Just add corresponding docker-compose file to build or run command:
N
Nikita Manovich 已提交
53 54

```bash
B
Boris Sekachev 已提交
55
# Build image with CUDA and OpenVINO support
B
Boris Sekachev 已提交
56
docker-compose -f docker-compose.yml -f components/cuda/docker-compose.cuda.yml -f components/openvino/docker-compose.openvino.yml build
B
Boris Sekachev 已提交
57 58

# Run containers with CUDA and OpenVINO support
B
Boris Sekachev 已提交
59
docker-compose -f docker-compose.yml -f components/cuda/docker-compose.cuda.yml -f components/openvino/docker-compose.openvino.yml up -d
N
Nikita Manovich 已提交
60 61
```

B
Boris Sekachev 已提交
62 63 64 65 66 67
### Additional optional components

- [Support for Intel OpenVINO: auto annotation](components/openvino/README.md)
- [Analytics: management and monitoring of data annotation team](components/analytics/README.md)
- [TF Object Detection API: auto annotation](components/tf_annotation/README.md)
- [Support for NVIDIA GPUs](components/cuda/README.md)
B
Boris Sekachev 已提交
68

N
Nikita Manovich 已提交
69 70 71 72 73
### Create superuser account

You can [register a user](http://localhost:8080/auth/register) but by default it will not have rights even to view list of tasks. Thus you should create a superuser. The superuser can use admin panel to assign correct groups to the user. Please use the command below:

```bash
B
Boris Sekachev 已提交
74
docker exec -it cvat bash -ic '/usr/bin/python3 ~/manage.py createsuperuser'
N
Nikita Manovich 已提交
75 76 77 78 79 80
```

Type your login/password for the superuser [on the login page](http://localhost:8080/auth/login) and press **Login** button. Now you should be able to create a new annotation task. Please read documentation for more details.

### Stop all containers

81 82
The command below will stop and remove containers, networks, volumes, and images
created by `up`.
N
Nikita Manovich 已提交
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

```bash
docker-compose down
```

### Advanced settings

If you want to access you instance of CVAT outside of your localhost you should specify [ALLOWED_HOSTS](https://docs.djangoproject.com/en/2.0/ref/settings/#allowed-hosts) environment variable. The best way to do that is to create [docker-compose.override.yml](https://docs.docker.com/compose/extends/) and put all your extra settings here.

```yml
version: "2.3"

services:
  cvat:
    environment:
      ALLOWED_HOSTS: .example.com
    ports:
      - "80:8080"
```
### Annotation logs

N
Nikita Manovich 已提交
104
It is possible to proxy annotation logs from client to ELK. To do that run the following command below:
N
Nikita Manovich 已提交
105

N
Nikita Manovich 已提交
106
```bash
B
Boris Sekachev 已提交
107
docker-compose -f docker-compose.yml -f components/analytics/docker-compose.analytics.yml up -d --build
N
Nikita Manovich 已提交
108
```
109

N
Nikita Manovich 已提交
110

111 112 113 114 115 116 117 118 119 120 121 122
### Share path

You can use a share storage for data uploading during you are creating a task. To do that you can mount it to CVAT docker container. Example of docker-compose.override.yml for this purpose:

```yml
version: "2.3"

services:
  cvat:
    environment:
      CVAT_SHARE_URL: "Mounted from /mnt/share host directory"
    volumes:
B
Boris Sekachev 已提交
123
      - cvat_share:/home/django/share:ro
124

125 126 127 128 129 130 131
volumes:
  cvat_share:
    driver_opts:
      type: none
      device: /mnt/share
      o: bind
```
132
You can change the share device path to your actual share. For user convenience we have defined the enviroment variable $CVAT_SHARE_URL. This variable contains a text (url for example) which will be being shown in the client-share browser.
I
idriss 已提交
133 134 135 136 137 138 139 140

## Questions

CVAT usage related questions or unclear concepts can be posted in our [Gitter chat](https://gitter.im/opencv-cvat) for **quick replies** from contributors and other users.

However, if you have a feature request or a bug report that can reproduced, feel free to open an issue (with steps to reproduce the bug if it's a bug report).

If you are not sure or just want to browse other users common questions, [Gitter chat](https://gitter.im/opencv-cvat) is the way to go.