README.md 4.0 KB
Newer Older
K
Kentaro Wada 已提交
1 2
<img src="https://github.com/wkentaro/labelme/blob/master/labelme/icons/icon.png?raw=true" align="right" />

K
Kentaro Wada 已提交
3 4 5
labelme: Image Annotation Tool with Python
==========================================

K
Kentaro Wada 已提交
6
[![PyPI Version](https://img.shields.io/pypi/v/labelme.svg)](https://pypi.python.org/pypi/labelme)
K
Kentaro Wada 已提交
7
[![Travis Build Status](https://travis-ci.org/wkentaro/labelme.svg?branch=master)](https://travis-ci.org/wkentaro/labelme)
K
Kentaro Wada 已提交
8
[![Docker Build Status](https://img.shields.io/docker/build/wkentaro/labelme.svg)](https://hub.docker.com/r/wkentaro/labelme)
K
Kentaro Wada 已提交
9 10


K
Kentaro Wada 已提交
11
Labelme is a graphical image annotation tool inspired by <http://labelme.csail.mit.edu>.  
K
Kentaro Wada 已提交
12 13 14
It is written in Python and uses Qt for its graphical interface.


K
Kentaro Wada 已提交
15
Requirements
K
Kentaro Wada 已提交
16 17
------------

K
Kentaro Wada 已提交
18 19
- Ubuntu / macOS / Windows
- Python2 / Python3
K
Kentaro Wada 已提交
20
- [PyQt4 / PyQt5](http://www.riverbankcomputing.co.uk/software/pyqt/intro)
K
Kentaro Wada 已提交
21 22 23 24 25


Installation
------------

K
Kentaro Wada 已提交
26 27 28 29 30
There are options:

- Platform agonistic installation: Anaconda, Docker
- Platform specific installation: Ubuntu, macOS

K
Kentaro Wada 已提交
31 32 33 34 35
**Anaconda**

You need install [Anaconda](https://www.continuum.io/downloads), then run below:

```bash
K
Kentaro Wada 已提交
36
# python2
K
Kentaro Wada 已提交
37 38 39 40
conda create --name=labelme python=2.7
source activate labelme
conda install pyqt
pip install labelme
K
Kentaro Wada 已提交
41 42 43 44 45

# python3
conda create --name=labelme python=3.6
source activate labelme
# conda install pyqt
K
Kentaro Wada 已提交
46
pip install pyqt5  # pyqt5 can be installed via pip on python3
K
Kentaro Wada 已提交
47
pip install labelme
K
Kentaro Wada 已提交
48 49
```

K
Kentaro Wada 已提交
50 51
**Docker**

K
Kentaro Wada 已提交
52
You need install [docker](https://www.docker.com), then run below:
K
Kentaro Wada 已提交
53 54 55 56 57 58

```bash
wget https://raw.githubusercontent.com/wkentaro/labelme/master/scripts/labelme_on_docker
chmod u+x labelme_on_docker

# Maybe you need http://sourabhbajaj.com/blog/2017/02/07/gui-applications-docker-mac/ on macOS
K
Kentaro Wada 已提交
59
./labelme_on_docker static/apc2016_obj3.jpg -O static/apc2016_obj3.json
K
Kentaro Wada 已提交
60
```
K
Kentaro Wada 已提交
61 62

**Ubuntu**
K
Kentaro Wada 已提交
63 64

```bash
K
Kentaro Wada 已提交
65
# Ubuntu 14.04
K
Kentaro Wada 已提交
66
sudo apt-get install python-qt4 pyqt4-dev-tools
K
Kentaro Wada 已提交
67
sudo pip install labelme  # python2 works
K
Kentaro Wada 已提交
68 69
```

K
Kentaro Wada 已提交
70
**macOS**
K
Kentaro Wada 已提交
71 72

```bash
K
Kentaro Wada 已提交
73
# macOS Sierra
K
Kentaro Wada 已提交
74 75
brew install pyqt  # maybe pyqt5
pip install labelme  # both python2/3 should work
K
Kentaro Wada 已提交
76 77
```

K
Kentaro Wada 已提交
78 79 80 81

Usage
-----

K
Kentaro Wada 已提交
82
### Annotation
K
Kentaro Wada 已提交
83

K
Kentaro Wada 已提交
84 85
Run `labelme --help` for detail.

K
Kentaro Wada 已提交
86
```bash
K
Kentaro Wada 已提交
87
labelme  # Open GUI
K
Kentaro Wada 已提交
88
labelme tutorial/apc2016_obj3.jpg  # Specify file
K
Kentaro Wada 已提交
89
labelme tutorial/apc2016_obj3.jpg --nodata  # Not include image data but relative image path in JSON file
K
Kentaro Wada 已提交
90
labelme tutorial/apc2016_obj3.jpg -O tutorial/apc2016_obj3.json  # Close window after the save
K
Kentaro Wada 已提交
91 92
```

K
Kentaro Wada 已提交
93
<img src=".readme/apc2016_obj3_annotate_label.jpg" width="44%" /> <img src=".readme/apc2016_obj3_screenshot.jpg" width="50%" />
K
Kentaro Wada 已提交
94

K
Kentaro Wada 已提交
95 96 97
The annotations are saved as a [JSON](http://www.json.org/) file. The
file includes the image itself.

K
Kentaro Wada 已提交
98
### Visualization
K
Kentaro Wada 已提交
99

K
Kentaro Wada 已提交
100 101 102
To view the json file quickly, you can use utility script:

```bash
K
Kentaro Wada 已提交
103
labelme_draw_json tutorial/apc2016_obj3.json
K
Kentaro Wada 已提交
104 105
```

K
Kentaro Wada 已提交
106 107
<img src=".readme/apc2016_obj3_draw_json.jpg" width="70%" />

K
Kentaro Wada 已提交
108
### Convert to Dataset
K
Kentaro Wada 已提交
109 110 111 112 113

To convert the json to set of image and label, you can run following:


```bash
K
Kentaro Wada 已提交
114
labelme_json_to_dataset tutorial/apc2016_obj3.json -o tutorial/apc2016_obj3_json
K
Kentaro Wada 已提交
115 116
```

K
Kentaro Wada 已提交
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
It generates standard files from the JSON file.

- [img.png](tutorial/apc2016_obj3_json/img.png): Image file.
- [label.png](tutorial/apc2016_obj3_json/label.png): Int32 label file.
- [label_viz.png](tutorial/apc2016_obj3_json/label_viz.png): Visualization of `label.png`.
- [label_names.txt](tutorial/apc2016_obj3_json/label_names.txt): Label names for values in `label.png`.

Note that loading `label.png` is a bit difficult
(`scipy.misc.imread`, `skimage.io.imread` may not work correctly),
and please use `PIL.Image.open` to avoid unexpected behavior:

```python
# see tutorial/load_label_png.py also.
>>> import numpy as np
>>> import PIL.Image

>>> label_png = 'tutorial/apc2016_obj3_json/label.png'
>>> lbl = np.asarray(PIL.Image.open(label_png))
>>> print(lbl.dtype)
dtype('int32')
>>> np.unique(lbl)
array([0, 1, 2, 3], dtype=int32)
>>> lbl.shape
(907, 1210)
```
K
Kentaro Wada 已提交
142 143 144 145 146


Screencast
----------

K
Kentaro Wada 已提交
147
<img src=".readme/screencast.gif" width="70%"/>
K
Kentaro Wada 已提交
148 149 150 151 152


Acknowledgement
---------------

K
Kentaro Wada 已提交
153 154
This repo is the fork of [mpitid/pylabelme](https://github.com/mpitid/pylabelme),
whose development has already stopped.