README.md 4.2 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 89
labelme tutorial/apc2016_obj3.jpg  # Specify file
labelme tutorial/apc2016_obj3.jpg -O tutorial/apc2016_obj3.json  # Close window after the save
K
Kentaro Wada 已提交
90
labelme tutorial/apc2016_obj3.jpg --nodata  # Not include image data but relative image path in JSON file
K
Kentaro Wada 已提交
91
labelme tutorial/apc2016_obj3.jpg \
K
Kentaro Wada 已提交
92
  --labels highland_6539_self_stick_notes,mead_index_cards,kong_air_dog_squeakair_tennis_ball  # Specify label list
K
Kentaro Wada 已提交
93 94
```

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

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

K
Kentaro Wada 已提交
100
### Visualization
K
Kentaro Wada 已提交
101

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

```bash
K
Kentaro Wada 已提交
105
labelme_draw_json tutorial/apc2016_obj3.json
K
Kentaro Wada 已提交
106 107
```

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

K
Kentaro Wada 已提交
110
### Convert to Dataset
K
Kentaro Wada 已提交
111 112 113 114 115

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


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

K
Kentaro Wada 已提交
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
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 已提交
144 145 146 147 148


Screencast
----------

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


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

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